sigx++ 2.0.1
validity_trackable.h
Go to the documentation of this file.
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_