00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00041 00042 #ifndef COMMAND_QUEUE_H_ 00043 #define COMMAND_QUEUE_H_ 00044 00045 #include <deque> 00046 #include <pcl/apps/point_cloud_editor/localTypes.h> 00047 00053 class CommandQueue 00054 { 00055 public: 00059 CommandQueue (); 00060 00065 CommandQueue (unsigned int max_size); 00066 00068 ~CommandQueue () 00069 { 00070 } 00071 00076 void 00077 execute (CommandPtr); 00078 00081 void 00082 undo (); 00083 00091 unsigned int 00092 setMaxSize(unsigned int size); 00093 00095 static const unsigned int DEFAULT_MAX_SIZE_ = 200; 00096 00097 private: 00099 CommandQueue(const CommandQueue&) 00100 { 00101 assert(false); 00102 } 00103 00105 CommandQueue& 00106 operator= (const CommandQueue&) 00107 { 00108 assert(false); return (*this); 00109 } 00110 00113 void 00114 enforceDequeLimit (); 00115 00117 std::deque<CommandPtr> command_deque_; 00118 00120 unsigned int depth_limit_; 00121 }; 00122 #endif // COMMAND_QUEUE_H_