GnuCash
5.6-150-g038405b370+
engine
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 */
Generated by
1.8.14