GnuCash 2.4.99
qof-gobject.h
00001 /********************************************************************\
00002  * qof-gobject.h -- helper macros for qof objects using gobject     *
00003  *                                                                  *
00004  * This program is free software; you can redistribute it and/or    *
00005  * modify it under the terms of the GNU General Public License as   *
00006  * published by the Free Software Foundation; either version 2 of   *
00007  * the License, or (at your option) any later version.              *
00008  *                                                                  *
00009  * This program is distributed in the hope that it will be useful,  *
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of   *
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
00012  * GNU General Public License for more details.                     *
00013  *                                                                  *
00014  * You should have received a copy of the GNU General Public License*
00015  * along with this program; if not, contact:                        *
00016  *                                                                  *
00017  * Free Software Foundation           Voice:  +1-617-542-5942       *
00018  * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652       *
00019  * Boston, MA  02110-1301,  USA       gnu@gnu.org                   *
00020  *                                                                  *
00021 \********************************************************************/
00022 
00023 #ifndef QOF_GOBJECT_H
00024 #define QOF_GOBJECT_H
00025 
00026 #include <glib-object.h>
00027 
00050 #define QOF_GOBJECT_DECL(type_name)             \
00051   GType type_name##_get_type(void);
00052 
00059 #define QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE)    \
00060   G_DEFINE_TYPE_WITH_CODE(TypeName, type_name, TYPE_PARENT, CODE);
00061 
00062 #define QOF_GOBJECT_CLASS_INIT(type_name, TypeName)                     \
00063   static void type_name##_dispose(GObject *object);                     \
00064   static void type_name##_finalize(GObject *object);                    \
00065   static void type_name##_class_init(TypeName##Class *klass)            \
00066   {                                                                     \
00067     GObjectClass *object_class = G_OBJECT_CLASS(klass);                 \
00068     object_class->dispose = type_name##_dispose;                        \
00069     object_class->finalize = type_name##_finalize;                      \
00070   }
00071 
00072 #define QOF_GOBJECT_DISPOSE(type_name)                                  \
00073   static void type_name##_dispose_real(GObject* object);                \
00074   static void type_name##_dispose(GObject *object)                      \
00075   {                                                                     \
00076     type_name##_dispose_real(object);                                   \
00077     G_OBJECT_CLASS(type_name##_parent_class)->dispose(object);          \
00078   }
00079 
00080 #define QOF_GOBJECT_FINALIZE(type_name)                                 \
00081   static void type_name##_finalize_real(GObject* object);               \
00082   static void type_name##_finalize(GObject *object)                     \
00083   {                                                                     \
00084     type_name##_finalize_real(object);                                  \
00085     G_OBJECT_CLASS(type_name##_parent_class)->finalize(object);         \
00086   }
00087 
00088 #define QOF_GOBJECT_IMPL_WITH_CODE(type_name, TypeName, TYPE_PARENT, CODE) \
00089   QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE);         \
00090   QOF_GOBJECT_CLASS_INIT(type_name, TypeName);                          \
00091   QOF_GOBJECT_DISPOSE(type_name);                                       \
00092   QOF_GOBJECT_FINALIZE(type_name);
00093 
00094 #define QOF_GOBJECT_IMPL(type_name, TypeName, TYPE_PARENT) \
00095   QOF_GOBJECT_IMPL_WITH_CODE(type_name, TypeName, TYPE_PARENT, {})
00096 
00097 
00098 #endif /* QOF_GOBJECT_H */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines