00001 #ifndef _SIGX_VALIDITY_TRACKABLE_HPP_ 00002 #define _SIGX_VALIDITY_TRACKABLE_HPP_ 00003 00004 /* 00005 * Copyright 2008 Klaus Triendl 00006 * 00007 * This library is free software; you can redistribute it and/or 00008 * modify it under the terms of the GNU Library General Public 00009 * License as published by the Free Software Foundation; either 00010 * version 2 of the License, or (at your option) any later version. 00011 * 00012 * This library is distributed in the hope that it will be useful, 00013 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00015 * Library General Public License for more details. 00016 * 00017 * You should have received a copy of the GNU Library General Public 00018 * License along with this library; if not, write to the Free 00019 * Software Foundation, 51 Franklin Street, Fifth Floor, 00020 * Boston, MA 02110-1301, USA. 00021 */ 00022 00023 #include <list> 00024 #include <vector> 00025 #include <glib/gtypes.h> // gint 00026 #include <sigx/fwddecl.h> 00027 #include <sigx/operator_new.h> 00028 #include <sigx/shared_dispatchable.h> 00029 #include <sigx/connection_wrapper.h> 00030 00031 00032 namespace sigx 00033 { 00034 00035 namespace internal 00036 { 00037 00042 struct validity_trackable: public operator_new 00043 { 00044 validity_trackable(const shared_dispatchable& _A_disp); 00045 00046 00047 gint m_refcount; 00048 // track the reference count from tunnel functors 00049 // (functionality wrapped in tunnel_validity_tracker) 00050 // in a separate variable to be able to track those 00051 // validity_trackables that don't have a purpose anymore 00052 gint m_tunnel_refcount; 00053 bool m_valid; 00055 std::list<connection_wrapper> m_connections; 00058 shared_dispatchable m_disp; 00059 std::vector<const sigc::trackable*> m_trackables; 00071 //const dispatcher_ptr m_original_dispatcher; 00072 gint m_dispatcher_change_is_cleanup; 00073 void* m_creator_thread; 00074 }; 00075 00076 00077 } // namespace internal 00078 00079 } // namespace sigx 00080 00081 00082 #endif // _SIGX_VALIDITY_TRACKABLE_HPP_