Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
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