Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
AnyaryOperationAbstraction.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <ext/memory>
9
12
13namespace abstraction {
14
17
18protected:
20 return m_params;
21 }
22
23 virtual std::shared_ptr < abstraction::Value > run ( ) const = 0;
24
25private:
26 void attachInput ( const std::shared_ptr < abstraction::Value > & input, size_t index ) override;
27
28 void detachInput ( size_t index ) override;
29
30public:
32
33 bool inputsAttached ( ) const override;
34
35 std::shared_ptr < abstraction::Value > eval ( ) override;
36
37 size_t numberOfParams ( ) const override {
38 return m_params.size ( );
39 }
40
41};
42
43template < class ParamType >
45public:
46 ext::type_index getParamTypeIndex ( size_t ) const override {
47 return ext::type_index ( typeid ( ParamType ) );
48 }
49
51 return abstraction::TypeQualifiers::typeQualifiers < ParamType > ( );
52 }
53
54};
55
56} /* namespace abstraction */
57
Definition: AnyaryOperationAbstraction.hpp:15
size_t numberOfParams() const override
Definition: AnyaryOperationAbstraction.hpp:37
std::shared_ptr< abstraction::Value > eval() override
Definition: AnyaryOperationAbstraction.cpp:32
virtual std::shared_ptr< abstraction::Value > run() const =0
const ext::vector< std::shared_ptr< abstraction::Value > > & getParams() const
Definition: AnyaryOperationAbstraction.hpp:19
bool inputsAttached() const override
Definition: AnyaryOperationAbstraction.cpp:24
Definition: AnyaryOperationAbstraction.hpp:44
abstraction::TypeQualifiers::TypeQualifierSet getParamTypeQualifiers(size_t) const override
Definition: AnyaryOperationAbstraction.hpp:50
ext::type_index getParamTypeIndex(size_t) const override
Definition: AnyaryOperationAbstraction.hpp:46
Definition: OperationAbstraction.hpp:19
TypeQualifierSet
Definition: TypeQualifiers.hpp:15
Definition: typeindex.h:37
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