[pygobject] convert to using PYGLIB_DEFINE_TYPE for module objects
- From: Tomeu Vizoso <tomeuv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pygobject] convert to using PYGLIB_DEFINE_TYPE for module objects
- Date: Wed, 25 Aug 2010 09:00:28 +0000 (UTC)
commit 1ff83a2ccb7301c8f675913f1c4f6118ea50b9c7
Author: John (J5) Palmieri <johnp redhat com>
Date: Mon Aug 16 21:14:27 2010 -0400
convert to using PYGLIB_DEFINE_TYPE for module objects
https://bugzilla.gnome.org/show_bug.cgi?id=615872
gi/pygi-boxed.c | 43 ++-----------
gi/pygi-info.c | 171 ++++++++++++++++++++------------------------------
gi/pygi-repository.c | 39 ++---------
gi/pygi-struct.c | 45 ++-----------
4 files changed, 88 insertions(+), 210 deletions(-)
---
diff --git a/gi/pygi-boxed.c b/gi/pygi-boxed.c
index 5edd25e..2fd446c 100644
--- a/gi/pygi-boxed.c
+++ b/gi/pygi-boxed.c
@@ -45,7 +45,7 @@ _boxed_dealloc (PyGIBoxed *self)
}
}
- ( (PyGObject *) self)->ob_type->tp_free ( (PyObject *) self);
+ Py_TYPE( (PyGObject *) self)->tp_free ( (PyObject *) self);
}
void *
@@ -133,41 +133,7 @@ _boxed_init (PyObject *self,
return 0;
}
-
-PyTypeObject PyGIBoxed_Type = {
- PyObject_HEAD_INIT (NULL)
- 0,
- "gi.Boxed", /* tp_name */
- sizeof (PyGIBoxed), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) _boxed_dealloc, /* tp_dealloc */
- (printfunc) NULL, /* tp_print */
- (getattrfunc) NULL, /* tp_getattr */
- (setattrfunc) NULL, /* tp_setattr */
- (cmpfunc) NULL, /* tp_compare */
- (reprfunc) NULL, /* tp_repr */
- NULL, /* tp_as_number */
- NULL, /* tp_as_sequence */
- NULL, /* tp_as_mapping */
- (hashfunc) NULL, /* tp_hash */
- (ternaryfunc) NULL, /* tp_call */
- (reprfunc) NULL, /* tp_str */
- (getattrofunc) NULL, /* tp_getattro */
- (setattrofunc) NULL, /* tp_setattro */
- NULL, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
- NULL, /* tp_doc */
- (traverseproc) NULL, /* tp_traverse */
- (inquiry) NULL, /* tp_clear */
- (richcmpfunc) NULL, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) NULL, /* tp_iter */
- (iternextfunc) NULL, /* tp_iternext */
- NULL, /* tp_methods */
- NULL, /* tp_members */
- NULL, /* tp_getset */
- (PyTypeObject *) NULL, /* tp_base */
-};
+PYGLIB_DEFINE_TYPE("gi.Boxed", PyGIBoxed_Type, PyGIBoxed);
PyObject *
_pygi_boxed_new (PyTypeObject *type,
@@ -202,10 +168,13 @@ _pygi_boxed_new (PyTypeObject *type,
void
_pygi_boxed_register_types (PyObject *m)
{
- PyGIBoxed_Type.ob_type = &PyType_Type;
+ Py_TYPE(&PyGIBoxed_Type) = &PyType_Type;
PyGIBoxed_Type.tp_base = &PyGBoxed_Type;
PyGIBoxed_Type.tp_new = (newfunc) _boxed_new;
PyGIBoxed_Type.tp_init = (initproc) _boxed_init;
+ PyGIBoxed_Type.tp_dealloc = (destructor) _boxed_dealloc;
+ PyGIBoxed_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
+
if (PyType_Ready (&PyGIBoxed_Type))
return;
if (PyModule_AddObject (m, "Boxed", (PyObject *) &PyGIBoxed_Type))
diff --git a/gi/pygi-info.c b/gi/pygi-info.c
index 1a42784..46b9785 100644
--- a/gi/pygi-info.c
+++ b/gi/pygi-info.c
@@ -26,44 +26,6 @@
#include <pygobject.h>
#include <pyglib-python-compat.h>
-#define _PyGI_DEFINE_INFO_TYPE(name, cname, base) \
-static PyMethodDef _Py##cname##_methods[]; \
-PyTypeObject Py##cname##_Type = { \
- PyObject_HEAD_INIT(NULL) \
- 0, \
- "gi." name, /* tp_name */ \
- sizeof(PyGIBaseInfo), /* tp_basicsize */ \
- 0, /* tp_itemsize */ \
- (destructor)NULL, /* tp_dealloc */ \
- (printfunc)NULL, /* tp_print */ \
- (getattrfunc)NULL, /* tp_getattr */ \
- (setattrfunc)NULL, /* tp_setattr */ \
- (cmpfunc)NULL, /* tp_compare */ \
- (reprfunc)NULL, /* tp_repr */ \
- NULL, /* tp_as_number */ \
- NULL, /* tp_as_sequence */ \
- NULL, /* tp_as_mapping */ \
- (hashfunc)NULL, /* tp_hash */ \
- (ternaryfunc)NULL, /* tp_call */ \
- (reprfunc)NULL, /* tp_str */ \
- (getattrofunc)NULL, /* tp_getattro */ \
- (setattrofunc)NULL, /* tp_setattro */ \
- NULL, /* tp_as_buffer */ \
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ \
- NULL, /* tp_doc */ \
- (traverseproc)NULL, /* tp_traverse */ \
- (inquiry)NULL, /* tp_clear */ \
- (richcmpfunc)NULL, /* tp_richcompare */ \
- offsetof(PyGIBaseInfo, inst_weakreflist), /* tp_weaklistoffset */ \
- (getiterfunc)NULL, /* tp_iter */ \
- (iternextfunc)NULL, /* tp_iternext */ \
- _Py##cname##_methods, /* tp_methods */ \
- NULL, /* tp_members */ \
- NULL, /* tp_getset */ \
- &base /* tp_base */ \
-}
-
-
/* BaseInfo */
static void
@@ -75,7 +37,7 @@ _base_info_dealloc (PyGIBaseInfo *self)
g_base_info_unref (self->info);
- self->ob_type->tp_free ( (PyObject *) self);
+ Py_TYPE( (PyObject *) self)->tp_free ( (PyObject *) self);
}
static int
@@ -90,45 +52,14 @@ static PyObject *
_base_info_repr (PyGIBaseInfo *self)
{
return PYGLIB_PyUnicode_FromFormat ("<%s object (%s) at 0x%p>",
- self->ob_type->tp_name,
+ Py_TYPE( (PyObject *) self)->tp_name,
g_base_info_get_name (self->info),
(void *) self);
}
static PyMethodDef _PyGIBaseInfo_methods[];
-PyTypeObject PyGIBaseInfo_Type = {
- PyObject_HEAD_INIT (NULL)
- 0,
- "gi.BaseInfo", /* tp_name */
- sizeof (PyGIBaseInfo), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) _base_info_dealloc, /* tp_dealloc */
- (printfunc) NULL, /* tp_print */
- (getattrfunc) NULL, /* tp_getattr */
- (setattrfunc) NULL, /* tp_setattr */
- (cmpfunc) NULL, /* tp_compare */
- (reprfunc) _base_info_repr, /* tp_repr */
- NULL, /* tp_as_number */
- NULL, /* tp_as_sequence */
- NULL, /* tp_as_mapping */
- (hashfunc) NULL, /* tp_hash */
- (ternaryfunc) NULL, /* tp_call */
- (reprfunc) NULL, /* tp_str */
- (getattrofunc) NULL, /* tp_getattro */
- (setattrofunc) NULL, /* tp_setattro */
- NULL, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE |
- Py_TPFLAGS_HAVE_GC, /* tp_flags */
- NULL, /* tp_doc */
- (traverseproc) _base_info_traverse, /* tp_traverse */
- (inquiry) NULL, /* tp_clear */
- (richcmpfunc) NULL, /* tp_richcompare */
- offsetof (PyGIBaseInfo, inst_weakreflist), /* tp_weaklistoffset */
- (getiterfunc) NULL, /* tp_iter */
- (iternextfunc) NULL, /* tp_iternext */
- _PyGIBaseInfo_methods, /* tp_methods */
-};
+PYGLIB_DEFINE_TYPE("gi.BaseInfo", PyGIBaseInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_base_info_get_name (PyGIBaseInfo *self)
@@ -258,7 +189,7 @@ _pygi_object_get_gi_info (PyObject *object,
}
if (!PyObject_TypeCheck (py_info, type)) {
PyErr_Format (PyExc_TypeError, "attribute '__info__' must be %s, not %s",
- type->tp_name, py_info->ob_type->tp_name);
+ type->tp_name, Py_TYPE(&py_info)->tp_name);
goto out;
}
@@ -273,7 +204,7 @@ out:
/* CallableInfo */
-_PyGI_DEFINE_INFO_TYPE ("CallableInfo", GICallableInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.CallableInfo", PyGICallableInfo_Type, PyGIBaseInfo);
static PyMethodDef _PyGICallableInfo_methods[] = {
{ NULL, NULL, 0 }
@@ -281,7 +212,7 @@ static PyMethodDef _PyGICallableInfo_methods[] = {
/* FunctionInfo */
-_PyGI_DEFINE_INFO_TYPE ("FunctionInfo", GIFunctionInfo, PyGICallableInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.FunctionInfo", PyGIFunctionInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_function_info_is_constructor (PyGIBaseInfo *self)
@@ -470,7 +401,7 @@ static PyMethodDef _PyGIFunctionInfo_methods[] = {
/* RegisteredTypeInfo */
-_PyGI_DEFINE_INFO_TYPE ("RegisteredTypeInfo", GIRegisteredTypeInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.RegisteredTypeInfo", PyGIRegisteredTypeInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_registered_type_info_get_g_type (PyGIBaseInfo *self)
@@ -489,7 +420,7 @@ static PyMethodDef _PyGIRegisteredTypeInfo_methods[] = {
/* GIStructInfo */
-_PyGI_DEFINE_INFO_TYPE ("StructInfo", GIStructInfo, PyGIRegisteredTypeInfo_Type);
+PYGLIB_DEFINE_TYPE ("StructInfo", PyGIStructInfo_Type, PyGIBaseInfo);
static PyObject *
_get_fields (PyGIBaseInfo *self, GIInfoType info_type)
@@ -835,7 +766,7 @@ pygi_g_struct_info_is_simple (GIStructInfo *struct_info)
/* EnumInfo */
-_PyGI_DEFINE_INFO_TYPE ("EnumInfo", GIEnumInfo, PyGIRegisteredTypeInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.EnumInfo", PyGIEnumInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_enum_info_get_values (PyGIBaseInfo *self)
@@ -880,7 +811,7 @@ static PyMethodDef _PyGIEnumInfo_methods[] = {
/* ObjectInfo */
-_PyGI_DEFINE_INFO_TYPE ("ObjectInfo", GIObjectInfo, PyGIRegisteredTypeInfo_Type);
+PYGLIB_DEFINE_TYPE ("ObjectInfo", PyGIObjectInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_object_info_get_parent (PyGIBaseInfo *self)
@@ -973,7 +904,7 @@ static PyMethodDef _PyGIObjectInfo_methods[] = {
/* GIInterfaceInfo */
-_PyGI_DEFINE_INFO_TYPE ("InterfaceInfo", GIInterfaceInfo, PyGIRegisteredTypeInfo_Type);
+PYGLIB_DEFINE_TYPE ("InterfaceInfo", PyGIInterfaceInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_interface_info_get_methods (PyGIBaseInfo *self)
@@ -1031,7 +962,7 @@ static PyMethodDef _PyGIInterfaceInfo_methods[] = {
};
/* GIConstantInfo */
-_PyGI_DEFINE_INFO_TYPE ("ConstantInfo", GIConstantInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.ConstantInfo", PyGIConstantInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_constant_info_get_value (PyGIBaseInfo *self)
@@ -1060,7 +991,7 @@ static PyMethodDef _PyGIConstantInfo_methods[] = {
};
/* GIValueInfo */
-_PyGI_DEFINE_INFO_TYPE ("ValueInfo", GIValueInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.ValueInfo", PyGIValueInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_value_info_get_value (PyGIBaseInfo *self)
@@ -1080,7 +1011,7 @@ static PyMethodDef _PyGIValueInfo_methods[] = {
/* GIFieldInfo */
-_PyGI_DEFINE_INFO_TYPE ("FieldInfo", GIFieldInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.FieldInfo", PyGIFieldInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_field_info_get_value (PyGIBaseInfo *self,
@@ -1336,14 +1267,14 @@ static PyMethodDef _PyGIFieldInfo_methods[] = {
/* GIUnresolvedInfo */
-_PyGI_DEFINE_INFO_TYPE ("UnresolvedInfo", GIUnresolvedInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.UnresolvedInfo", PyGIUnresolvedInfo_Type, PyGIBaseInfo);
static PyMethodDef _PyGIUnresolvedInfo_methods[] = {
{ NULL, NULL, 0 }
};
/* GIVFuncInfo */
-_PyGI_DEFINE_INFO_TYPE ("VFuncInfo", GIVFuncInfo, PyGIBaseInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.VFuncInfo", PyGIVFuncInfo_Type, PyGIBaseInfo);
static PyMethodDef _PyGIVFuncInfo_methods[] = {
{ NULL, NULL, 0 }
@@ -1351,7 +1282,7 @@ static PyMethodDef _PyGIVFuncInfo_methods[] = {
/* GIUnionInfo */
-_PyGI_DEFINE_INFO_TYPE ("UnionInfo", GIUnionInfo, PyGIRegisteredTypeInfo_Type);
+PYGLIB_DEFINE_TYPE ("gi.UnionInfo", PyGIUnionInfo_Type, PyGIBaseInfo);
static PyObject *
_wrap_g_union_info_get_fields (PyGIBaseInfo *self)
@@ -1461,27 +1392,61 @@ _pygi_g_base_info_get_fullname (GIBaseInfo *info)
void
_pygi_info_register_types (PyObject *m)
{
-#define _PyGI_REGISTER_TYPE(m, type, name) \
- type.ob_type = &PyType_Type; \
+#define _PyGI_REGISTER_TYPE(m, type, cname, base) \
+ Py_TYPE(&type) = &PyType_Type; \
+ type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE); \
+ type.tp_weaklistoffset = offsetof(PyGIBaseInfo, inst_weakreflist); \
+ type.tp_methods = _PyGI##cname##_methods; \
+ type.tp_base = &base; \
if (PyType_Ready(&type)) \
return; \
- if (PyModule_AddObject(m, name, (PyObject *)&type)) \
+ if (PyModule_AddObject(m, #cname, (PyObject *)&type)) \
return
- _PyGI_REGISTER_TYPE (m, PyGIBaseInfo_Type, "BaseInfo");
- _PyGI_REGISTER_TYPE (m, PyGIUnresolvedInfo_Type, "UnresolvedInfo");
- _PyGI_REGISTER_TYPE (m, PyGICallableInfo_Type, "CallableInfo");
- _PyGI_REGISTER_TYPE (m, PyGIFunctionInfo_Type, "FunctionInfo");
- _PyGI_REGISTER_TYPE (m, PyGIRegisteredTypeInfo_Type, "RegisteredTypeInfo");
- _PyGI_REGISTER_TYPE (m, PyGIStructInfo_Type, "StructInfo");
- _PyGI_REGISTER_TYPE (m, PyGIEnumInfo_Type, "EnumInfo");
- _PyGI_REGISTER_TYPE (m, PyGIObjectInfo_Type, "ObjectInfo");
- _PyGI_REGISTER_TYPE (m, PyGIInterfaceInfo_Type, "InterfaceInfo");
- _PyGI_REGISTER_TYPE (m, PyGIConstantInfo_Type, "ConstantInfo");
- _PyGI_REGISTER_TYPE (m, PyGIValueInfo_Type, "ValueInfo");
- _PyGI_REGISTER_TYPE (m, PyGIFieldInfo_Type, "FieldInfo");
- _PyGI_REGISTER_TYPE (m, PyGIVFuncInfo_Type, "VFuncInfo");
- _PyGI_REGISTER_TYPE (m, PyGIUnionInfo_Type, "UnionInfo");
+ Py_TYPE(&PyGIBaseInfo_Type) = &PyType_Type;
+
+ PyGIBaseInfo_Type.tp_dealloc = (destructor) _base_info_dealloc;
+ PyGIBaseInfo_Type.tp_repr = (reprfunc) _base_info_repr;
+ PyGIBaseInfo_Type.tp_flags = (Py_TPFLAGS_DEFAULT |
+ Py_TPFLAGS_BASETYPE |
+ Py_TPFLAGS_HAVE_GC);
+ PyGIBaseInfo_Type.tp_traverse = (traverseproc) _base_info_traverse;
+ PyGIBaseInfo_Type.tp_weaklistoffset = offsetof(PyGIBaseInfo, inst_weakreflist);
+ PyGIBaseInfo_Type.tp_methods = _PyGIBaseInfo_methods;
+
+ if (PyType_Ready(&PyGIBaseInfo_Type))
+ return;
+
+ if (PyModule_AddObject(m, "BaseInfo", (PyObject *)&PyGIBaseInfo_Type))
+ return
+
+ _PyGI_REGISTER_TYPE (m, PyGIUnresolvedInfo_Type, UnresolvedInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGICallableInfo_Type, CallableInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIFunctionInfo_Type, FunctionInfo,
+ PyGICallableInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIRegisteredTypeInfo_Type, RegisteredTypeInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIStructInfo_Type, StructInfo,
+ PyGIRegisteredTypeInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIEnumInfo_Type, EnumInfo,
+ PyGIRegisteredTypeInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIObjectInfo_Type, ObjectInfo,
+ PyGIRegisteredTypeInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIInterfaceInfo_Type, InterfaceInfo,
+ PyGIRegisteredTypeInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIConstantInfo_Type, ConstantInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIValueInfo_Type, ValueInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIFieldInfo_Type, FieldInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIVFuncInfo_Type, VFuncInfo,
+ PyGIBaseInfo_Type);
+ _PyGI_REGISTER_TYPE (m, PyGIUnionInfo_Type, UnionInfo,
+ PyGIRegisteredTypeInfo_Type);
+
#undef _PyGI_REGISTER_TYPE
}
diff --git a/gi/pygi-repository.c b/gi/pygi-repository.c
index 79727ed..9b22eae 100644
--- a/gi/pygi-repository.c
+++ b/gi/pygi-repository.c
@@ -29,37 +29,7 @@ PyObject *PyGIRepositoryError;
static PyMethodDef _PyGIRepository_methods[];
-PyTypeObject PyGIRepository_Type = {
- PyObject_HEAD_INIT (NULL)
- 0,
- "gi.Repository", /* tp_name */
- sizeof (PyGIRepository), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) NULL, /* tp_dealloc */
- (printfunc) NULL, /* tp_print */
- (getattrfunc) NULL, /* tp_getattr */
- (setattrfunc) NULL, /* tp_setattr */
- (cmpfunc) NULL, /* tp_compare */
- (reprfunc) NULL, /* tp_repr */
- NULL, /* tp_as_number */
- NULL, /* tp_as_sequence */
- NULL, /* tp_as_mapping */
- (hashfunc) NULL, /* tp_hash */
- (ternaryfunc) NULL, /* tp_call */
- (reprfunc) NULL, /* tp_str */
- (getattrofunc) NULL, /* tp_getattro */
- (setattrofunc) NULL, /* tp_setattro */
- NULL, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- NULL, /* tp_doc */
- (traverseproc) NULL, /* tp_traverse */
- (inquiry) NULL, /* tp_clear */
- (richcmpfunc) NULL, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) NULL, /* tp_iter */
- (iternextfunc) NULL, /* tp_iternext */
- _PyGIRepository_methods, /* tp_methods */
-};
+PYGLIB_DEFINE_TYPE("gi.Repository", PyGIRepository_Type, PyGIRepository);
static PyObject *
_wrap_g_irepository_enumerate_versions (PyGIRepository *self,
@@ -278,10 +248,15 @@ static PyMethodDef _PyGIRepository_methods[] = {
void
_pygi_repository_register_types (PyObject *m)
{
- PyGIRepository_Type.ob_type = &PyType_Type;
+ Py_TYPE(&PyGIRepository_Type) = &PyType_Type;
+
+ PyGIRepository_Type.tp_flags = Py_TPFLAGS_DEFAULT;
+ PyGIRepository_Type.tp_methods = _PyGIRepository_methods;
+
if (PyType_Ready (&PyGIRepository_Type)) {
return;
}
+
if (PyModule_AddObject (m, "Repository", (PyObject *) &PyGIRepository_Type)) {
return;
}
diff --git a/gi/pygi-struct.c b/gi/pygi-struct.c
index ffdf501..caa0ffb 100644
--- a/gi/pygi-struct.c
+++ b/gi/pygi-struct.c
@@ -31,7 +31,7 @@ static void
_struct_dealloc (PyGIStruct *self)
{
GIBaseInfo *info = _pygi_object_get_gi_info (
- (PyObject *) ( (PyObject *) self)->ob_type,
+ Py_TYPE((PyObject *) self),
&PyGIStructInfo_Type);
PyObject_GC_UnTrack ( (PyObject *) self);
@@ -46,7 +46,7 @@ _struct_dealloc (PyGIStruct *self)
g_base_info_unref (info);
- ( (PyGPointer *) self)->ob_type->tp_free ( (PyObject *) self);
+ Py_TYPE( (PyGPointer *) self )->tp_free ( (PyObject *) self);
}
static PyObject *
@@ -100,41 +100,7 @@ _struct_init (PyObject *self,
return 0;
}
-
-PyTypeObject PyGIStruct_Type = {
- PyObject_HEAD_INIT (NULL)
- 0,
- "gi.Struct", /* tp_name */
- sizeof (PyGIStruct), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor) _struct_dealloc, /* tp_dealloc */
- (printfunc) NULL, /* tp_print */
- (getattrfunc) NULL, /* tp_getattr */
- (setattrfunc) NULL, /* tp_setattr */
- (cmpfunc) NULL, /* tp_compare */
- (reprfunc) NULL, /* tp_repr */
- NULL, /* tp_as_number */
- NULL, /* tp_as_sequence */
- NULL, /* tp_as_mapping */
- (hashfunc) NULL, /* tp_hash */
- (ternaryfunc) NULL, /* tp_call */
- (reprfunc) NULL, /* tp_str */
- (getattrofunc) NULL, /* tp_getattro */
- (setattrofunc) NULL, /* tp_setattro */
- NULL, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */
- NULL, /* tp_doc */
- (traverseproc) NULL, /* tp_traverse */
- (inquiry) NULL, /* tp_clear */
- (richcmpfunc) NULL, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
- (getiterfunc) NULL, /* tp_iter */
- (iternextfunc) NULL, /* tp_iternext */
- NULL, /* tp_methods */
- NULL, /* tp_members */
- NULL, /* tp_getset */
- (PyTypeObject *) NULL, /* tp_base */
-};
+PYGLIB_DEFINE_TYPE("gi.Struct", PyGIStruct_Type, PyGIStruct);
PyObject *
_pygi_struct_new (PyTypeObject *type,
@@ -166,10 +132,13 @@ _pygi_struct_new (PyTypeObject *type,
void
_pygi_struct_register_types (PyObject *m)
{
- PyGIStruct_Type.ob_type = &PyType_Type;
+ Py_TYPE(&PyGIStruct_Type) = &PyType_Type;
PyGIStruct_Type.tp_base = &PyGPointer_Type;
PyGIStruct_Type.tp_new = (newfunc) _struct_new;
PyGIStruct_Type.tp_init = (initproc) _struct_init;
+ PyGIStruct_Type.tp_dealloc = (destructor) _struct_dealloc;
+ PyGIStruct_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
+
if (PyType_Ready (&PyGIStruct_Type))
return;
if (PyModule_AddObject (m, "Struct", (PyObject *) &PyGIStruct_Type))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]