X-Git-Url: https://ruin.nu/git/?p=popboot.git;a=blobdiff_plain;f=node.h;h=272bee93bc565977f03a9499f8d02f8255ed7831;hp=3cd3a9eadd050f0de9fa5ab6cc9563386f6eaf01;hb=36283553b51149fc6d7a704ba4f746310aafa49b;hpb=498b277372ebab0008b97399d387285b36d88826 diff --git a/node.h b/node.h index 3cd3a9e..272bee9 100644 --- a/node.h +++ b/node.h @@ -2,19 +2,41 @@ #define __node_h__ #include +#include #include "action.h" class Node { public: - Node(Action action); + Node(const Action* action); + Node(); + Node(const Node& node); + virtual ~Node(){} void addChild(Node* node); - Action action(); - void execute(); + const Action* action() const; + void execute(const Literals& effects); + bool executed() const; + const Literals& effects() const; + void satisfyCondition(std::string effect); protected: - Action _action; + const Action* _action; std::vector _children; + Preconditions _preconditions; + bool _executed; + Literals _effects; +}; + +class StartNode :public Node { + public: + StartNode(const Literals& init); + ~StartNode(){delete _action;} +}; + +class EndNode :public Node { + public: + EndNode(const Literals& goal); + ~EndNode(){delete _action;} }; #endif