Skip to content
Snippets Groups Projects
Commit 543d77f4 authored by Jan Trávníček's avatar Jan Trávníček
Browse files

move stats to aux

parent 18934b18
No related branches found
No related tags found
No related merge requests found
Pipeline #
/*
* SetSizeStat.cpp
*
* Created on: 20. 9. 2014
* Author: Jan Travnicek
*/
#include "SizeStat.h"
#include <container/ObjectsSet.h>
#include <registration/AlgoRegistration.hpp>
namespace {
auto SizeStatObjectsSet = registration::AbstractRegister < stats::SizeStat, unsigned, const container::ObjectsSet < > & > ( stats::SizeStat::stat );
auto SizeStatSetUnsigned = registration::AbstractRegister < stats::SizeStat, unsigned, const std::set < unsigned > & > ( stats::SizeStat::stat );
}
/*
* SizeStat.h
*
* Created on: 20. 9. 2014
* Author: Jan Travnicek
*/
#ifndef _SIZE_STAT_H_
#define _SIZE_STAT_H_
namespace stats {
class SizeStat {
public:
template < class T >
static unsigned stat ( const T & object );
};
template < class T >
unsigned SizeStat::stat ( const T & object ) {
return object.size ( );
}
}
#endif /* _SIZE_STAT_H_ */
......@@ -43,6 +43,7 @@ public:
abstraction::ContainerRegistry::registerSet < int > ( );
 
abstraction::ValuePrinterRegistry::registerValuePrinter < int > ( );
abstraction::ValuePrinterRegistry::registerValuePrinter < unsigned > ( );
abstraction::ValuePrinterRegistry::registerValuePrinter < double > ( );
abstraction::ValuePrinterRegistry::registerValuePrinter < std::string > ( );
abstraction::ValuePrinterRegistry::registerValuePrinter < void > ( );
......
EXECUTABLE:=astat2
LINK_PATHS=../alib2cli/ ../alib2elgo/ ../alib2algo/ ../alib2str/ ../alib2data/ ../alib2xml/ ../alib2measure/ ../alib2common/ ../alib2std/
LINK_LIBRARIES=alib2cli alib2elgo alib2algo alib2str alib2data alib2xml alib2measure alib2common alib2std xml2
INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2elgo/src/ \$$(SOURCES_BASE_DIR)/../../alib2algo/src/ \$$(SOURCES_BASE_DIR)/../../alib2data/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
LINK_PATHS=../alib2cli/ ../alib2str/ ../alib2aux/ ../alib2data/ ../alib2xml/ ../alib2measure/ ../alib2common/ ../alib2std/
LINK_LIBRARIES=alib2cli alib2str alib2aux alib2data alib2xml alib2measure alib2common alib2std xml2
INCLUDE_PATHS=\$$(SOURCES_BASE_DIR)/../../alib2cli/src/ \$$(SOURCES_BASE_DIR)/../../alib2xml/src/ \$$(SOURCES_BASE_DIR)/../../alib2measure/src/ \$$(SOURCES_BASE_DIR)/../../alib2common/src/ \$$(SOURCES_BASE_DIR)/../../alib2std/src/ /usr/include/libxml2/
/*
* SizeStat.cpp
*
* Created on: 20. 9. 2014
* Author: Jan Travnicek
*/
#include "SizeStat.h"
#include <registration/AlgoRegistration.hpp>
void SizeStat::stat ( const container::Container & container ) {
dispatch ( container.getData ( ) );
}
void SizeStat::stat ( const container::ObjectsSet < > & set ) {
std::cout << set.size ( ) << std::endl;
}
auto SizeStatObjectsSet = registration::OverloadRegister < SizeStat, void, container::ObjectsSet < > > ( SizeStat::stat );
/*
* SizeStat.h
*
* Created on: 20. 9. 2014
* Author: Jan Travnicek
*/
#ifndef SIZE_STAT_H_
#define SIZE_STAT_H_
#include <core/multipleDispatch.hpp>
#include "container/Container.h"
#include "container/ObjectsSet.h"
class SizeStat : public alib::SingleDispatch < SizeStat, void, const container::ContainerBase & > {
public:
static void stat ( const container::Container & container );
static void stat ( const container::ObjectsSet < > & set );
};
#endif /* SIZE_STAT_H_ */
......@@ -8,19 +8,12 @@
#include <tclap/CmdLine.h>
#include <global/GlobalData.h>
#include <measure>
#include <vector>
#include <sax/FromXMLParserHelper.h>
 
#include <factory/XmlDataFactory.hpp>
#include <exception/CommonException.h>
#include <lexer/Lexer.h>
#include <parser/Parser.h>
 
#include "SizeStat.h"
template < class T >
void printStat ( const T & data, TCLAP::ValueArg < std::string > & presentation ) {
if ( presentation.getValue ( ) == "size" )
SizeStat::stat ( data );
}
#include <factory/XmlDataFactory.hpp>
 
int main ( int argc, char * argv[] ) {
try {
......@@ -32,7 +25,7 @@ int main ( int argc, char * argv[] ) {
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
std::vector < std::string > allowedPrintingOptions {
"size", "unique_size"
"size"
};
TCLAP::ValuesConstraint < std::string > allowedPrintingOptionsVals ( allowedPrintingOptions );
 
......@@ -41,8 +34,8 @@ int main ( int argc, char * argv[] ) {
 
// ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
TCLAP::ValueArg < std::string > file ( "i", "input", "Read from file", false, "-", "file" );
cmd.add ( file );
TCLAP::ValueArg < std::string > input ( "i", "input", "Read from file", false, "-", "file" );
cmd.add ( input );
 
TCLAP::SwitchArg measure ( "m", "measure", "Measure times", false );
cmd.add ( measure );
......@@ -58,24 +51,32 @@ int main ( int argc, char * argv[] ) {
if ( measure.isSet ( ) )
common::GlobalData::measure = true;
 
cli::Environment environment;
environment.setBinding ( "stdin", input.getValue ( ) );
environment.setBinding ( "stdout", "-" );
measurements::start ( "Overal", measurements::Type::OVERALL );
measurements::start ( "Input read", measurements::Type::AUXILIARY );
 
ext::deque < sax::Token > tokens = sax::FromXMLParserHelper::parseInput ( file );
cli::Parser parser ( cli::Lexer ( "execute <#stdin > $input" ) );
parser.parse ( )->run ( environment );
 
if ( alib::XmlDataFactory::first < container::Container > ( tokens ) ) {
container::Container data = alib::XmlDataFactory::fromTokens ( std::move ( tokens ) );
measurements::end ( );
measurements::start ( "Stats print", measurements::Type::MAIN );
measurements::end ( );
measurements::start ( "Algorithm", measurements::Type::MAIN );
 
printStat ( data, presentation );
} else {
throw exception::CommonException ( "Input not recognized." );
if ( presentation.getValue ( ) == "size" ) {
parser = cli::Parser ( cli::Lexer ( "execute stats::SizeStat $input > $output" ) );
parser.parse ( )->run ( environment );
}
 
measurements::end ( );
measurements::end ( );
measurements::start ( "Output write", measurements::Type::AUXILIARY );
parser = cli::Parser ( cli::Lexer ( "execute $output" ) );
parser.parse ( )->run ( environment );
measurements::end();
measurements::end();
 
if ( measure.getValue ( ) ) common::Streams::measure << measurements::results ( ) << std::endl;
 
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment