All pastes #434298 Raw Edit

Someone

public c v1 · immutable
·published 2007-04-11 10:30 UTC
rendered paste body
// so.c// gcc -Wall `pkg-config --libs --cflags glib-2.0 gobject-2.0` -o so so.c#include <glib-object.h>/* prototypes */#define SIMPLE_OBJECT_TYPE (simple_object_get_type ())#define SIMPLE_OBJECT (obj)  (G_TYPE_CHECK_INSTANCE_CAST ((obj), \			      SIMPLE_OBJECT_TYPE, 		 \			      SimpleObject))GType simple_object_get_type ();typedef struct _SimpleObject SimpleObject;typedef struct _SimpleObjectClass SimpleObjectClass;typedef struct _SimpleObjectPrivate SimpleObjectPrivate;struct _SimpleObject {	GObject              parent;	SimpleObjectPrivate *priv;};struct _SimpleObjectClass {	GObjectClass parent_class;};/* ************* normally in a c file ************************ **/struct _SimpleObjectPrivate {	int some_private_var;};G_DEFINE_TYPE (SimpleObject, 	       simple_object, 	       G_TYPE_OBJECT);static voidsimple_object_class_init (SimpleObjectClass *klass){	GObjectClass *gobject_class = G_OBJECT_CLASS (klass);	SimpleObjectClass *so_class;	g_type_class_add_private (klass, sizeof (SimpleObjectPrivate));}static voidsimple_object_init (SimpleObject *so){	so->priv = G_TYPE_INSTANCE_GET_PRIVATE (so, 						SIMPLE_OBJECT_TYPE,						SimpleObjectPrivate);}//NOTE: normally we would do properties for thatvoidsimple_object_set_foo (SimpleObject *so, int foo){	SimpleObjectPrivate *priv;	priv = so->priv;	priv->some_private_var = foo;}intsimple_object_get_foo (SimpleObject *so){	SimpleObjectPrivate *priv;	priv = so->priv;	return priv->some_private_var;}intmain (int argc, char **argv){	SimpleObject *obj;	g_type_init ();	obj = g_object_new (SIMPLE_OBJECT_TYPE, NULL);		//do something with it	simple_object_set_foo (obj, 42);	g_print ("Foo: %d\n", simple_object_get_foo (obj));	g_object_unref (obj);	return 0;}