Made Effect a proper class.

This commit is contained in:
2016-05-22 15:46:41 +02:00
parent 342672063e
commit 6677ded33e
8 changed files with 103 additions and 40 deletions

View File

@@ -30,7 +30,7 @@ class AssignedVariable
static AssignedVariable fromSAS(std::istream &istream, const Variable &variable);
public:
AssignedVariable(const Variable &variable, const Value &value);
explicit AssignedVariable(const Variable &variable, const Value &value);
const Variable &variable() const;
const Value &value() const;

View File

@@ -36,7 +36,7 @@ class AxiomRule
private:
AxiomRule() = default;
AxiomRule(Conditions conditions, Condition postcondition);
explicit AxiomRule(Conditions conditions, Condition postcondition);
Conditions m_conditions;
Condition m_postcondition;

View File

@@ -17,18 +17,29 @@ namespace sas
//
////////////////////////////////////////////////////////////////////////////////////////////////////
struct Effect;
class Effect;
using Effects = std::vector<Effect>;
////////////////////////////////////////////////////////////////////////////////////////////////////
struct Effect
class Effect
{
using Condition = AssignedVariable;
using Conditions = AssignedVariables;
public:
using Condition = AssignedVariable;
using Conditions = AssignedVariables;
Conditions conditions;
Condition postcondition;
static Effect fromSAS(std::istream &istream, const Variables &variables, Conditions &preconditions);
public:
const Conditions &conditions() const;
const Condition &postcondition() const;
private:
Effect() = default;
explicit Effect(Conditions conditions, Condition postcondition);
Conditions m_conditions;
Condition m_postcondition;
};
////////////////////////////////////////////////////////////////////////////////////////////////////