Commit 26a6299a authored by Stefan Behnel's avatar Stefan Behnel

minor code cleanups in metaclass utility code, fix compiler warning about...

minor code cleanups in metaclass utility code, fix compiler warning about unused function __Pyx_Py3MetaclassGet()
parent c088e975
...@@ -6006,6 +6006,7 @@ class PyClassMetaclassNode(ExprNode): ...@@ -6006,6 +6006,7 @@ class PyClassMetaclassNode(ExprNode):
return True return True
def generate_result_code(self, code): def generate_result_code(self, code):
code.globalstate.use_utility_code(get_py3_metaclass_utility_code)
code.putln( code.putln(
"%s = __Pyx_Py3MetaclassGet(%s, %s); %s" % ( "%s = __Pyx_Py3MetaclassGet(%s, %s); %s" % (
self.result(), self.result(),
...@@ -9746,14 +9747,12 @@ requires = [find_py2_metaclass_utility_code]) ...@@ -9746,14 +9747,12 @@ requires = [find_py2_metaclass_utility_code])
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
create_py3class_utility_code = UtilityCode( get_py3_metaclass_utility_code = UtilityCode(
proto = """ proto = """
static PyObject *__Pyx_Py3MetaclassGet(PyObject *bases, PyObject *mkw); /*proto*/ static PyObject *__Pyx_Py3MetaclassGet(PyObject *bases, PyObject *mkw); /*proto*/
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *mkw, PyObject *modname, PyObject *doc); /*proto*/
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw); /*proto*/
""", """,
impl = """ impl = """
PyObject *__Pyx_Py3MetaclassGet(PyObject *bases, PyObject *mkw) { static PyObject *__Pyx_Py3MetaclassGet(PyObject *bases, PyObject *mkw) {
PyObject *metaclass = PyDict_GetItemString(mkw, "metaclass"); PyObject *metaclass = PyDict_GetItemString(mkw, "metaclass");
if (metaclass) { if (metaclass) {
Py_INCREF(metaclass); Py_INCREF(metaclass);
...@@ -9765,9 +9764,17 @@ PyObject *__Pyx_Py3MetaclassGet(PyObject *bases, PyObject *mkw) { ...@@ -9765,9 +9764,17 @@ PyObject *__Pyx_Py3MetaclassGet(PyObject *bases, PyObject *mkw) {
} }
return __Pyx_FindPy2Metaclass(bases); return __Pyx_FindPy2Metaclass(bases);
} }
""",
requires = [find_py2_metaclass_utility_code])
PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *mkw, create_py3class_utility_code = UtilityCode(
PyObject *modname, PyObject *doc) { proto = """
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name, PyObject *mkw, PyObject *modname, PyObject *doc); /*proto*/
static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw); /*proto*/
""",
impl = """
static PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObject *name,
PyObject *mkw, PyObject *modname, PyObject *doc) {
PyObject *prep; PyObject *prep;
PyObject *pargs; PyObject *pargs;
PyObject *ns; PyObject *ns;
...@@ -9780,19 +9787,12 @@ PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObje ...@@ -9780,19 +9787,12 @@ PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObje
PyErr_Clear(); PyErr_Clear();
return PyDict_New(); return PyDict_New();
} }
pargs = PyTuple_New(2); pargs = PyTuple_Pack(2, name, bases);
if (!pargs) { if (!pargs) {
Py_DECREF(prep); Py_DECREF(prep);
return NULL; return NULL;
} }
Py_INCREF(name);
Py_INCREF(bases);
PyTuple_SET_ITEM(pargs, 0, name);
PyTuple_SET_ITEM(pargs, 1, bases);
ns = PyObject_Call(prep, pargs, mkw); ns = PyObject_Call(prep, pargs, mkw);
Py_DECREF(prep); Py_DECREF(prep);
Py_DECREF(pargs); Py_DECREF(pargs);
...@@ -9837,23 +9837,17 @@ PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObje ...@@ -9837,23 +9837,17 @@ PyObject *__Pyx_Py3MetaclassPrepare(PyObject *metaclass, PyObject *bases, PyObje
return ns; return ns;
} }
PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases, PyObject *dict, PyObject *mkw) { static PyObject *__Pyx_Py3ClassCreate(PyObject *metaclass, PyObject *name, PyObject *bases,
PyObject *dict, PyObject *mkw) {
PyObject *result; PyObject *result;
PyObject *margs = PyTuple_New(3); PyObject *margs = PyTuple_Pack(3, name, bases, dict);
if (!margs) if (!margs)
return NULL; return NULL;
Py_INCREF(name);
Py_INCREF(bases);
Py_INCREF(dict);
PyTuple_SET_ITEM(margs, 0, name);
PyTuple_SET_ITEM(margs, 1, bases);
PyTuple_SET_ITEM(margs, 2, dict);
result = PyObject_Call(metaclass, margs, mkw); result = PyObject_Call(metaclass, margs, mkw);
Py_DECREF(margs); Py_DECREF(margs);
return result; return result;
} }
""", """)
requires = [find_py2_metaclass_utility_code])
#------------------------------------------------------------------------------------ #------------------------------------------------------------------------------------
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment