Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Concepts
RawRegistration.hpp
Go to the documentation of this file.
1
6#pragma once
7
10
12
13namespace raw {
14
15template < class Type >
16class Parse {
17public:
18 static std::shared_ptr < abstraction::OperationAbstraction > abstractionFromString ( const std::string & ) {
19 return abstraction::RawReaderRegistry::getAbstraction ( ext::to_string < Type > ( ) );
20 }
21
22};
23
24class Compose {
25public:
26 template < class Type >
27 static std::shared_ptr < abstraction::OperationAbstraction > abstractionFromType ( const Type & ) {
28 return abstraction::RawWriterRegistry::getAbstraction ( ext::to_string < Type > ( ) );
29 }
30
31};
32
33} /* namespace raw */
34
35namespace registration {
36
37template < class Type >
39public:
41 abstraction::RawReaderRegistry::registerRawReader < Type > ( );
42 abstraction::AlgorithmRegistry::registerWrapper < raw::Parse < Type >, Type, const std::string & > ( raw::Parse < Type >::abstractionFromString, std::array < std::string, 1 > { { "arg0" } } );
43 abstraction::AlgorithmRegistry::setDocumentationOfWrapper < raw::Parse < Type >, const std::string & > (
44"Raw parsing of " + ext::to_string < Type > ( ) + ".\n\
45\n\
46@param arg0 the parsed string\n\
47@return value parsed from @p arg0" );
48 }
49
51 abstraction::RawReaderRegistry::unregisterRawReader < Type > ( );
52 abstraction::AlgorithmRegistry::unregisterWrapper < raw::Parse < Type >, const std::string & > ( );
53 }
54};
55
56template < class Type >
58public:
60 abstraction::RawWriterRegistry::registerRawWriter < Type > ( );
61 abstraction::AlgorithmRegistry::registerWrapper < raw::Compose, std::string, const Type & > ( raw::Compose::abstractionFromType, std::array < std::string, 1 > { { "arg0" } } );
62 abstraction::AlgorithmRegistry::setDocumentationOfWrapper < raw::Compose, const Type & > (
63"Raw composing algorithm.\n\
64\n\
65@param arg0 the composed value\n\
66@return the @p arg0 in raw representation" );
67 }
68
70 abstraction::RawWriterRegistry::unregisterRawWriter < Type > ( );
71 abstraction::AlgorithmRegistry::unregisterWrapper < raw::Compose, const Type & > ( );
72 }
73};
74
75} /* namespace registration */
76
static std::shared_ptr< abstraction::OperationAbstraction > getAbstraction(const std::string &type)
Definition: RawReaderRegistry.cpp:27
static std::shared_ptr< abstraction::OperationAbstraction > getAbstraction(const std::string &param)
Definition: RawWriterRegistry.cpp:27
Definition: RawRegistration.hpp:24
static std::shared_ptr< abstraction::OperationAbstraction > abstractionFromType(const Type &)
Definition: RawRegistration.hpp:27
Definition: RawRegistration.hpp:16
static std::shared_ptr< abstraction::OperationAbstraction > abstractionFromString(const std::string &)
Definition: RawRegistration.hpp:18
Definition: RawRegistration.hpp:38
RawReaderRegister()
Definition: RawRegistration.hpp:40
~RawReaderRegister()
Definition: RawRegistration.hpp:50
Definition: RawRegistration.hpp:57
RawWriterRegister()
Definition: RawRegistration.hpp:59
~RawWriterRegister()
Definition: RawRegistration.hpp:69
Type
Definition: MeasurementTypes.hpp:20
Definition: RawRegistration.hpp:13
Definition: AlgoRegistration.hpp:14