class Node {
public:
- Node(const Action& action);
+ Node(const Action* action);
Node();
Node(const Node& node);
virtual ~Node(){}
void addChild(Node* node);
- const Action& action() const;
- void execute(const literals& effects);
+ const Action* action() const;
+ void execute();
bool executed() const;
- const literals& effects() const;
+ const Literals& effects() const;
+ bool satisfyCondition(std::string effect);
+ bool satisfyConditions(const Literals& effects);
+ const std::vector<Node*>& children() const;
protected:
- Action _action;
+ const Action* _action;
std::vector<Node*> _children;
- literals _preconditions;
+ Preconditions _preconditions;
bool _executed;
- literals _effects;
+ Literals _effects;
};
-class StartNode : Node {
+class StartNode :public Node {
public:
- StartNode(const literals& init);
+ StartNode(const Literals& init);
+ ~StartNode(){delete _action;}
};
-class EndNode : Node {
+class EndNode :public Node {
public:
- EndNode(const literals& goal);
+ EndNode(const Literals& goal);
+ ~EndNode(){delete _action;}
};
#endif