Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Concepts
AlgorithmAbstraction.hpp
Go to the documentation of this file.
1
6#pragma once
7
10
11namespace abstraction {
12
13template < class ReturnType, class ... ParamTypes >
14class AlgorithmAbstraction : virtual public NaryOperationAbstraction < ParamTypes ... >, virtual public ValueOperationAbstraction < ReturnType > {
15 std::function < ReturnType ( ParamTypes ... ) > m_callback;
16
17public:
18 explicit AlgorithmAbstraction ( std::function < ReturnType ( ParamTypes ... ) > callback ) : m_callback ( std::move ( callback ) ) {
19 }
20
21 std::shared_ptr < abstraction::Value > run ( ) const override {
22 return ValueOperationAbstraction < ReturnType >::template run_helper < ParamTypes ... > ( m_callback, this->getParams ( ) );
23 }
24
25};
26
27} /* namespace abstraction */
28
Definition: AlgorithmAbstraction.hpp:14
std::shared_ptr< abstraction::Value > run() const override
Definition: AlgorithmAbstraction.hpp:21
AlgorithmAbstraction(std::function< ReturnType(ParamTypes ...) > callback)
Definition: AlgorithmAbstraction.hpp:18
const ext::array< std::shared_ptr< abstraction::Value >, NumberOfParams > & getParams() const
Definition: NaryOperationAbstraction.hpp:21
Definition: NaryOperationAbstraction.hpp:77
Definition: ValueOperationAbstraction.hpp:19
static std::shared_ptr< abstraction::Value > run_helper(Callable callback, const ext::array< std::shared_ptr< abstraction::Value >, sizeof ...(ParamTypes) > &inputs)
Definition: ValueOperationAbstraction.hpp:22
Definition: AlgorithmAbstraction.hpp:11
int callback(struct dl_phdr_info *info, size_t, void *data)
Definition: simpleStacktrace.cpp:25
Definition: FordFulkerson.hpp:16