]> ruin.nu Git - popboot.git/blob - action.h
dd14e28798d0ab83b9370901085e983b1d570195
[popboot.git] / action.h
1 #ifndef __ACTION_H__
2 #define __ACTION_H__
3
4 #include <vector>
5 #include <string>
6 #include <ext/hash_map>
7
8 typedef std::vector<std::string> literals;
9 typedef std::vector<std::pair<std::string,literals> > preconditionsVector;
10 typedef __gnu_cxx::hash_map<int,literals> effectsMap;
11
12 class Action {
13         public:
14                 Action(std::string name, preconditionsVector preconditions, effectsMap effects);
15                 Action(const Action& action);
16                 Action(){};
17                 const literals& effects(int value) const;
18                 const literals& preconditions() const;
19                 const std::string& name() const;
20                 bool nextExecutable();
21                 int execute() const;
22                 void reset();
23
24         protected:
25                 preconditionsVector::const_iterator _currentPrecondition;
26                 std::string _name;
27                 preconditionsVector _preconditions;
28                 effectsMap _effects;
29                 static const literals _empty;
30 };
31
32 #endif