Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
OperationAbstraction.hpp
Go to the documentation of this file.
1
6#pragma once
7
8#include <ext/memory>
9#include <ext/string>
10#include <ext/typeindex>
11#include <ext/set>
12
14
15namespace abstraction {
16
17class Value;
18
19class OperationAbstraction : public std::enable_shared_from_this < OperationAbstraction > {
20public:
21 virtual void attachInput ( const std::shared_ptr < abstraction::Value > & input, size_t index ) = 0;
22 virtual void detachInput ( size_t index ) = 0;
23
24 virtual ~OperationAbstraction ( ) noexcept = default;
25
26 virtual bool inputsAttached ( ) const = 0;
27 virtual std::shared_ptr < abstraction::Value > eval ( ) = 0;
28 virtual size_t numberOfParams ( ) const = 0;
29
30 virtual bool isParamTypeUniversal ( size_t ) const {
31 return false;
32 }
33
34 virtual bool isReturnTypeUniversal ( ) const {
35 return false;
36 }
37
38 virtual ext::type_index getParamTypeIndex ( size_t index ) const = 0;
39 virtual ext::type_index getReturnTypeIndex ( ) const = 0;
40
41 std::string getParamType ( size_t index ) const;
42
44
45 std::string getReturnType ( ) const;
46
48
49 virtual std::shared_ptr < abstraction::OperationAbstraction > getProxyAbstraction ( );
50};
51
52} /* namespace abstraction */
53
Definition: OperationAbstraction.hpp:19
virtual ext::type_index getParamTypeIndex(size_t index) const =0
std::string getReturnType() const
Definition: OperationAbstraction.cpp:17
virtual std::shared_ptr< abstraction::OperationAbstraction > getProxyAbstraction()
Definition: OperationAbstraction.cpp:24
virtual ext::type_index getReturnTypeIndex() const =0
virtual abstraction::TypeQualifiers::TypeQualifierSet getParamTypeQualifiers(size_t index) const =0
virtual bool isReturnTypeUniversal() const
Definition: OperationAbstraction.hpp:34
virtual size_t numberOfParams() const =0
virtual std::shared_ptr< abstraction::Value > eval()=0
virtual void attachInput(const std::shared_ptr< abstraction::Value > &input, size_t index)=0
virtual bool isParamTypeUniversal(size_t) const
Definition: OperationAbstraction.hpp:30
virtual void detachInput(size_t index)=0
std::string getParamType(size_t index) const
Definition: OperationAbstraction.cpp:10
virtual ~OperationAbstraction() noexcept=default
virtual bool inputsAttached() const =0
virtual abstraction::TypeQualifiers::TypeQualifierSet getReturnTypeQualifiers() const =0
TypeQualifierSet
Definition: TypeQualifiers.hpp:15
Definition: Value.hpp:19
Definition: typeindex.h:37
Definition: AlgorithmAbstraction.hpp:11
Definition: FordFulkerson.hpp:16