|
UniWidgets
1.0.0
|
00001 #ifndef _CHECKEDSIGNAL_H 00002 #define _CHECKEDSIGNAL_H 00003 // ------------------------------------------------------------------------- 00004 #include <UniSetTypes.h> 00005 #include <sigc++/sigc++.h> 00006 #include <deque> 00007 // ------------------------------------------------------------------------- 00008 class CheckConnection; 00009 00010 typedef std::pair< UniSetTypes::ObjectId,sigc::signal< void,UniSetTypes::ObjectId >* > CheckBackEntry; 00011 typedef std::deque< CheckBackEntry > CheckBackContainer; 00018 class CheckedSignal 00019 { 00020 friend class CheckConnection; 00021 public: 00022 CheckConnection connect( const sigc::slot< void,UniSetTypes::ObjectId >&, UniSetTypes::ObjectId sensorId ); 00023 void emit(); 00024 ~CheckedSignal(); 00025 private: 00026 CheckBackContainer cb; 00027 }; 00028 00029 class CheckConnection 00030 { 00031 public: 00032 CheckConnection(CheckedSignal* sig, sigc::connection& conn, UniSetTypes::ObjectId id) 00033 :sid (id), signal(sig), connection(conn) {} 00034 // CheckConnection(const CheckConnection& chconn); 00035 CheckConnection():signal(NULL) {} 00036 ~CheckConnection() {} 00037 void disconnect(); 00038 00039 private: 00040 UniSetTypes::ObjectId sid; 00041 CheckedSignal* signal; 00042 sigc::connection connection; 00043 }; 00044 #endif
1.7.6.1