1 #define FOO_SUCCESS_INT 0x1138
5 /* A hidden type not exposed publicly, similar to GUPNP's XML wrapper
7 typedef struct _FooHidden FooHidden;
9 int foo_init_argv (int argc, char **argv);
10 int foo_init_argv_address (int *argc, char ***argv);
11 void foo_private_function (FooObject *foo);
12 void foo_test_unsigned (unsigned int uint);
13 void foo_interface_do_foo (FooInterface *self);
14 void foo_do_foo (FooInterface *self);
15 int foo_enum_method (FooEnumType foo_enum);
16 FooHidden * foo_hidden_copy (const FooHidden *boxed);
17 void foo_hidden_free (FooHidden *boxed);
18 GType foo_hidden_get_type (void);
19 FooBoxed *foo_boxed_copy (const FooBoxed *boxed);
20 void foo_boxed_free (FooBoxed *boxed);
21 void foo_dbus_data_free (FooDBusData *boxed);
22 FooDBusData *foo_dbus_data_copy (const FooDBusData *boxed);
29 void foo_private_function (FooObject *foo)
35 foo_interface_get_type (void)
37 static GType object_type = 0;
41 object_type = g_type_register_static_simple (G_TYPE_INTERFACE,
43 sizeof (FooInterfaceIface),
46 g_type_interface_add_prerequisite (object_type, G_TYPE_OBJECT);
52 void foo_interface_do_foo (FooInterface *self)
54 FOO_INTERFACE_GET_INTERFACE(self)->do_foo (self);
68 static guint foo_object_signals[LAST_SIGNAL] = { 0 };
71 foo_foo_interface_init (gpointer g_iface,
74 FooInterfaceIface *iface = (FooInterfaceIface *)g_iface;
75 iface->do_foo = foo_do_foo;
79 foo_sub_interface_get_type (void)
81 static GType object_type = 0;
85 object_type = g_type_register_static_simple (G_TYPE_INTERFACE,
87 sizeof (FooSubInterfaceIface),
90 g_type_interface_add_prerequisite (object_type, FOO_TYPE_INTERFACE);
96 void foo_sub_interface_do_bar (FooSubInterface *self)
98 FOO_SUBINTERFACE_GET_INTERFACE(self)->do_bar (self);
102 G_DEFINE_TYPE_EXTENDED (FooObject, foo_object, G_TYPE_OBJECT,
103 0, G_IMPLEMENT_INTERFACE (FOO_TYPE_INTERFACE,
104 foo_foo_interface_init));
107 foo_object_set_property (GObject *object,
119 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
125 foo_object_get_property (GObject *object,
137 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
143 foo_object_class_init (FooObjectClass *klass)
145 GObjectClass *gobject_class;
147 gobject_class = G_OBJECT_CLASS (klass);
149 gobject_class->set_property = foo_object_set_property;
150 gobject_class->get_property = foo_object_get_property;
152 g_object_class_install_property (gobject_class,
154 g_param_spec_string ("string",
156 "The String Property Blurb",
158 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
159 g_object_class_install_property (gobject_class,
161 g_param_spec_boxed ("hidden",
163 "should not be exposed",
164 foo_hidden_get_type (),
165 G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
166 foo_object_signals[SIGNAL] =
167 g_signal_new ("signal",
168 G_OBJECT_CLASS_TYPE (gobject_class),
172 (GSignalCMarshaller)g_cclosure_marshal_STRING__OBJECT_POINTER,
173 G_TYPE_STRING, 2, G_TYPE_OBJECT, G_TYPE_POINTER);
178 foo_object_init (FooObject *object)
184 foo_object_external_type (FooObject *object)
190 foo_object_take_all (FooObject *object, int x, ...)
196 foo_do_foo (FooInterface *self)
203 foo_object_is_it_time_yet (FooObject *object, time_t time)
208 foo_object_get_name (FooObject *object)
214 foo_object_dup_name (FooObject *object)
216 return g_strdup ("foo");
219 G_DEFINE_ABSTRACT_TYPE (FooSubobject, foo_subobject, FOO_TYPE_OBJECT);
222 foo_subobject_class_init (FooSubobjectClass *klass)
228 foo_subobject_init (FooSubobject *object)
235 return FOO_SUCCESS_INT;
238 int foo_init_argv (int argc, char **argv)
240 return FOO_SUCCESS_INT;
243 int foo_init_argv_address (int *argc, char ***argv)
245 return FOO_SUCCESS_INT;
249 foo_enum_type_get_type (void)
251 static GType etype = 0;
252 if (G_UNLIKELY(etype == 0)) {
253 static const GEnumValue values[] = {
254 { FOO_ENUM_ALPHA, "FOO_ENUM_ALPHA", "alpha" },
255 { FOO_ENUM_BETA, "FOO_ENUM_BETA", "beta" },
256 { FOO_ENUM_DELTA, "FOO_ENUM_DELTA", "delta" },
259 etype = g_enum_register_static (g_intern_static_string ("FooEnumType"), values);
264 int foo_enum_method (FooEnumType foo_enum)
271 foo_flags_type_get_type (void)
273 static GType etype = 0;
274 if (G_UNLIKELY(etype == 0)) {
275 static const GFlagsValue values[] = {
276 { FOO_FLAGS_FIRST, "FOO_FLAGS_FIRST", "first" },
277 { FOO_FLAGS_SECOND, "FOO_FLAGS_SECOND", "second" },
278 { FOO_FLAGS_THIRD, "FOO_FLAGS_THIRD", "third" },
281 etype = g_flags_register_static (g_intern_static_string ("FooFlagsType"), values);
293 foo_boxed_copy (const FooBoxed *boxed)
295 return (FooBoxed *)g_memdup (boxed, sizeof (FooBoxed));
299 foo_boxed_free (FooBoxed *boxed)
301 g_slice_free (FooBoxed, boxed);
306 foo_boxed_get_type (void)
308 static GType our_type = 0;
311 our_type = g_boxed_type_register_static ("FooBoxed",
312 (GBoxedCopyFunc) foo_boxed_copy,
313 (GBoxedFreeFunc) foo_boxed_free);
320 return g_slice_new0 (FooBoxed);
324 foo_boxed_method (FooBoxed *boxed)
336 foo_dbus_data_copy (const FooDBusData *boxed)
338 return (FooDBusData *)g_memdup (boxed, sizeof (FooDBusData));
342 foo_dbus_data_free (FooDBusData *boxed)
344 g_slice_free (FooDBusData, boxed);
349 foo_dbus_data_get_type (void)
351 static GType our_type = 0;
354 our_type = g_boxed_type_register_static ("FooDBusData",
355 (GBoxedCopyFunc) foo_dbus_data_copy,
356 (GBoxedFreeFunc) foo_dbus_data_free);
361 foo_brect_get_type (void)
363 static GType our_type = 0;
366 our_type = g_boxed_type_register_static ("FooBRect",
367 (GBoxedCopyFunc) g_memdup, /* Won't work */
368 (GBoxedFreeFunc) g_free);
373 foo_bunion_get_type (void)
375 static GType our_type = 0;
378 our_type = g_boxed_type_register_static ("FooBUnion",
379 (GBoxedCopyFunc) g_memdup, /* Won't work */
380 (GBoxedFreeFunc) g_free);
384 void foo_test_unsigned (unsigned int uint)
389 foo_test_string_array (char **array)
395 * @r1: (inout): add to this rect
396 * @r2: source rectangle
399 foo_rectangle_add(FooRectangle *r1, const FooRectangle *r2)
412 foo_hidden_copy (const FooHidden *boxed)
414 return (FooHidden *)g_memdup (boxed, sizeof (FooHidden));
418 foo_hidden_free (FooHidden *boxed)
420 g_slice_free (FooHidden, boxed);
424 foo_hidden_get_type (void)
426 static GType our_type = 0;
429 our_type = g_boxed_type_register_static ("FooHidden",
430 (GBoxedCopyFunc) foo_hidden_copy,
431 (GBoxedFreeFunc) foo_hidden_free);
436 foo_error_get_type (void)
438 static GType etype = 0;
439 if (G_UNLIKELY(etype == 0)) {
440 static const GEnumValue values[] = {
441 { FOO_ERROR_GOOD, "FOO_ERROR_GOOD", "good" },
442 { FOO_ERROR_BAD, "FOO_ERROR_BAD", "bad" },
443 { FOO_ERROR_UGLY, "FOO_ERROR_UGLY", "ugly" },
446 etype = g_enum_register_static (g_intern_static_string ("FooError"), values);
452 foo_error_quark (void)
454 return g_quark_from_static_string ("foo-error-quark");
458 foo_some_variant (guint x, va_list args)
462 /* This setup of a totally hidden parent class matches
463 * http://bugzilla.gnome.org/show_bug.cgi?id=561360
465 #define FOO_TYPE_TILE_HANDLER (foo_tile_handler_get_type ())
466 #define FOO_TILE_HANDLER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), FOO_TYPE_TILE_HANDLER, FooTileHandler))
467 #define FOO_IS_TILE_HANDLER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), FOO_TYPE_TILE_HANDLER))
469 struct _FooTileHandler
471 FooObject parent_instance;
475 struct _FooTileHandlerClass
477 FooObjectClass parent_class;
480 typedef struct _FooTileHandler FooTileHandler;
481 typedef struct _FooTileHandlerClass FooTileHandlerClass;
483 G_DEFINE_TYPE(FooTileHandler, foo_tile_handler, FOO_TYPE_OBJECT);
486 foo_tile_handler_class_init (FooTileHandlerClass *klass)
492 foo_tile_handler_init (FooTileHandler *object)
499 FooTileHandler parent_instance;
502 struct _FooBufferClass
504 FooTileHandlerClass parent_class;
507 G_DEFINE_TYPE(FooBuffer, foo_buffer, FOO_TYPE_TILE_HANDLER);
510 foo_buffer_class_init (FooBufferClass *klass)
516 foo_buffer_init (FooBuffer *object)
522 foo_buffer_some_method (FooBuffer *buffer)