GnuCash c935c2f+
Loading...
Searching...
No Matches
qof-gobject.h
1/********************************************************************\
2 * qof-gobject.h -- helper macros for qof objects using gobject *
3 * *
4 * This program is free software; you can redistribute it and/or *
5 * modify it under the terms of the GNU General Public License as *
6 * published by the Free Software Foundation; either version 2 of *
7 * the License, or (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License*
15 * along with this program; if not, contact: *
16 * *
17 * Free Software Foundation Voice: +1-617-542-5942 *
18 * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
19 * Boston, MA 02110-1301, USA gnu@gnu.org *
20 * *
21\********************************************************************/
22
23#ifndef QOF_GOBJECT_H
24#define QOF_GOBJECT_H
25
26#include <glib-object.h>
27
50#define QOF_GOBJECT_DECL(type_name) \
51 GType type_name##_get_type(void);
52
59#define QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE) \
60 G_DEFINE_TYPE_WITH_CODE(TypeName, type_name, TYPE_PARENT, CODE)
61
62#define QOF_GOBJECT_CLASS_INIT(type_name, TypeName) \
63 static void type_name##_dispose(GObject *object); \
64 static void type_name##_finalize(GObject *object); \
65 static void type_name##_class_init(TypeName##Class *klass) \
66 { \
67 GObjectClass *object_class = G_OBJECT_CLASS(klass); \
68 object_class->dispose = type_name##_dispose; \
69 object_class->finalize = type_name##_finalize; \
70 }
71
72#define QOF_GOBJECT_DISPOSE(type_name) \
73 static void type_name##_dispose_real(GObject* object); \
74 static void type_name##_dispose(GObject *object) \
75 { \
76 type_name##_dispose_real(object); \
77 G_OBJECT_CLASS(type_name##_parent_class)->dispose(object); \
78 }
79
80#define QOF_GOBJECT_FINALIZE(type_name) \
81 static void type_name##_finalize_real(GObject* object); \
82 static void type_name##_finalize(GObject *object) \
83 { \
84 type_name##_finalize_real(object); \
85 G_OBJECT_CLASS(type_name##_parent_class)->finalize(object); \
86 }
87
88#define QOF_GOBJECT_IMPL_WITH_CODE(type_name, TypeName, TYPE_PARENT, CODE) \
89 QOF_GOBJECT_GET_TYPE(TypeName, type_name, TYPE_PARENT, CODE) \
90 QOF_GOBJECT_CLASS_INIT(type_name, TypeName) \
91 QOF_GOBJECT_DISPOSE(type_name) \
92 QOF_GOBJECT_FINALIZE(type_name)
93
94#define QOF_GOBJECT_IMPL(type_name, TypeName, TYPE_PARENT) \
95 QOF_GOBJECT_IMPL_WITH_CODE(type_name, TypeName, TYPE_PARENT, {})
96
97
98#endif /* QOF_GOBJECT_H */