diff --git a/alib2cli/makefile.conf b/alib2cli/makefile.conf index a4c42745316dc6213bf5e02f567025e2531d0043..89e4689b2d85c2b353efe245c015daaec80d18a8 100644 --- a/alib2cli/makefile.conf +++ b/alib2cli/makefile.conf @@ -1,7 +1,7 @@ LIBRARY:=alib2cli TESTBIN:=alib2test -LINK_LIBRARIES=alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std +LINK_LIBRARIES=alib2raw alib2str alib2data alib2xml alib2common alib2abstraction alib2measure alib2std SYSTEM_LIBRARIES=xml2 stdc++fs SYSTEM_INCLUDE_PATHS=/usr/include/libxml2 TEST_LINK_LIBRARIES= diff --git a/alib2cli/src/registration/InputFileTypeRegistration.cpp b/alib2cli/src/registration/InputFileTypeRegistration.cpp index 30cd30c6972380bee9dcad0760987ad725dbc7a0..1635f9e9c163123360bf36359c80656a691ef3a4 100644 --- a/alib2cli/src/registration/InputFileTypeRegistration.cpp +++ b/alib2cli/src/registration/InputFileTypeRegistration.cpp @@ -2,6 +2,7 @@ #include <registry/XmlRegistry.h> #include <registry/StringReaderRegistry.hpp> +#include <registry/RawReaderRegistry.hpp> #include <abstraction/ImmediateValueAbstraction.hpp> #include <abstraction/XmlTokensParserAbstraction.hpp> @@ -77,8 +78,31 @@ namespace { return res; } + std::shared_ptr < abstraction::OperationAbstraction > dummy4 ( const std::string & typehint, const ext::vector < std::string > & ) { + ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > abstractions; + + ext::vector < std::string > templateParams; + ext::vector < std::string > paramTypes { ext::to_string < std::string > ( ) }; + abstraction::AlgorithmCategories::AlgorithmCategory category = abstraction::AlgorithmCategories::AlgorithmCategory::NONE; + + abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, category ) ); + + auto rawParserAbstractionFinder = [ = ] ( const std::string & ) { + return abstraction::RawReaderRegistry::getAbstraction ( typehint ); + }; + + abstractions.push_back ( std::make_shared < abstraction::WrapperAbstraction < abstraction::UnspecifiedType, std::string && > > ( rawParserAbstractionFinder ) ); + + std::shared_ptr < abstraction::PackingAbstraction < 1 > > res = std::make_shared < abstraction::PackingAbstraction < 1 > > ( std::move ( abstractions ), 1 ); + res->setInnerConnection ( 0, 1, 0, true ); + res->setOuterConnection ( 0, 0, 0 ); + + return res; + } + auto xmlInputFileHandler = registration::InputFileRegister ( "xml", dummy ); auto fileInputFileHandler = registration::InputFileRegister ( "file", dummy2 ); auto stringInputFileHandler = registration::InputFileRegister ( "string", dummy3 ); +auto rawInputFileHandler = registration::InputFileRegister ( "raw", dummy4 ); } diff --git a/alib2cli/src/registration/OutputFileTypeRegistration.cpp b/alib2cli/src/registration/OutputFileTypeRegistration.cpp index 05929d5eb2ad73269ac3ee3f9fe55c2bd6a1d993..92451358957b9f3670c8af41eed4f610faa1b1ca 100644 --- a/alib2cli/src/registration/OutputFileTypeRegistration.cpp +++ b/alib2cli/src/registration/OutputFileTypeRegistration.cpp @@ -4,6 +4,7 @@ #include <registry/XmlRegistry.h> #include <registry/StringWriterRegistry.hpp> +#include <registry/RawWriterRegistry.hpp> #include <abstraction/ImmediateValueAbstraction.hpp> #include <abstraction/XmlTokensComposerAbstraction.hpp> @@ -54,8 +55,28 @@ namespace { return res; } + std::shared_ptr < abstraction::OperationAbstraction > dummy4 ( const std::string & typehint ) { + ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > abstractions; + + abstractions.push_back ( abstraction::RawWriterRegistry::getAbstraction ( typehint ) ); + + ext::vector < std::string > templateParams; + ext::vector < std::string > paramTypes { ext::to_string < std::string > ( ), ext::to_string < std::string > ( ) }; + abstraction::AlgorithmCategories::AlgorithmCategory category = abstraction::AlgorithmCategories::AlgorithmCategory::NONE; + + abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, category ) ); + + std::shared_ptr < abstraction::PackingAbstraction < 2 > > res = std::make_shared < abstraction::PackingAbstraction < 2 > > ( std::move ( abstractions ), 1 ); + res->setInnerConnection ( 0, 1, 1, true ); + res->setOuterConnection ( 0, 1, 0 ); // filename + res->setOuterConnection ( 1, 0, 0 ); // data + + return res; + } + auto xmlOutputFileHandler = registration::OutputFileRegister ( "xml", dummy ); auto fileOutputFileHandler = registration::OutputFileRegister ( "file", dummy2 ); auto stringOutputFileHandler = registration::OutputFileRegister ( "string", dummy3 ); +auto rawOutputFileHandler = registration::OutputFileRegister ( "raw", dummy4 ); }