aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/libpyside/pysideqflags.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/libpyside/pysideqflags.cpp')
-rw-r--r--sources/pyside2/libpyside/pysideqflags.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/sources/pyside2/libpyside/pysideqflags.cpp b/sources/pyside2/libpyside/pysideqflags.cpp
index fd0ed005f..b141ce157 100644
--- a/sources/pyside2/libpyside/pysideqflags.cpp
+++ b/sources/pyside2/libpyside/pysideqflags.cpp
@@ -86,6 +86,11 @@ extern "C" {
return PyLong_AsLong(number);
}
+ static PyObject *qflag_int(PyObject *self)
+ {
+ return PyLong_FromLong(reinterpret_cast<PySideQFlagsObject*>(self)->ob_value);
+ }
+
PyObject *PySideQFlagsRichCompare(PyObject *self, PyObject *other, int op)
{
int result = 0;
@@ -146,13 +151,14 @@ namespace QFlags
{Py_nb_and, 0},
{Py_nb_xor, 0},
{Py_nb_or, 0},
- {Py_nb_int, 0},
+ {Py_nb_int, reinterpret_cast<void*>(qflag_int)},
+ {Py_nb_index, reinterpret_cast<void*>(qflag_int)},
#ifndef IS_PY3K
{Py_nb_long, 0},
#endif
{Py_tp_new, (void *)PySideQFlagsNew},
{Py_tp_richcompare, (void *)PySideQFlagsRichCompare},
- {Py_tp_dealloc, (void *)object_dealloc},
+ {Py_tp_dealloc, (void *)Sbk_object_dealloc},
{0, 0}
};
static PyType_Spec SbkNewQFlagsType_spec = {
@@ -168,19 +174,19 @@ namespace QFlags
char qualname[200];
// PYSIDE-747: Here we insert now the full class name.
strcpy(qualname, name);
- // Careful: PyType_FromSpec does not allocate the string.
- PyType_Spec *newspec = new PyType_Spec;
- newspec->name = strdup(qualname);
- newspec->basicsize = SbkNewQFlagsType_spec.basicsize;
- newspec->itemsize = SbkNewQFlagsType_spec.itemsize;
- newspec->flags = SbkNewQFlagsType_spec.flags;
+ // Careful: SbkType_FromSpec does not allocate the string.
+ PyType_Spec newspec;
+ newspec.name = strdup(qualname);
+ newspec.basicsize = SbkNewQFlagsType_spec.basicsize;
+ newspec.itemsize = SbkNewQFlagsType_spec.itemsize;
+ newspec.flags = SbkNewQFlagsType_spec.flags;
int idx = -1;
while (numberMethods[++idx].slot) {
assert(SbkNewQFlagsType_slots[idx].slot == numberMethods[idx].slot);
SbkNewQFlagsType_slots[idx].pfunc = numberMethods[idx].pfunc;
}
- newspec->slots = SbkNewQFlagsType_spec.slots;
- PyTypeObject *type = (PyTypeObject *)PyType_FromSpec(newspec);
+ newspec.slots = SbkNewQFlagsType_spec.slots;
+ PyTypeObject *type = (PyTypeObject *)SbkType_FromSpec(&newspec);
Py_TYPE(type) = &PyType_Type;
PySideQFlagsType *flagsType = reinterpret_cast<PySideQFlagsType *>(type);