Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
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