#define __node_h__
#include <vector>
+#include <utility>
#include "action.h"
class Node {
public:
- Node(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);
+ bool executed() const;
+ const literals& effects() const;
protected:
Action _action;
std::vector<Node*> _children;
literals _preconditions;
+ bool _executed;
+ literals _effects;
+};
+
+class StartNode : Node {
+ public:
+ StartNode(const literals& init);
+};
+
+class EndNode : Node {
+ public:
+ EndNode(const literals& goal);
};
#endif