00001 #ifndef actasp_ActionExecutor_h__guard 00002 #define actasp_ActionExecutor_h__guard 00003 00004 #include <actasp/AspRule.h> 00005 #include <vector> 00006 00007 namespace actasp { 00008 00009 class ExecutionObserver; 00010 00011 struct ActionExecutor { 00012 00013 void setGoal(const AspRule& goalRule) throw() { 00014 std::vector<AspRule> goal; 00015 goal.push_back(goalRule); 00016 this->setGoal(goal); 00017 } 00018 00019 virtual void setGoal(const std::vector<actasp::AspRule>& goalRules) throw() = 0; 00020 00021 virtual bool goalReached() const throw() =0; 00022 virtual bool failed() const throw() = 0; 00023 00024 virtual void executeActionStep() = 0; 00025 00026 virtual void addExecutionObserver(ExecutionObserver *observer) throw() = 0; 00027 virtual void removeExecutionObserver(ExecutionObserver *observer) throw() =0; 00028 00029 virtual ~ActionExecutor() {} 00030 }; 00031 00032 } 00033 00034 #endif