00001 #ifndef _ABSTRACTMODULE_H 00002 #define _ABSTRACTMODULE_H 00003 00004 #include "../framedata/IFrameData.h" 00005 #include "../util/WarningWrongFrameDataType.h" 00006 #include <string> 00007 00008 class AbstractModuleGUI; 00009 #include "../visualizer/AbstractModuleGUI.h" 00010 00011 // TODO: use std::tr1::shared_ptr<IFrameData> in processFrameData 00012 00014 00019 class AbstractModule 00020 { 00021 public: 00023 AbstractModule() : m_gui(NULL) {} 00024 00026 virtual ~AbstractModule() { deleteGUI(); } 00027 00032 virtual void processFrameData(IFrameData *data) = 0; 00033 00035 00041 void assertFramedataType(IFrameData *data, std::string type, std::string where) throw (WarningWrongFrameDataType); 00042 00043 protected: 00044 00046 void deleteGUI(); 00047 00052 void setGUI(AbstractModuleGUI *gui); 00053 00057 AbstractModuleGUI *getGUI() const {return m_gui;} 00058 00059 private: 00060 AbstractModuleGUI *m_gui; 00061 }; 00062 00063 #endif