[Python-gtkextra-commits] CVS: python-gtkextra/codegen generate.py,1.1.1.1,1.2
Status: Beta
Brought to you by:
treeves
From: <pyt...@li...> - 2002-01-04 09:49:17
|
Update of /cvsroot/python-gtkextra/python-gtkextra/codegen In directory usw-pr-cvs1:/tmp/cvs-serv11972 Modified Files: generate.py Log Message: Incorporated the changes from pygtk-0.6.9. Index: generate.py =================================================================== RCS file: /cvsroot/python-gtkextra/python-gtkextra/codegen/generate.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** generate.py 2001/09/15 18:52:32 1.1.1.1 --- generate.py 2002/01/04 09:49:13 1.2 *************** *** 14,18 **** funcDefTmpl = ' { "%s", _wrap_%s, 1 },\n' ! funcLeadTmpl = 'static PyObject *_wrap_%s(PyObject *self, PyObject *args) {\n' enumCodeTmpl = ''' if (PyGtkEnum_get_value(%s, %s, (gint *)&%s)) return NULL;\n''' --- 14,18 ---- funcDefTmpl = ' { "%s", _wrap_%s, 1 },\n' ! funcLeadTmpl = 'static PyObject *\n_wrap_%s(PyObject *self, PyObject *args)\n{\n' enumCodeTmpl = ''' if (PyGtkEnum_get_value(%s, %s, (gint *)&%s)) return NULL;\n''' *************** *** 21,25 **** setVarTmpl = ''' if (py_%s) %s = %s;\n''' ! getTypeTmpl = '''static PyObject *_wrap_%s(PyObject *self, PyObject *args) { if (!PyArg_ParseTuple(args, ":%s")) return NULL; --- 21,25 ---- setVarTmpl = ''' if (py_%s) %s = %s;\n''' ! getTypeTmpl = '''static PyObject *\n_wrap_%s(PyObject *self, PyObject *args)\n{ if (!PyArg_ParseTuple(args, ":%s")) return NULL; *************** *** 205,208 **** --- 205,220 ---- funcName = string.lower(objects[name]) + '_get_' + attrname impl.write(funcLeadTmpl % (funcName,)) + if retType == 'string': + # this is needed so we can free result string + impl.write(' gchar *ret;\n') + impl.write(' PyObject *py_ret;\n') + elif retType == 'static_string': + impl.write(' gchar *ret;\n') + elif retType in objects.keys(): + impl.write(' GtkObject *ret;\n') + elif retType == 'GdkAtom': + impl.write(' GdkAtom ret;\n') + elif retType in boxed.keys(): + impl.write(' %s *ret;\n' % retType) impl.write(' PyObject *obj;\n\n') impl.write(' if (!PyArg_ParseTuple(args, "O!:') *************** *** 233,238 **** if retType == 'string': # this is needed so we can free result string ! varDefs.add('char', '*ret') varDefs.add('PyObject', '*py_ret') for arg in args: argType = arg[0] --- 245,258 ---- if retType == 'string': # this is needed so we can free result string ! varDefs.add('gchar', '*ret') varDefs.add('PyObject', '*py_ret') + elif retType == 'static_string': + varDefs.add('gchar', '*ret') + elif retType in objects.keys(): + varDefs.add('GtkObject', '*ret') + elif retType == 'GdkAtom': + varDefs.add('GdkAtom', 'ret') + elif retType in boxed.keys(): + varDefs.add(retType, '*ret') for arg in args: argType = arg[0] *************** *** 241,245 **** if argName in ('default', 'if', 'then', 'else', 'while', 'for', 'do', 'case', 'select'): ! argName = '_' + argName default = '' nullok = FALSE --- 261,265 ---- if argName in ('default', 'if', 'then', 'else', 'while', 'for', 'do', 'case', 'select'): ! argName = argName + '_' default = '' nullok = FALSE *************** *** 409,431 **** impl.write(';\n Py_INCREF(Py_None);\n return Py_None;\n') elif retType == 'static_string': ! impl.write(' return PyString_FromString(') ! impl.write(funcCall) ! impl.write(');\n') elif retType == 'string': ! if nullok: ! impl.write(' ret = %s;\n' % funcCall) ! impl.write(' if (ret) {\n') ! impl.write(' py_ret = PyString_FromString(ret);\n' ! ' g_free(ret);\n' ! ' return py_ret;\n' ! ' } else {\n' ! ' Py_INCREF(Py_None);\n' ! ' return Py_None;\n' ! ' }\n') ! else: ! impl.write(' ret = %s;\n' % funcCall) ! impl.write(' py_ret = PyString_FromString(ret);\n' ! ' g_free(ret);\n' ! ' return py_ret;\n') elif retType in ('char', 'uchar'): impl.write(' return PyString_fromStringAndSize(*(') --- 429,449 ---- impl.write(';\n Py_INCREF(Py_None);\n return Py_None;\n') elif retType == 'static_string': ! impl.write(' ret = %s;\n' % funcCall) ! impl.write(' if (ret) {\n' ! ' return PyString_FromString(ret);\n' ! ' } else {\n' ! ' Py_INCREF(Py_None);\n' ! ' return Py_None;\n' ! ' }\n') elif retType == 'string': ! impl.write(' ret = %s;\n' % funcCall) ! impl.write(' if (ret) {\n' ! ' py_ret = PyString_FromString(ret);\n' ! ' g_free(ret);\n' ! ' return py_ret;\n' ! ' } else {\n' ! ' Py_INCREF(Py_None);\n' ! ' return Py_None;\n' ! ' }\n') elif retType in ('char', 'uchar'): impl.write(' return PyString_fromStringAndSize(*(') *************** *** 442,472 **** impl.write(');\n') elif retType in boxed.keys(): ! if nullok: ! impl.write(' {\n' ! ' %s *p = %s;\n' % (retType, funcCall)) ! impl.write(' if (p)\n') ! impl.write(' return %s(p);\n' % boxed[retType][2]) ! impl.write(' Py_INCREF(Py_None);\n' ! ' return Py_None;\n' ! ' }\n') ! else: ! impl.write(' return ') ! impl.write(boxed[retType][2]) ! impl.write('(') ! impl.write(funcCall) ! impl.write(');\n') elif retType in objects.keys(): ! if nullok: ! impl.write(' {\n' ! ' GtkObject *p = (GtkObject *) %s;' % funcCall) ! impl.write(' if (p)\n' ! ' return PyGtk_New((GtkObject *) p);\n') ! impl.write(' Py_INCREF(Py_None);\n' ! ' return Py_None;\n' ! ' }\n') ! else: ! impl.write(' return PyGtk_New((GtkObject *)') ! impl.write(funcCall) ! impl.write(');\n') else: print "unknown return type '%s'" % (retType,) --- 460,474 ---- impl.write(');\n') elif retType in boxed.keys(): ! impl.write(' ret = %s;\n' % funcCall) ! impl.write(' if (ret)\n') ! impl.write(' return %s(ret);\n' % boxed[retType][2]) ! impl.write(' Py_INCREF(Py_None);\n' ! ' return Py_None;\n') elif retType in objects.keys(): ! impl.write(' ret = (GtkObject *) %s;\n' % funcCall) ! impl.write(' if (ret)\n' ! ' return PyGtk_New(ret);\n' ! ' Py_INCREF(Py_None);\n' ! ' return Py_None;\n') else: print "unknown return type '%s'" % (retType,) |