diff options
author | Johan Dahlin <johan@src.gnome.org> | 2004-07-17 16:38:46 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2004-07-17 16:38:46 +0000 |
commit | b889f44c6adeaf10d5e1ae0a2e69ef5ee218ccad (patch) | |
tree | 6db2e280696773afe0d2d54425441ed1abc5ee4b /gobject/pygobject.h | |
parent | 8238d9cc0fce600328f50efa139db1f575058ae8 (diff) | |
download | pygobject-b889f44c6adeaf10d5e1ae0a2e69ef5ee218ccad.tar.gz pygobject-b889f44c6adeaf10d5e1ae0a2e69ef5ee218ccad.tar.xz pygobject-b889f44c6adeaf10d5e1ae0a2e69ef5ee218ccad.zip |
gtk/*.override
* gtk/*.override
* codegen/codegen.py:
* codegen/argtypes.py: Update for enums
* pygtype.c (pyg_value_as_pyobject): Use new enum/flag functions
* pygenum.[ch]: Handle GFlag
* pygflags.[ch]: Handle GFlag
* atk-types.defs: Fix gtype-id for all enums
* gobjectmodule.c (initgobject): Clean up and add convinience macros
* tests/enum.py: New file
* tests/common.py: New file, also stole from gst-python
Diffstat (limited to 'gobject/pygobject.h')
-rw-r--r-- | gobject/pygobject.h | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/gobject/pygobject.h b/gobject/pygobject.h index 594e285..9292cec 100644 --- a/gobject/pygobject.h +++ b/gobject/pygobject.h @@ -29,15 +29,15 @@ typedef struct { gboolean free_on_dealloc; } PyGBoxed; +#define pyg_boxed_get(v,t) ((t *)((PyGBoxed *)(v))->boxed) +#define pyg_boxed_check(v,typecode) (PyObject_TypeCheck(v, &PyGBoxed_Type) && ((PyGBoxed *)(v))->gtype == typecode) + typedef struct { PyObject_HEAD gpointer pointer; GType gtype; } PyGPointer; -#define pyg_boxed_get(v,t) ((t *)((PyGBoxed *)(v))->boxed) -#define pyg_boxed_check(v,typecode) (PyObject_TypeCheck(v, &PyGBoxed_Type) && ((PyGBoxed *)(v))->gtype == typecode) - #define pyg_pointer_get(v,t) ((t *)((PyGPointer *)(v))->pointer) #define pyg_pointer_check(v,typecode) (PyObject_TypeCheck(v, &PyGPointer_Type) && ((PyGPointer *)(v))->gtype == typecode) @@ -117,13 +117,25 @@ struct _PyGObject_Functions { GParameter *params, guint *nparams, PyObject **py_args); - PyObject* (* param_gvalue_as_pyobject) (const GValue* gvalue, + PyObject *(* param_gvalue_as_pyobject) (const GValue* gvalue, gboolean copy_boxed, const GParamSpec* pspec); int (* gvalue_from_param_pyobject) (GValue* value, PyObject* py_obj, const GParamSpec* pspec); - + PyTypeObject *enum_type; + PyObject *(*enum_add)(PyObject *module, + const char *typename, + const char *strip_prefix, + GType gtype); + PyObject* (*enum_from_gtype)(GType gtype, int value); + + PyTypeObject *flags_type; + PyObject *(*flags_add)(PyObject *module, + const char *typename, + const char *strip_prefix, + GType gtype); + PyObject* (*flags_from_gtype)(GType gtype, int value); }; #ifndef _INSIDE_PYGOBJECT_ @@ -168,6 +180,13 @@ struct _PyGObject_Functions *_PyGObject_API; #define pyg_parse_constructor_args (_PyGObject_API->parse_constructor_args) #define pyg_param_gvalue_from_pyobject (_PyGObject_API->value_from_pyobject) #define pyg_param_gvalue_as_pyobject (_PyGObject_API->value_as_pyobject) +#define PyGEnum_Type (*_PyGObject_API->enum_type) +#define pyg_enum_add (_PyGObject_API->enum_add) +#define pyg_enum_from_gtype (_PyGObject_API->enum_from_gtype) +#define PyGFlags_Type (*_PyGObject_API->flags_type) +#define pyg_flags_add (_PyGObject_API->flags_add) +#define pyg_flags_from_gtype (_PyGObject_API->flags_from_gtype) + #define pyg_block_threads() G_STMT_START { \ if (_PyGObject_API->block_threads != NULL) \ (* _PyGObject_API->block_threads)(); \ |