summaryrefslogtreecommitdiffstats
path: root/gobject/pygobject.h
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-06-08 15:49:13 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-06-08 15:49:13 +0000
commite8150173e5f35daeda0e1983beaa29a8ec0dfebf (patch)
treef32879c7db987d370f7e2d300f6698bd888baeed /gobject/pygobject.h
parent4a9a14997dc9d70e8e77a1c37ec3e06a109af300 (diff)
downloadpygobject-e8150173e5f35daeda0e1983beaa29a8ec0dfebf.tar.gz
pygobject-e8150173e5f35daeda0e1983beaa29a8ec0dfebf.tar.xz
pygobject-e8150173e5f35daeda0e1983beaa29a8ec0dfebf.zip
function to register a new boxed type ExtensionClass. (pyg_boxed_new): new
2001-06-08 James Henstridge <james@daa.com.au> * gobjectmodule.c (pyg_register_boxed): function to register a new boxed type ExtensionClass. (pyg_boxed_new): new function to create wrapper instances for a particular boxed type (given its typecode). 2001-06-07 James Henstridge <james@daa.com.au> * pygobject.h (pyg_boxed_get): add prototypes for a PyGBoxed type that will be used for all boxed types in pygtk (well, I can hope :) * gobjectmodule.c (pyg_register_interface): new function to register interfaces with. Makes sure I don't accidentally give the interface a parent class :). Also adds a __gtype__ class attribute similar to GObject classes. May also make interfaces subclasses of GInterface at some point.
Diffstat (limited to 'gobject/pygobject.h')
-rw-r--r--gobject/pygobject.h21
1 files changed, 20 insertions, 1 deletions
diff --git a/gobject/pygobject.h b/gobject/pygobject.h
index 71b3b33..f2d15fe 100644
--- a/gobject/pygobject.h
+++ b/gobject/pygobject.h
@@ -15,9 +15,19 @@ typedef struct {
PyObject *inst_dict; /* the instance dictionary -- must be last */
} PyGObject;
-#define pygobject_get(v) (((PyGObject *)v)->obj)
+#define pygobject_get(v) (((PyGObject *)(v))->obj)
#define pygobject_check(v,base) (ExtensionClassSubclassInstance_Check(v,base))
+typedef struct {
+ PyObject_HEAD
+ gpointer boxed;
+ GType gtype;
+ gboolean free_on_dealloc;
+} PyGBoxed;
+
+#define pyg_boxed_get(v,t) ((t *)((PyGBoxed *)(v))->boxed)
+#define pyg_boxed_check(v,base) (ExtensionClassSubclassInstance_Check(v,base))
+
struct _PyGObject_Functions {
void (* register_class)(PyObject *dict, const gchar *class_name,
GType (* get_type)(void),
@@ -32,6 +42,14 @@ struct _PyGObject_Functions {
int (* to_func)(GValue *value, PyObject *obj));
int (* value_from_pyobject)(GValue *value, PyObject *obj);
PyObject *(* value_as_pyobject)(const GValue *value);
+ void (* register_interface)(PyObject *dict, const gchar *class_name,
+ GType (* get_type)(void),
+ PyExtensionClass *ec);
+
+ void (* register_boxed)(PyObject *dict, const gchar *class_name,
+ GType boxed_type, PyExtensionClass *ec);
+ PyObject *(* boxed_new)(GType boxed_type, gpointer boxed,
+ gboolean copy_boxed, gboolean own_ref);
};
#ifndef _INSIDE_PYGOBJECT_
@@ -51,6 +69,7 @@ struct _PyGObject_Functions *_PyGObject_API;
#define pyg_boxed_register (_PyGObject_API->boxed_register)
#define pyg_value_from_pyobject (_PyGObject_API->value_from_pyobject)
#define pyg_value_as_pyobject (_PyGObject_API->value_as_pyobject)
+#define pyg_register_interface (_PyGObject_API->register_interface)
#define init_pygobject() { \
PyObject *gobject = PyImport_ImportModule("gobject"); \