Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
XmlRegistration.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <core/xmlApi.hpp>
9
12
15
16namespace xml {
17
18class Parse {
19public:
20 static std::shared_ptr < abstraction::OperationAbstraction > abstractionFromTokens ( ext::deque < sax::Token > && tokens ) {
21 return abstraction::XmlRegistry::getXmlParserAbstraction ( tokens [ 0 ].getData ( ) );
22 }
23
24};
25
26class Compose {
27public:
28 template < class Type >
29 static std::shared_ptr < abstraction::OperationAbstraction > abstractionFromType ( const Type & ) {
30 return abstraction::XmlRegistry::getXmlComposerAbstraction ( ext::to_string < Type > ( ) );
31 }
32
33};
34
35} /* namespace xml */
36
37namespace registration {
38
39template < class Type >
41public:
43 abstraction::XmlParserRegistry::registerXmlParser < Type > ( );
44 }
45
47 abstraction::XmlParserRegistry::unregisterXmlParser < Type > ( );
48 }
49};
50
51template < class Type >
53public:
55 abstraction::XmlComposerRegistry::registerXmlComposer < Type > ( );
56 abstraction::AlgorithmRegistry::registerWrapper < xml::Compose, ext::deque < sax::Token >, const Type & > ( xml::Compose::abstractionFromType, std::array < std::string, 1 > { { "arg0" } } );
57 abstraction::AlgorithmRegistry::setDocumentationOfWrapper < xml::Compose, const Type & > (
58"Xml composing algorithm.\n\
59\n\
60@param arg0 the composed value\n\
61@return the @p arg0 in xml tokens representation" );
62 }
63
65 abstraction::XmlComposerRegistry::unregisterXmlComposer < Type > ( );
66 abstraction::AlgorithmRegistry::unregisterWrapper < xml::Compose, const Type & > ( );
67 }
68};
69
70template < class Group, class Type >
72public:
74 core::xmlApi < Group >::template registerXmlReader < Type > ( );
75 core::xmlApi < Group >::template registerXmlWriter < Type > ( );
76 }
77
79 core::xmlApi < Group >::template unregisterXmlReader < Type > ( );
80 core::xmlApi < Group >::template unregisterXmlWriter < Type > ( );
81 }
82};
83
84} /* namespace registration */
85
static std::shared_ptr< abstraction::OperationAbstraction > getXmlComposerAbstraction(const std::string &param)
Definition: XmlRegistry.cpp:22
static std::shared_ptr< abstraction::OperationAbstraction > getXmlParserAbstraction(const std::string &type)
Definition: XmlRegistry.cpp:26
Definition: XmlRegistration.hpp:40
~XmlReaderRegister()
Definition: XmlRegistration.hpp:46
XmlReaderRegister()
Definition: XmlRegistration.hpp:42
Definition: XmlRegistration.hpp:71
~XmlRegisterTypeInGroup()
Definition: XmlRegistration.hpp:78
XmlRegisterTypeInGroup()
Definition: XmlRegistration.hpp:73
Definition: XmlRegistration.hpp:52
~XmlWriterRegister()
Definition: XmlRegistration.hpp:64
XmlWriterRegister()
Definition: XmlRegistration.hpp:54
Definition: XmlRegistration.hpp:26
static std::shared_ptr< abstraction::OperationAbstraction > abstractionFromType(const Type &)
Definition: XmlRegistration.hpp:29
Definition: XmlRegistration.hpp:18
static std::shared_ptr< abstraction::OperationAbstraction > abstractionFromTokens(ext::deque< sax::Token > &&tokens)
Definition: XmlRegistration.hpp:20
Type
Definition: MeasurementTypes.hpp:20
Definition: AlgoRegistration.hpp:14
Definition: XmlRegistration.hpp:16
Definition: xmlApi.hpp:27