1995-03-02 10:05:29 -04:00
|
|
|
#
|
|
|
|
# Example input file for modulator if you don't have tk.
|
|
|
|
#
|
|
|
|
# You may also have to strip some imports out of modulator to make
|
|
|
|
# it work.
|
1995-05-16 10:43:09 -03:00
|
|
|
|
|
|
|
import genmodule
|
|
|
|
|
1995-03-02 10:05:29 -04:00
|
|
|
#
|
|
|
|
# Generate code for a simple object with a method called sample
|
|
|
|
|
|
|
|
o = genmodule.object()
|
|
|
|
o.name = 'simple object'
|
|
|
|
o.abbrev = 'simp'
|
|
|
|
o.methodlist = ['sample']
|
|
|
|
o.funclist = ['new']
|
|
|
|
|
|
|
|
#
|
|
|
|
# Generate code for an object that looks numberish
|
|
|
|
#
|
|
|
|
o2 = genmodule.object()
|
|
|
|
o2.name = 'number-like object'
|
|
|
|
o2.abbrev = 'nl'
|
|
|
|
o2.typelist = ['tp_as_number']
|
|
|
|
o2.funclist = ['new', 'tp_repr', 'tp_compare']
|
|
|
|
|
|
|
|
#
|
|
|
|
# Generate code for a method with a full complement of functions,
|
|
|
|
# some methods, accessible as sequence and allowing structmember.c type
|
|
|
|
# structure access as well.
|
|
|
|
#
|
|
|
|
o3 = genmodule.object()
|
|
|
|
o3.name = 'over-the-top object'
|
|
|
|
o3.abbrev = 'ot'
|
|
|
|
o3.methodlist = ['method1', 'method2']
|
|
|
|
o3.funclist = ['new', 'tp_dealloc', 'tp_print', 'tp_getattr', 'tp_setattr',
|
2003-10-24 17:09:23 -03:00
|
|
|
'tp_compare', 'tp_repr', 'tp_hash']
|
1995-03-02 10:05:29 -04:00
|
|
|
o3.typelist = ['tp_as_sequence', 'structure']
|
|
|
|
|
|
|
|
#
|
|
|
|
# Now generate code for a module that incorporates these object types.
|
|
|
|
# Also add the boilerplates for functions to create instances of each
|
|
|
|
# type.
|
|
|
|
#
|
|
|
|
m = genmodule.module()
|
|
|
|
m.name = 'sample'
|
|
|
|
m.abbrev = 'sample'
|
|
|
|
m.methodlist = ['newsimple', 'newnumberish', 'newott']
|
|
|
|
m.objects = [o, o2, o3]
|
1995-05-16 10:43:09 -03:00
|
|
|
|
|
|
|
fp = open('EXAMPLEmodule.c', 'w')
|
|
|
|
genmodule.write(fp, m)
|
|
|
|
fp.close()
|