/usr/include/libbonobo-2.0/bonobo/bonobo-macros.h is in libbonobo2-dev 2.32.1-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /**
* Useful macros.
*
* Author:
* Darin Adler <darin@bentspoon.com>
*
* Copyright 2001 Ben Tea Spoons, Inc.
*/
#ifndef _BONOBO_MACROS_H_
#define _BONOBO_MACROS_H_
#include <glib.h>
G_BEGIN_DECLS
/* Macros for defining classes. Ideas taken from Nautilus and GOB. */
/* Define the boilerplate type stuff to reduce typos and code size. Defines
* the get_type method and the parent_class static variable. */
#define BONOBO_BOILERPLATE(type, type_as_function, corba_type, \
parent_type, parent_type_macro, \
register_type_macro) \
static void type_as_function ## _class_init (type ## Class *klass); \
static void type_as_function ## _instance_init (type *object); \
static parent_type ## Class *parent_class = NULL; \
static void \
type_as_function ## _class_init_trampoline (gpointer klass, \
gpointer data) \
{ \
parent_class = (parent_type ## Class *)g_type_class_ref ( \
parent_type_macro); \
type_as_function ## _class_init ((type ## Class *)klass); \
} \
GType \
type_as_function ## _get_type (void) \
{ \
static GType object_type = 0; \
if (object_type == 0) { \
static const GTypeInfo object_info = { \
sizeof (type ## Class), \
NULL, /* base_init */ \
NULL, /* base_finalize */ \
type_as_function ## _class_init_trampoline, \
NULL, /* class_finalize */ \
NULL, /* class_data */ \
sizeof (type), \
0, /* n_preallocs */ \
(GInstanceInitFunc) type_as_function ## _instance_init \
}; \
object_type = register_type_macro \
(type, type_as_function, corba_type, \
parent_type, parent_type_macro); \
} \
return object_type; \
}
/* Just call the parent handler. This assumes that there is a variable
* named parent_class that points to the (duh!) parent class. Note that
* this macro is not to be used with things that return something, use
* the _WITH_DEFAULT version for that */
#define BONOBO_CALL_PARENT(parent_class_cast, name, args) \
((parent_class_cast(parent_class)->name != NULL) ? \
parent_class_cast(parent_class)->name args : (void)0)
/* Same as above, but in case there is no implementation, it evaluates
* to def_return */
#define BONOBO_CALL_PARENT_WITH_DEFAULT(parent_class_cast, \
name, args, def_return) \
((parent_class_cast(parent_class)->name != NULL) ? \
parent_class_cast(parent_class)->name args : def_return)
#define BONOBO_CLASS_BOILERPLATE(type, type_as_function, \
parent_type, parent_type_macro) \
BONOBO_BOILERPLATE(type, type_as_function, type, \
parent_type, parent_type_macro, \
BONOBO_REGISTER_TYPE)
#define BONOBO_REGISTER_TYPE(type, type_as_function, corba_type, \
parent_type, parent_type_macro) \
bonobo_type_unique (parent_type_macro, NULL, NULL, 0, \
&object_info, #type)
#define BONOBO_CLASS_BOILERPLATE_FULL(type, type_as_function, \
corba_type, \
parent_type, parent_type_macro) \
BONOBO_BOILERPLATE(type, type_as_function, corba_type, \
parent_type, parent_type_macro, \
BONOBO_REGISTER_TYPE_FULL)
#define BONOBO_REGISTER_TYPE_FULL(type, type_as_function, corba_type, \
parent_type, parent_type_macro) \
bonobo_type_unique (parent_type_macro, \
POA_##corba_type##__init, \
POA_##corba_type##__fini, \
G_STRUCT_OFFSET (type##Class, epv), \
&object_info, #type)
G_END_DECLS
#endif /* _BONOBO_MACROS_H_ */
|