#include "../include/Implementation.h" #include "../include/Mgr.h" using namespace std; Implementation::Implementation(const BDD& _pre, int outputSize) : impl(outputSize) { pre = _pre; } Implementation::Implementation(const BDD& _pre, const vector& _impl) : impl(_impl) { pre = _pre; } BDD Implementation::precondition() { return pre; } BDD& Implementation::operator[](const int i) { return impl[i]; } void Implementation::dumpDot() { m.dumpDot(pre); m.dumpDot(impl); } int Implementation::nodeCount() { return pre.nodeCount() + m.nodeCount(impl); } Result Implementation::run(const vector& input) { int* inputArray = new int[input.size()]; for (size_t i = 0; i < input.size(); i++) { inputArray[i] = input[i] ? 1 : 0; } if (pre.Eval(inputArray).IsZero()) return Result(); vector output(impl.size()); for (size_t i = 0; i < impl.size(); i++) { output[i] = impl[i].Eval(inputArray).IsOne(); } delete[] inputArray; return Result(output); }