diff --git a/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp b/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp index 7bed05b84517bbec23f19d6b4cb199c103f5d614..f1208513aa5848e7d1d0f7cd78971a49e81d0e6c 100644 --- a/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp +++ b/alib2abstraction/src/abstraction/AnyaryOperationAbstraction.hpp @@ -81,6 +81,10 @@ public: return ext::type_index ( typeid ( ParamType ) ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getParamTypeQualifiers ( unsigned ) const override { + return abstraction::ParamQualifiers::paramQualifiers < ParamType > ( ); + } + }; } /* namespace abstraction */ diff --git a/alib2abstraction/src/abstraction/NaryOperationAbstraction.hpp b/alib2abstraction/src/abstraction/NaryOperationAbstraction.hpp index 5df783dbae70b199b117a44f92acdcc1ea5ced9a..38262a329d1c34de1b46d504b31158b46f5793e7 100644 --- a/alib2abstraction/src/abstraction/NaryOperationAbstraction.hpp +++ b/alib2abstraction/src/abstraction/NaryOperationAbstraction.hpp @@ -88,6 +88,10 @@ public: return abstraction::ParamType < ParamTypes ... >::paramType ( index ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getParamTypeQualifiers ( unsigned index ) const override { + return abstraction::ParamType < ParamTypes ... >::paramTypeQualifiers ( index ); + } + }; } /* namespace abstraction */ diff --git a/alib2abstraction/src/abstraction/OperationAbstraction.hpp b/alib2abstraction/src/abstraction/OperationAbstraction.hpp index 491a4ae2639cc076a96293d0d8bc791fa8dcc1e8..9ab0e32e4866ff87eff4adde5e783aa5bec05dd6 100644 --- a/alib2abstraction/src/abstraction/OperationAbstraction.hpp +++ b/alib2abstraction/src/abstraction/OperationAbstraction.hpp @@ -11,6 +11,9 @@ #include <alib/memory> #include <alib/string> #include <alib/typeindex> +#include <alib/set> + +#include <common/ParamQualifiers.hpp> namespace abstraction { @@ -38,10 +41,14 @@ public: return ext::to_string ( getParamTypeIndex ( index ) ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getParamTypeQualifiers ( unsigned index ) const = 0; + std::string getReturnType ( ) const { return ext::to_string ( getReturnTypeIndex ( ) ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const = 0; + virtual std::shared_ptr < abstraction::OperationAbstraction > getProxyAbstraction ( ) { return shared_from_this(); } diff --git a/alib2abstraction/src/abstraction/PackingAbstraction.hpp b/alib2abstraction/src/abstraction/PackingAbstraction.hpp index 37abbd7a2bf6bbe478cca459e6acb67f37facbad..0a481c28d30e309f8f070fcda12c49609235b0bd 100644 --- a/alib2abstraction/src/abstraction/PackingAbstraction.hpp +++ b/alib2abstraction/src/abstraction/PackingAbstraction.hpp @@ -105,10 +105,18 @@ public: return m_abstractions [ m_connections.at ( index ) [ 0 ].targetId ]->getParamTypeIndex ( m_connections.at ( index ) [ 0 ].paramPosition ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getParamTypeQualifiers ( unsigned index ) const override { + return m_abstractions [ m_connections.at ( index ) [ 0 ].targetId ]->getParamTypeQualifiers ( m_connections.at ( index ) [ 0 ].paramPosition ); + } + virtual ext::type_index getReturnTypeIndex ( ) const override { return m_abstractions [ m_resultId ]->getReturnTypeIndex ( ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return m_abstractions [ m_resultId ]->getReturnTypeQualifiers ( ); + } + virtual std::shared_ptr < abstraction::OperationAbstraction > getProxyAbstraction ( ) override { return m_abstractions [ m_resultId ]->getProxyAbstraction ( ); } diff --git a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp index 2eac4cb4555ddf6e83b5c87476df61fc7050e049..af752aab1fe47375e7954cfceb1d1873c7304b5b 100644 --- a/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp +++ b/alib2abstraction/src/abstraction/ValueOperationAbstraction.hpp @@ -15,6 +15,7 @@ #include <abstraction/OperationAbstraction.hpp> #include <abstraction/ValueProvider.hpp> +#include <common/ParamQualifiers.hpp> #include <common/AbstractionHelpers.hpp> namespace abstraction { @@ -58,6 +59,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < ReturnType > ( ); + } + virtual bool cached ( ) const override { return ( bool ) m_data; } @@ -103,6 +108,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < const ReturnType > ( ); + } + virtual bool cached ( ) const override { return ( bool ) m_data; } @@ -148,6 +157,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < ReturnType & > ( ); + } + virtual bool cached ( ) const override { return ( bool ) m_data; } @@ -193,6 +206,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < const ReturnType & > ( ); + } + virtual bool cached ( ) const override { return ( bool ) m_data; } @@ -240,6 +257,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < ReturnType && > ( ); + } + virtual bool cached ( ) const override { return ( bool ) m_data; } @@ -287,6 +308,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < const ReturnType && > ( ); + } + virtual bool cached ( ) const override { return ( bool ) m_data; } @@ -308,6 +333,10 @@ public: return ext::type_index ( typeid ( void ) ); } + ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < void > ( ); + } + virtual bool cached ( ) const override { return false; } diff --git a/alib2abstraction/src/abstraction/WrapperAbstraction.hpp b/alib2abstraction/src/abstraction/WrapperAbstraction.hpp index 0b2fc58e7c34cbe78b2f8137f08c77a3087102b8..f48c4a38adc974bd37db36d3c55cbcb859286d05 100644 --- a/alib2abstraction/src/abstraction/WrapperAbstraction.hpp +++ b/alib2abstraction/src/abstraction/WrapperAbstraction.hpp @@ -96,6 +96,10 @@ public: return ParamType < ParamTypes ... >::paramType ( index ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getParamTypeQualifiers ( unsigned index ) const override { + return ParamType < ParamTypes ... >::paramTypeQualifiers ( index ); + } + virtual std::shared_ptr < abstraction::OperationAbstraction > getProxyAbstraction ( ) override { if ( this->cached ( ) ) return this->m_abstraction->getProxyAbstraction ( ); @@ -133,6 +137,10 @@ public: return ext::type_index ( typeid ( ReturnType ) ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + return abstraction::ParamQualifiers::paramQualifiers < ReturnType > ( ); + } + }; template < class ... ParamTypes > @@ -156,6 +164,13 @@ public: throw std::domain_error ( "Return type unknown before evaluation." ); } + virtual ext::set < abstraction::ParamQualifiers::ParamQualifier > getReturnTypeQualifiers ( ) const override { + if ( this->cached ( ) ) + return this->m_abstraction->getProxyAbstraction ( )->getReturnTypeQualifiers ( ); + else + throw std::domain_error ( "Return type qualifiers unknown before evaluation." ); + } + }; } /* namespace abstraction */ diff --git a/alib2abstraction/src/common/AbstractionHelpers.hpp b/alib2abstraction/src/common/AbstractionHelpers.hpp index 25ce77edbf0954111b4a52d0a1aedffe6d9253ed..15a766012371bcf052d78c62274da1dae29ae120 100644 --- a/alib2abstraction/src/common/AbstractionHelpers.hpp +++ b/alib2abstraction/src/common/AbstractionHelpers.hpp @@ -62,6 +62,10 @@ struct ParamType < > { static ext::type_index paramType ( unsigned ) { throw std::logic_error ( "Out of types to check" ); } + + static ext::set < abstraction::ParamQualifiers::ParamQualifier > paramTypeQualifiers ( unsigned ) { + throw std::logic_error ( "Out of types to check" ); + } }; template < class Param, class ... Params > @@ -70,7 +74,14 @@ struct ParamType < Param, Params ... > { if ( index == 0 ) return ext::type_index ( typeid ( Param ) ); else - return ParamType < Params ... >::paramType ( index - 1); + return ParamType < Params ... >::paramType ( index - 1 ); + } + + static ext::set < abstraction::ParamQualifiers::ParamQualifier > paramTypeQualifiers ( unsigned index ) { + if ( index == 0 ) + return abstraction::ParamQualifiers::paramQualifiers < Param > ( ); + else + return ParamType < Params ... >::paramTypeQualifiers ( index - 1 ); } }; diff --git a/alib2abstraction/src/common/AlgorithmHelper.cpp b/alib2abstraction/src/common/AlgorithmHelper.cpp index 053452984fd570938f347a34bfe8d60f57668750..c0d5bc45a9c743f2e6ea3a43036e1478e7904f3b 100644 --- a/alib2abstraction/src/common/AlgorithmHelper.cpp +++ b/alib2abstraction/src/common/AlgorithmHelper.cpp @@ -14,10 +14,13 @@ namespace abstraction { std::shared_ptr < abstraction::OperationAbstraction > AlgorithmHelper::eval ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > & params, std::vector < bool > & moves, AlgorithmCategories::AlgorithmCategory category ) { ext::vector < std::string > paramTypes; - for ( const std::shared_ptr < abstraction::OperationAbstraction > & param : params ) + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers; + for ( const std::shared_ptr < abstraction::OperationAbstraction > & param : params ) { paramTypes.push_back ( param->getReturnType ( ) ); + paramTypeQualifiers.push_back ( param->getReturnTypeQualifiers ( ) ); + } - std::shared_ptr < abstraction::OperationAbstraction > algo = abstraction::Registry::getAlgorithmAbstraction ( name, templateParams, paramTypes, category ); + std::shared_ptr < abstraction::OperationAbstraction > algo = abstraction::Registry::getAlgorithmAbstraction ( name, templateParams, paramTypes, paramTypeQualifiers, category ); unsigned i = 0; ext::vector < std::shared_ptr < abstraction::OperationAbstraction > > casted_params; diff --git a/alib2abstraction/src/registry/AlgorithmRegistry.cpp b/alib2abstraction/src/registry/AlgorithmRegistry.cpp index 983d80facf9e542d925c233a76273120da0f99c9..6b2c3b6a9710bd483bd40f60ea7bcc2b3874d4d7 100644 --- a/alib2abstraction/src/registry/AlgorithmRegistry.cpp +++ b/alib2abstraction/src/registry/AlgorithmRegistry.cpp @@ -86,7 +86,7 @@ ext::map < ext::pair < std::string, ext::vector < std::string > >, ext::list < s return group; } -std::shared_ptr < abstraction::OperationAbstraction > AlgorithmRegistry::getAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, AlgorithmCategories::AlgorithmCategory ) { +std::shared_ptr < abstraction::OperationAbstraction > AlgorithmRegistry::getAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, const ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > &, AlgorithmCategories::AlgorithmCategory ) { auto group = findAbstractionGroup ( name, templateParams ); auto incompatibleLambda = [ ] ( MatchType compatibility ) { diff --git a/alib2abstraction/src/registry/AlgorithmRegistry.hpp b/alib2abstraction/src/registry/AlgorithmRegistry.hpp index bb704e65e7e74beb4138b6763ed5f6b315542da9..627833a726c44f867540d9f733c3227a7316fcd2 100644 --- a/alib2abstraction/src/registry/AlgorithmRegistry.hpp +++ b/alib2abstraction/src/registry/AlgorithmRegistry.hpp @@ -302,7 +302,7 @@ public: registerInternal ( std::move ( algorithm ), std::move ( templateParams ), std::make_shared < WrapperImpl < ReturnType, ParamTypes ... > > ( category, std::move ( params ), std::move ( parameterNames ), std::move ( result ), callback ) ); } - static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, AlgorithmCategories::AlgorithmCategory category ); + static std::shared_ptr < abstraction::OperationAbstraction > getAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, const ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > & paramQualifiers, AlgorithmCategories::AlgorithmCategory category ); static ext::set < ext::pair < std::string, ext::vector < std::string > > > listGroup ( const std::string & group ); diff --git a/alib2abstraction/src/registry/Registry.cpp b/alib2abstraction/src/registry/Registry.cpp index 7bc204e2f557c5170a82d309b5dd4cf142bbbe3a..7dcd2032c8a3406792c2aed77453f71b52de0314 100644 --- a/alib2abstraction/src/registry/Registry.cpp +++ b/alib2abstraction/src/registry/Registry.cpp @@ -44,8 +44,8 @@ std::shared_ptr < abstraction::OperationAbstraction > Registry::getContainerAbst return ContainerRegistry::getAbstraction ( container, type ); } -std::shared_ptr < abstraction::OperationAbstraction > Registry::getAlgorithmAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, AlgorithmCategories::AlgorithmCategory category ) { - return AlgorithmRegistry::getAbstraction ( name, templateParams, paramTypes, category ); +std::shared_ptr < abstraction::OperationAbstraction > Registry::getAlgorithmAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, const ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > & paramQualifiers, AlgorithmCategories::AlgorithmCategory category ) { + return AlgorithmRegistry::getAbstraction ( name, templateParams, paramTypes, paramQualifiers, category ); } std::shared_ptr < abstraction::OperationAbstraction > Registry::getCastAbstraction ( const std::string & target, const std::string & param ) { diff --git a/alib2abstraction/src/registry/Registry.h b/alib2abstraction/src/registry/Registry.h index b759517436b37948d869f0c5bd21c004c54f985e..12f08c528049cc3b406bd3d2eb67683341cb128c 100644 --- a/alib2abstraction/src/registry/Registry.h +++ b/alib2abstraction/src/registry/Registry.h @@ -29,7 +29,7 @@ public: static ext::set < ext::tuple < AlgorithmCategories::AlgorithmCategory, ext::pair < std::string, ext::set < abstraction::ParamQualifiers::ParamQualifier > >, ext::vector < ext::tuple < std::string, ext::set < abstraction::ParamQualifiers::ParamQualifier > > >, ext::vector < std::string >, std::string > > listOverloads ( const std::string & algorithm, const ext::vector < std::string > & templateParams ); static std::shared_ptr < abstraction::OperationAbstraction > getContainerAbstraction ( const std::string & container, const std::string & type ); - static std::shared_ptr < abstraction::OperationAbstraction > getAlgorithmAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, AlgorithmCategories::AlgorithmCategory ); + static std::shared_ptr < abstraction::OperationAbstraction > getAlgorithmAbstraction ( const std::string & name, const ext::vector < std::string > & templateParams, const ext::vector < std::string > & paramTypes, const ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > & paramQualifiers, AlgorithmCategories::AlgorithmCategory ); static std::shared_ptr < abstraction::OperationAbstraction > getCastAbstraction ( const std::string & target, const std::string & param ); static bool isCastNoOp ( const std::string & target, const std::string & param ); static std::shared_ptr < abstraction::OperationAbstraction > getImmediateAbstraction ( const std::string & result, std::string value ); diff --git a/alib2cli/src/registration/InputFileTypeRegistration.cpp b/alib2cli/src/registration/InputFileTypeRegistration.cpp index 26af7813f7716451c1203677278bced0cc219e3a..01fe22bec60620fab0f6cdbbf095bf00733e3b59 100644 --- a/alib2cli/src/registration/InputFileTypeRegistration.cpp +++ b/alib2cli/src/registration/InputFileTypeRegistration.cpp @@ -51,8 +51,9 @@ namespace { ext::vector < std::string > templateParams; ext::vector < std::string > paramTypes { ext::to_string < std::string > ( ) }; abstraction::AlgorithmCategories::AlgorithmCategory category = abstraction::AlgorithmCategories::AlgorithmCategory::NONE; + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers { abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ) }; - return abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, category ); + return abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, paramTypeQualifiers, category ); } auto xmlInputFileHandler = registration::InputFileRegister ( "xml", dummy ); diff --git a/alib2cli/src/registration/OutputFileTypeRegistration.cpp b/alib2cli/src/registration/OutputFileTypeRegistration.cpp index 50277ab395f48056033fba6485871a93ccbf6472..56eb9d66667afca364542312101af51abb6b1470 100644 --- a/alib2cli/src/registration/OutputFileTypeRegistration.cpp +++ b/alib2cli/src/registration/OutputFileTypeRegistration.cpp @@ -31,8 +31,9 @@ namespace { 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; + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers { abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ), abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ) }; - return abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, category ); + return abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, paramTypeQualifiers, category ); } auto xmlOutputFileHandler = registration::OutputFileRegister ( "xml", dummy ); diff --git a/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp b/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp index cefbbc483be3ed0f175e66f9edc6f3161468a9d8..cbd4faf4c9c6efc0c723312712b7778a189e0d80 100644 --- a/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp +++ b/alib2raw_cli_integration/src/InputFileTypeRegistration.cpp @@ -15,8 +15,9 @@ namespace { ext::vector < std::string > templateParams; ext::vector < std::string > paramTypes { ext::to_string < std::string > ( ) }; abstraction::AlgorithmCategories::AlgorithmCategory category = abstraction::AlgorithmCategories::AlgorithmCategory::NONE; + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers { abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ) }; - abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, category ) ); + abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, paramTypeQualifiers, category ) ); auto rawParserAbstractionFinder = [ = ] ( const std::string & ) { return abstraction::RawReaderRegistry::getAbstraction ( typehint ); diff --git a/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp b/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp index 096fc0b6dcf7bd630eca9de4ce0ab34ea4f23178..668c59300a95a8d9133f9d009c20fcff309a004b 100644 --- a/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp +++ b/alib2raw_cli_integration/src/OutputFileTypeRegistration.cpp @@ -18,8 +18,9 @@ namespace { 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; + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers { abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ), abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ) }; - abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, category ) ); + abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, paramTypeQualifiers, category ) ); std::shared_ptr < abstraction::PackingAbstraction < 2 > > res = std::make_shared < abstraction::PackingAbstraction < 2 > > ( std::move ( abstractions ), 1 ); res->setInnerConnection ( 0, 1, 1, true ); diff --git a/alib2str_cli_integration/src/InputFileTypeRegistration.cpp b/alib2str_cli_integration/src/InputFileTypeRegistration.cpp index 77acaad93afe1a754d6da684fef1e614c2c03c3c..b6eed2f0239bd2a64874243e4bfe8f4867afd09f 100644 --- a/alib2str_cli_integration/src/InputFileTypeRegistration.cpp +++ b/alib2str_cli_integration/src/InputFileTypeRegistration.cpp @@ -15,8 +15,9 @@ namespace { ext::vector < std::string > templateParams; ext::vector < std::string > paramTypes { ext::to_string < std::string > ( ) }; abstraction::AlgorithmCategories::AlgorithmCategory category = abstraction::AlgorithmCategories::AlgorithmCategory::NONE; + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers { abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ) }; - abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, category ) ); + abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::ReadFile", templateParams, paramTypes, paramTypeQualifiers, category ) ); auto stringParserAbstractionFinder = [ = ] ( const std::string & data ) { return abstraction::StringReaderRegistry::getAbstraction ( typehint, data ); diff --git a/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp b/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp index a7e427e7a00043af1e4fc23fd178c41e01d164e7..1b32d896488582454a389d0d7340dcecb0bd7876 100644 --- a/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp +++ b/alib2str_cli_integration/src/OutputFileTypeRegistration.cpp @@ -18,8 +18,9 @@ namespace { 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; + ext::vector < ext::set < abstraction::ParamQualifiers::ParamQualifier > > paramTypeQualifiers { abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ), abstraction::ParamQualifiers::paramQualifiers < const std::string & > ( ) }; - abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, category ) ); + abstractions.push_back ( abstraction::Registry::getAlgorithmAbstraction ( "cli::builtin::WriteFile", templateParams, paramTypes, paramTypeQualifiers, category ) ); std::shared_ptr < abstraction::PackingAbstraction < 2 > > res = std::make_shared < abstraction::PackingAbstraction < 2 > > ( std::move ( abstractions ), 1 ); res->setInnerConnection ( 0, 1, 1, true );