Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
Registry.h
Go to the documentation of this file.
1
6#pragma once
7
11#include <common/Operators.hpp>
12#include <optional>
14
15#include <ext/pair>
16#include <ext/tuple>
17#include <ext/list>
18
19namespace abstraction {
20
21class Registry {
22public:
25
26 static ext::list < ext::pair < std::string, bool > > listCastsFrom ( const std::string & type );
27 static ext::list < ext::pair < std::string, bool > > listCastsTo ( const std::string & type );
29
30 static ext::list < ext::tuple < AlgorithmFullInfo, std::optional < std::string > > > listOverloads ( const std::string & algorithm, const ext::vector < std::string > & templateParams );
31
35
36 static std::shared_ptr < abstraction::OperationAbstraction > getContainerAbstraction ( const std::string & container, const std::string & type );
37 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 < abstraction::TypeQualifiers::TypeQualifierSet > & typeQualifiers, AlgorithmCategories::AlgorithmCategory );
38 static std::shared_ptr < abstraction::OperationAbstraction > getBinaryOperatorAbstraction ( Operators::BinaryOperators type, const ext::vector < std::string > & paramTypes, const ext::vector < abstraction::TypeQualifiers::TypeQualifierSet > & typeQualifiers, AlgorithmCategories::AlgorithmCategory );
39 static std::shared_ptr < abstraction::OperationAbstraction > getPrefixOperatorAbstraction ( Operators::PrefixOperators type, const ext::vector < std::string > & paramTypes, const ext::vector < abstraction::TypeQualifiers::TypeQualifierSet > & typeQualifiers, AlgorithmCategories::AlgorithmCategory );
40 static std::shared_ptr < abstraction::OperationAbstraction > getPostfixOperatorAbstraction ( Operators::PostfixOperators type, const ext::vector < std::string > & paramTypes, const ext::vector < abstraction::TypeQualifiers::TypeQualifierSet > & typeQualifiers, AlgorithmCategories::AlgorithmCategory );
41 static std::shared_ptr < abstraction::OperationAbstraction > getCastAbstraction ( const std::string & target, const std::string & param );
42 static bool isCastNoOp ( const std::string & target, const std::string & param );
43 static std::shared_ptr < abstraction::OperationAbstraction > getNormalizeAbstraction ( const std::string & param );
44 static bool hasNormalize ( const std::string & param );
45 static std::shared_ptr < abstraction::OperationAbstraction > getValuePrinterAbstraction ( const std::string & param );
46};
47
48} /* namespace abstraction */
49
50
AlgorithmCategory
Definition: AlgorithmCategories.hpp:14
PostfixOperators
Definition: Operators.hpp:43
PrefixOperators
Definition: Operators.hpp:34
BinaryOperators
Definition: Operators.hpp:14
Definition: Registry.h:21
static ext::list< ext::pair< std::string, bool > > listCastsTo(const std::string &type)
Definition: Registry.cpp:29
static std::shared_ptr< abstraction::OperationAbstraction > getBinaryOperatorAbstraction(Operators::BinaryOperators type, const ext::vector< std::string > &paramTypes, const ext::vector< abstraction::TypeQualifiers::TypeQualifierSet > &typeQualifiers, AlgorithmCategories::AlgorithmCategory)
Definition: Registry.cpp:61
static ext::list< ext::pair< Operators::PrefixOperators, AlgorithmFullInfo > > listPrefixOperators()
Definition: Registry.cpp:45
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< abstraction::TypeQualifiers::TypeQualifierSet > &typeQualifiers, AlgorithmCategories::AlgorithmCategory)
Definition: Registry.cpp:57
static ext::set< ext::pair< std::string, ext::vector< std::string > > > listAlgorithms()
Definition: Registry.cpp:21
static std::shared_ptr< abstraction::OperationAbstraction > getCastAbstraction(const std::string &target, const std::string &param)
Definition: Registry.cpp:73
static std::shared_ptr< abstraction::OperationAbstraction > getPrefixOperatorAbstraction(Operators::PrefixOperators type, const ext::vector< std::string > &paramTypes, const ext::vector< abstraction::TypeQualifiers::TypeQualifierSet > &typeQualifiers, AlgorithmCategories::AlgorithmCategory)
Definition: Registry.cpp:65
static std::shared_ptr< abstraction::OperationAbstraction > getPostfixOperatorAbstraction(Operators::PostfixOperators type, const ext::vector< std::string > &paramTypes, const ext::vector< abstraction::TypeQualifiers::TypeQualifierSet > &typeQualifiers, AlgorithmCategories::AlgorithmCategory)
Definition: Registry.cpp:69
static bool isCastNoOp(const std::string &target, const std::string &param)
Definition: Registry.cpp:77
static ext::list< ext::pair< std::string, bool > > listCastsFrom(const std::string &type)
Definition: Registry.cpp:25
static ext::list< ext::pair< Operators::BinaryOperators, AlgorithmFullInfo > > listBinaryOperators()
Definition: Registry.cpp:41
static ext::list< ext::tuple< std::string, std::string, bool > > listCasts()
Definition: Registry.cpp:33
static ext::list< ext::tuple< AlgorithmFullInfo, std::optional< std::string > > > listOverloads(const std::string &algorithm, const ext::vector< std::string > &templateParams)
Definition: Registry.cpp:37
static bool hasNormalize(const std::string &param)
Definition: Registry.cpp:85
static std::shared_ptr< abstraction::OperationAbstraction > getNormalizeAbstraction(const std::string &param)
Definition: Registry.cpp:81
static std::shared_ptr< abstraction::OperationAbstraction > getContainerAbstraction(const std::string &container, const std::string &type)
Definition: Registry.cpp:53
static std::shared_ptr< abstraction::OperationAbstraction > getValuePrinterAbstraction(const std::string &param)
Definition: Registry.cpp:89
static ext::list< ext::pair< Operators::PostfixOperators, AlgorithmFullInfo > > listPostfixOperators()
Definition: Registry.cpp:49
static ext::set< ext::pair< std::string, ext::vector< std::string > > > listAlgorithmGroup(const std::string &group)
Definition: Registry.cpp:17
Class extending the list class from the standard library. Original reason is to allow printing of the...
Definition: list.hpp:44
Definition: set.hpp:44
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
Definition: AlgorithmAbstraction.hpp:11
Definition: ContainerFromStringLexer.cpp:8