Changes in src/Actions/Action.hpp [f9352d:bfce50]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Actions/Action.hpp
rf9352d rbfce50 10 10 11 11 #include <string> 12 #include <boost/shared_ptr.hpp>13 14 // forward declaration15 16 class ActionState;17 class ActionSequence;18 12 19 13 /** … … 27 21 class Action 28 22 { 29 friend class ActionSequence; 23 protected: 30 24 public: 31 32 typedef boost::shared_ptr<ActionState> state_ptr;33 34 25 Action(std::string _name,bool _doRegister=true); 35 26 virtual ~Action(); 36 27 37 // this method only handles the infrastructure 38 // actuall action is passed on to a private virtual 39 void call(); 40 state_ptr undo(state_ptr); 41 state_ptr redo(state_ptr); 42 28 virtual void call()=0; 29 virtual void undo()=0; 43 30 virtual bool canUndo()=0; 44 virtual bool shouldUndo()=0; 45 46 virtual bool isActive(); 31 //virtual bool shouldUndo()=0; 47 32 48 33 virtual const std::string getName(); 49 34 50 protected:51 static state_ptr success;52 static state_ptr failure;53 54 35 private: 55 virtual state_ptr performCall()=0;56 virtual state_ptr performUndo(state_ptr)=0;57 virtual state_ptr performRedo(state_ptr)=0;58 59 36 std::string name; 60 37 }; 61 38 62 /**63 * This class can be used by actions to save the state.64 *65 * It is implementing a memento pattern. The base class is completely empty,66 * since no general state internals can be given. The Action performing67 * the Undo should downcast to the apropriate type.68 */69 class ActionState{70 public:71 ActionState(){}72 virtual ~ActionState(){}73 };74 75 39 #endif /* ACTION_H_ */
Note:
See TracChangeset
for help on using the changeset viewer.