]> ruin.nu Git - popboot.git/blobdiff - action.cpp
delete remaining actions
[popboot.git] / action.cpp
index 427440b268c182270bd358d248870de02c78a8be..6e4b60785917cf7627c7ef1969b9621481c40022 100644 (file)
@@ -1,28 +1,41 @@
 #include "action.h"
+#include <cstdlib>
 #include <iostream>
 using namespace std;
+using namespace __gnu_cxx;
 
-Action::Action(std::string executable, literals preconditions, literals effects){
+const Literals Action::_empty;
+
+Action::Action(std::string name,const Preconditions& preconditions, std::string executable,const EffectsMap& effects){
+       _name = name;
        _executable = executable;
        _preconditions = preconditions;
        _effects = effects;
 }
 
 Action::Action(const Action& action){
-       _executable = action._executable;
+       _name = action._name;
        _preconditions = action._preconditions;
        _effects = action._effects;
+       _executable = action._executable;
 }
 
-literals Action::effects() const{
-       return _effects;
+const Literals& Action::effects(int value) const{
+       EffectsMap::const_iterator effects = _effects.find(value);
+       if (effects != _effects.end())
+               return effects->second;
+       return _empty;
 }
 
-literals Action::preconditions() const{
+const Preconditions& Action::preconditions() const{
        return _preconditions;
 }
 
 int Action::execute() const{
-       cout << "Executing: " << _executable << endl;
-       return 0;
+       cout << "Executing: " << _name << endl;
+       return system(_executable.c_str());
+}
+
+const string& Action::name() const{
+       return _name;
 }