Skip to content
Snippets Groups Projects
Commit 07a6f035 authored by Martin Hanzik's avatar Martin Hanzik Committed by Jan Trávníček
Browse files

Add Algorithm::execute

parent ad366a2c
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,8 @@
#include <regex>
#include <utility>
 
#include <common/AlgorithmHelper.h>
Algorithm::Algorithm(std::string fullName)
: fullName(std::move(fullName))
{
......@@ -86,6 +88,17 @@ const std::string& Algorithm::getPrettyGroupName() const {
return this->groupName;
}
 
std::shared_ptr<abstraction::OperationAbstraction>
Algorithm::execute(const std::vector<std::shared_ptr<abstraction::OperationAbstraction>>& params) const {
std::vector<bool> moves(params.size(), true);
ext::vector<std::shared_ptr<abstraction::OperationAbstraction>> extParams(params.begin(), params.end());
return abstraction::AlgorithmHelper::eval(this->fullName,
{},
extParams,
moves,
abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT);
}
Algorithm::Overload::Overload(std::string returnType,
std::vector<std::string> parameterTypes)
: returnType(std::move(returnType))
......
......@@ -2,6 +2,8 @@
#include <string>
#include <vector>
 
#include <abstraction/OperationAbstraction.hpp>
class Algorithm {
friend class Registry;
public:
......@@ -20,6 +22,9 @@ public:
std::string getPrettyName() const;
uint8_t getInputCount() const;
 
std::shared_ptr<abstraction::OperationAbstraction> execute(
const std::vector<std::shared_ptr<abstraction::OperationAbstraction>>& params) const;
private:
void addOverload(Overload overload);
bool canAddOverload(const Overload& overload);
......
......@@ -11,7 +11,7 @@ AlgorithmModelBox::AlgorithmModelBox(Algorithm* algorithm)
, algorithm(algorithm) {}
 
std::shared_ptr<abstraction::OperationAbstraction> AlgorithmModelBox::run() const {
ext::vector<std::shared_ptr<abstraction::OperationAbstraction>> params;
std::vector<std::shared_ptr<abstraction::OperationAbstraction>> params;
for (const auto* input: this->inputs)
{
if (!input)
......@@ -20,14 +20,7 @@ std::shared_ptr<abstraction::OperationAbstraction> AlgorithmModelBox::run() cons
if (!params.back())
return nullptr;
}
std::vector<bool> moves(params.size(), true);
return abstraction::AlgorithmHelper::eval(this->algorithm->getFullName(),
{},
params,
moves,
abstraction::AlgorithmCategories::AlgorithmCategory::DEFAULT);
return this->algorithm->execute(params);
}
 
std::string AlgorithmModelBox::getName() const {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment