提交 71521741 authored 作者: Olivier Delalleau's avatar Olivier Delalleau

Proper C implementation for the generic type

上级 a6ea5b1e
......@@ -422,9 +422,14 @@ class Generic(SingletonType):
PyObject* %(name)s;
""" % locals()
def c_init(self, name, sub):
return """
%(name)s = NULL;
""" % locals()
def c_extract(self, name, sub):
return """
Py_XINCREF(py_%(name)s);
Py_INCREF(py_%(name)s);
%(name)s = py_%(name)s;
""" % locals()
......@@ -435,9 +440,10 @@ class Generic(SingletonType):
def c_sync(self, name, sub):
return """
Py_XDECREF(py_%(name)s);
py_%(name)s = %(name)s;
Py_XINCREF(py_%(name)s);
assert(py_%(name)s->ob_refcnt > 1);
Py_DECREF(py_%(name)s);
py_%(name)s = %(name)s ? %(name)s : Py_None;
Py_INCREF(py_%(name)s);
""" % locals()
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论