[Python-checkins]
python/dist/src/Tools/modulator genmodule.py, 1.5, 1.5.16.1
dcjim at users.sourceforge.net
dcjim at users.sourceforge.net
Mon Jul 12 22:40:19 CEST 2004
- Previous message: [Python-checkins] python/dist/src/Tools/modulator/Templates
object_gc, NONE, 1.1.2.1 object_getset, NONE,
1.1.2.1 object_tp_descr_get, NONE, 1.1.2.1 object_tp_descr_set,
NONE, 1.1.2.1 object_tp_init, NONE, 1.1.2.1 object_tp_iter,
NONE, 1.1.2.1 object_tp_iternext, NONE, 1.1.2.1 object_tp_new,
NONE, 1.1.2.1 module_tail, 1.4, 1.4.46.1 object_head, 1.3,
1.3.16.1 object_method, 1.4, 1.4.18.1 object_mlist, 1.2,
1.2.46.1 object_structure, 1.3, 1.3.18.1 object_tail, 1.4,
1.4.46.1 object_tp_as_mapping, 1.3,
1.3.18.1 object_tp_as_number, 1.3,
1.3.18.1 object_tp_as_sequence, 1.3, 1.3.18.1 object_tp_call,
1.3, 1.3.18.1 object_tp_compare, 1.2,
1.2.18.1 object_tp_dealloc, 1.3, 1.3.18.1 object_tp_getattr,
1.3, 1.3.18.1 object_tp_hash, 1.2, 1.2.18.1 object_tp_print,
1.2, 1.2.18.1 object_tp_repr, 1.3, 1.3.18.1 object_tp_setattr,
1.4, 1.4.18.1 object_tp_str, 1.2, 1.2.18.1 object_new, 1.2, NONE
- Next message: [Python-checkins] python/nondist/sandbox/msi msi.py,1.11,1.12
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/python/python/dist/src/Tools/modulator
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv11285
Modified Files:
Tag: jim-modulator
genmodule.py
Log Message:
Updating to generate new-stype types.
Checking in work on progress. Maybe someone else wants to try it out.
Index: genmodule.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/modulator/genmodule.py,v
retrieving revision 1.5
retrieving revision 1.5.16.1
diff -C2 -d -r1.5 -r1.5.16.1
*** genmodule.py 11 Sep 2002 20:36:01 -0000 1.5
--- genmodule.py 12 Jul 2004 20:40:15 -0000 1.5.16.1
***************
*** 27,33 ****
# Names of functions in the object-description struct.
#
! FUNCLIST = ['new', 'tp_dealloc', 'tp_print', 'tp_getattr', 'tp_setattr',
! 'tp_compare', 'tp_repr', 'tp_hash', 'tp_call', 'tp_str']
! TYPELIST = ['tp_as_number', 'tp_as_sequence', 'tp_as_mapping', 'structure']
#
--- 27,38 ----
# Names of functions in the object-description struct.
#
! FUNCLIST = ['tp_dealloc', 'tp_init', 'tp_new',
! 'tp_print', 'tp_getattr', 'tp_setattr',
! 'tp_compare', 'tp_repr', 'tp_hash', 'tp_call', 'tp_str',
! 'tp_descr_get', 'tp_descr_set',
! 'tp_iter', 'tp_iternext'
! ]
! TYPELIST = ['tp_as_number', 'tp_as_sequence', 'tp_as_mapping',
! 'structure', 'getset', 'gc']
#
***************
*** 74,77 ****
--- 79,84 ----
self.addcode('module_head', fp)
for o in self.objects:
+ o.module = self.name
+ for o in self.objects:
o.writehead(fp)
for o in self.objects:
***************
*** 82,96 ****
self.addcode('module_method', fp)
new_ml = new_ml + (
! '{"%s",\t(PyCFunction)%s_%s,\tMETH_VARARGS,\t%s_%s__doc__},\n'
%(fn, self.abbrev, fn, self.abbrev, fn))
self.methodlist = new_ml
self.addcode('module_tail', fp)
class object(writer):
_type = 'object'
def __init__(self):
self.typelist = []
self.methodlist = []
! self.funclist = ['new']
writer.__init__(self)
--- 89,129 ----
self.addcode('module_method', fp)
new_ml = new_ml + (
! '\t{"%s",\t(PyCFunction)%s_%s,\tMETH_VARARGS,\n'
! '\t %s_%s__doc__},\n'
%(fn, self.abbrev, fn, self.abbrev, fn))
self.methodlist = new_ml
+
+ if self.objects:
+ ready_types = ['', '/* Initialize types: */']
+ add_types = ['', '/* Add types: */']
+
+ for o in self.objects:
+ ready_types.extend(['if (PyType_Ready(&%s%s) < 0)'
+ % (o.abbrev, o.type),
+ '\treturn;'
+ ])
+ add_types.extend(['if (PyModule_AddObject(m, "%s", '
+ '(PyObject *)&%s%s) < 0)'
+ % (o.name, o.abbrev, o.type),
+ '\treturn;'
+ ])
+ self.ready_types = '\n'.join(ready_types)+'\n'
+ self.add_types = '\n'.join(add_types)+'\n'
+
+ else:
+ self.ready_types = self.add_types = ''
+
self.addcode('module_tail', fp)
class object(writer):
_type = 'object'
+
+
def __init__(self):
self.typelist = []
self.methodlist = []
! self.funclist = []
! self.object = ''
! self.type = 'Type'
writer.__init__(self)
***************
*** 104,137 ****
def writebody(self, fp):
! new_ml = ''
! for fn in self.methodlist:
! self.method = fn
! self.addcode('object_method', fp)
! new_ml = new_ml + (
! '{"%s",\t(PyCFunction)%s_%s,\tMETH_VARARGS,\t%s_%s__doc__},\n'
! %(fn, self.abbrev, fn, self.abbrev, fn))
! self.methodlist = new_ml
! self.addcode('object_mlist', fp)
! # Add getattr if we have methods
! if self.methodlist and not 'tp_getattr' in self.funclist:
! self.funclist.insert(0, 'tp_getattr')
for fn in FUNCLIST:
setattr(self, fn, '0')
- #
- # Special case for structure-access objects: put getattr in the
- # list of functions but don't generate code for it directly,
- # the code is obtained from the object_structure template.
- # The same goes for setattr.
- #
if 'structure' in self.typelist:
! if 'tp_getattr' in self.funclist:
! self.funclist.remove('tp_getattr')
! if 'tp_setattr' in self.funclist:
! self.funclist.remove('tp_setattr')
! self.tp_getattr = self.abbrev + '_getattr'
! self.tp_setattr = self.abbrev + '_setattr'
for fn in self.funclist:
self.addcode('object_'+fn, fp)
--- 137,187 ----
def writebody(self, fp):
! if self.methodlist:
! new_ml = ''
! for fn in self.methodlist:
! self.method = fn
! self.addcode('object_method', fp)
! new_ml = new_ml + (
! '\t{"%s",\t(PyCFunction)%s_%s,\tMETH_VARARGS,\n'
! '\t %s_%s__doc__},\n'
! %(fn, self.abbrev, fn, self.abbrev, fn))
! self.methodlist = new_ml
! self.addcode('object_mlist', fp)
! self.tp_methods = self.abbrev + '_methods'
!
! else:
! self.tp_methods = '0'
!
! if 'gc' in self.typelist:
! self.call_clear = '\n\t' + self.abbrev + '_clear(self);'
! if 'tp_dealloc' in self.funclist:
! self.funclist.remove('tp_dealloc')
! self.typelist.append('tp_dealloc')
! self.extra_flags = "\n\t| Py_TPFLAGS_HAVE_GC"
! self.tp_traverse = self.abbrev + "_traverse"
! self.tp_clear = self.abbrev + "_clear"
! else:
! self.extra_flags = ""
! self.tp_traverse = self.tp_clear = "0"
! self.call_clear = ''
!
for fn in FUNCLIST:
setattr(self, fn, '0')
if 'structure' in self.typelist:
! self.tp_members = self.abbrev + '_members'
! else:
! self.tp_members = '0'
!
! if 'getset' in self.typelist:
! self.tp_getset = self.abbrev + '_getset'
! else:
! self.tp_getset = '0'
!
! if 'tp_new' not in self.funclist:
! self.tp_new = 'PyType_GenericNew'
!
for fn in self.funclist:
self.addcode('object_'+fn, fp)
- Previous message: [Python-checkins] python/dist/src/Tools/modulator/Templates
object_gc, NONE, 1.1.2.1 object_getset, NONE,
1.1.2.1 object_tp_descr_get, NONE, 1.1.2.1 object_tp_descr_set,
NONE, 1.1.2.1 object_tp_init, NONE, 1.1.2.1 object_tp_iter,
NONE, 1.1.2.1 object_tp_iternext, NONE, 1.1.2.1 object_tp_new,
NONE, 1.1.2.1 module_tail, 1.4, 1.4.46.1 object_head, 1.3,
1.3.16.1 object_method, 1.4, 1.4.18.1 object_mlist, 1.2,
1.2.46.1 object_structure, 1.3, 1.3.18.1 object_tail, 1.4,
1.4.46.1 object_tp_as_mapping, 1.3,
1.3.18.1 object_tp_as_number, 1.3,
1.3.18.1 object_tp_as_sequence, 1.3, 1.3.18.1 object_tp_call,
1.3, 1.3.18.1 object_tp_compare, 1.2,
1.2.18.1 object_tp_dealloc, 1.3, 1.3.18.1 object_tp_getattr,
1.3, 1.3.18.1 object_tp_hash, 1.2, 1.2.18.1 object_tp_print,
1.2, 1.2.18.1 object_tp_repr, 1.3, 1.3.18.1 object_tp_setattr,
1.4, 1.4.18.1 object_tp_str, 1.2, 1.2.18.1 object_new, 1.2, NONE
- Next message: [Python-checkins] python/nondist/sandbox/msi msi.py,1.11,1.12
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Python-checkins
mailing list