A bit of refactoring

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@66286 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2010-11-28 03:43:30 +00:00
parent 565c223b47
commit 833fa43787
25 changed files with 104 additions and 415 deletions

View File

@@ -94,32 +94,6 @@ def parseDoxyXML(module, class_or_filename_list):
#---------------------------------------------------------------------------
def getWrapperGenerator():
"""
A simple factory function to create a wrapper generator class of the desired type.
"""
if '--dump' in sys.argv:
import generators
gClass = generators.DumpWrapperGenerator
elif '--swig' in sys.argv:
import swig_generator
gClass = swig_generator.SwigWrapperGenerator
elif '--sip' in sys.argv:
import sip_generator
gClass = sip_generator.SipWrapperGenerator
else:
# The default is sip, at least for now...
import sip_generator
gClass = sip_generator.SipWrapperGenerator
return gClass()
#---------------------------------------------------------------------------
def getDocsGenerator():
import generators
g = generators.StubbedDocsGenerator()
return g
#---------------------------------------------------------------------------

View File

@@ -62,19 +62,7 @@ class BaseDef(object):
self.briefDoc = bd[0] # Should be just one <para> element
self.detailedDoc = list(element.find('detaileddescription'))
def dump(self, indent=0, stream=None):
# debug helper, prints the extracted items
txt = ("name: %s\n"
"pyName: %s\n"
"ignored: %s\n"
"briefDoc: %s\n"
"detailedDoc: %s\n" ) % \
(self.name, self.pyName, self.ignored, self.briefDoc,
_pf(self.detailedDoc, indent))
_print(txt, indent, stream)
def ignore(self, val=True):
self.ignored = val
@@ -177,13 +165,6 @@ class VariableDef(BaseDef):
self.definition = element.find('definition').text
self.argsString = element.find('argsstring').text
def dump(self, indent=0, stream=None):
super(VariableDef, self).dump(indent, stream)
txt = ("type: %s\n"
"definition: %s\n"
"argsString: %s\n"
) % (self.type, self.definition, self.argsString)
_print(txt, indent, stream)
#---------------------------------------------------------------------------
@@ -220,13 +201,7 @@ class MemberVarDef(VariableDef):
if self.protection == 'protected':
self.ignore()
def dump(self, indent=0, stream=None):
super(MemberVarDef, self).dump(indent, stream)
txt = ("isStatic: %s\n"
"protection: %s\n"
) % (self.isStatic, self.protection)
_print(txt, indent, stream)
#---------------------------------------------------------------------------
class FunctionDef(BaseDef):
@@ -269,39 +244,6 @@ class FunctionDef(BaseDef):
# briefDoc for this ParamDef object.
def dump(self, indent=0, stream=None):
super(FunctionDef, self).dump(indent, stream)
txt = ("type: %s\n"
"definition: %s\n"
"argsString: %s\n"
"pyArgsString: %s\n"
"isOverloaded: %s\n"
"deprecated: %s\n"
"factory: %s\n"
"releaseGIL: %s\n"
"noCopy: %s\n"
"transfer: %s\n"
"transferBack: %s\n"
"transferThis: %s\n"
) % (self.type, self.definition, self.argsString, self.pyArgsString,
self.isOverloaded, self.deprecated, self.factory, self.pyReleaseGIL,
self.noCopy,
self.transfer, self.transferBack, self.transferThis)
_print(txt, indent, stream)
if self.items:
for p in self.items:
assert isinstance(p, ParamDef)
_print("ParamDef:", indent, stream)
p.dump(indent+4, stream)
_print("\n", indent, stream)
if self.overloads:
_print("Overloaded functions:", indent, stream)
for f in self.overloads:
_print("MethodDef:", indent+4, stream)
f.dump(indent+8, stream)
_print("\n", indent, stream)
def checkForOverload(self, methods):
for m in methods:
if isinstance(m, MethodDef) and m.name == self.name:
@@ -365,18 +307,7 @@ class MethodDef(FunctionDef):
self.ignore()
def dump(self, indent=0, stream=None):
super(MethodDef, self).dump(indent, stream)
txt = ("isCtor: %s\n"
"isDtor: %s\n"
"isStatic: %s\n"
"isVirtual: %s\n"
"protection: %s\n"
"defaultCtor: %s\n"
) % (self.isCtor, self.isDtor, self.isStatic, self.isVirtual,
self.protection, self.defaultCtor)
_print(txt, indent, stream)
#---------------------------------------------------------------------------
@@ -406,23 +337,6 @@ class ParamDef(BaseDef):
if element.find('defval') is not None:
self.default = flattenNode(element.find('defval'))
def dump(self, indent=0, stream=None):
#super(ParamDef, self).dump(indent, stream)
txt = ("name: %s\n"
"type: %s\n"
"default: %s\n"
"out: %s\n"
"inOut: %s\n"
"array: %s\n"
"arraySize: %s\n"
"transfer: %s\n"
"transferBack: %s\n"
"transferThis: %s\n"
) % (self.name, self.type, self.default, self.out, self.inOut,
self.array, self.arraySize,
self.transfer, self.transferBack, self.transferThis)
_print(txt, indent, stream)
#---------------------------------------------------------------------------
class ClassDef(BaseDef):
@@ -488,22 +402,6 @@ class ClassDef(BaseDef):
# TODO: do we need support for nested classes?
def dump(self, indent=0, stream=None):
super(ClassDef, self).dump(indent, stream)
txt = ("bases: %s\n"
"includes: %s\n"
"abstract: %s\n"
"deprecated: %s\n"
"external: %s\n"
"noDefCtor: %s\n"
"singleton: %s\n"
) % (_pf(self.bases, indent), _pf(self.includes, indent),
self.abstract, self.deprecated, self.external, self.noDefCtor, self.singlton)
_print(txt, indent, stream)
for item in self.items:
_print("%s:" % item.__class__.__name__, indent, stream)
item.dump(indent+4, stream)
_print("\n", indent, stream)
def addHeaderCode(self, code):
@@ -668,13 +566,7 @@ class EnumDef(BaseDef):
value = EnumValueDef(node)
self.items.append(value)
def dump(self, indent=0, stream=None):
super(EnumDef, self).dump(indent, stream)
for v in self.items:
_print("EnumValueDef:", indent, stream)
v.dump(indent+4, stream)
_print("\n", indent, stream)
class EnumValueDef(BaseDef):
@@ -706,14 +598,6 @@ class PropertyDef(BaseDef):
self.protection = 'public'
self.__dict__.update(kw)
def dump(self, indent=0, stream=None):
# debug helper, prints the extracted items
txt = ("name: %s\n"
"getter: %s\n"
"setter: %s\n"
"briefDoc: %s\n") % \
(self.name, self.getter, self.setter, self.briefDoc)
_print(txt, indent, stream)
#---------------------------------------------------------------------------
@@ -740,16 +624,6 @@ class CppMethodDef(MethodDef):
self.__dict__.update(kw)
def dump(self, indent=0, stream=None):
# debug helper, prints the extracted items
txt = ("type: %s\n"
"name: %s\n"
"argsString: %s\n"
"briefDoc: %s\n"
"body: %s\n") % \
(self.type, self.name, self.argsString, self.briefDoc, self.body)
_print(txt, indent, stream)
#---------------------------------------------------------------------------
@@ -904,25 +778,6 @@ class ModuleDef(BaseDef):
return item
def dump(self, indent=0, stream=None):
super(ModuleDef, self).dump(indent, stream)
txt = ("includes: %s\n"
"imports: %s\n"
"headerCode: %s\n"
"cppCode: %s\n"
"initializerCode: %s\n"
) % (_pf(self.includes, indent),
_pf(self.imports, indent),
_pf(self.headerCode, indent),
_pf(self.cppCode, indent),
_pf(self.initializerCode, indent))
_print(txt, indent, stream)
_print('\n', indent, stream)
for item in self.items:
_print(item.__class__.__name__+":", indent, stream)
item.dump(indent+4, stream)
_print('\n', indent, stream)
def addCppFunction(self, type, name, argsString, body, doc=None, **kw):

View File

@@ -19,17 +19,6 @@ class WrapperGeneratorBase(object):
raise NotImplementedError
class DumpWrapperGenerator(WrapperGeneratorBase):
"""This one is just for debugging"""
def generate(self, module, destFile=None):
print "\n----------------------------------------------------------"
print "Dump of Module Objects"
print "----------------------------------------------------------"
module.dump()
class DocsGeneratorBase(object):
def __init__(self):
pass

View File

@@ -13,7 +13,7 @@ stage of the ETG scripts.
"""
import extractors
import os
import sys, os
def removeWxPrefixes(node):
@@ -122,8 +122,57 @@ def getMatchingFiles(names, template):
files.append(name)
return files
def doCommonTweaks(module):
"""
A collection of tweaks that should probably be done to all modules.
"""
ignoreAssignmentOperators(module)
removeWxPrefixes(module)
#---------------------------------------------------------------------------
def getWrapperGenerator():
"""
A simple factory function to create a wrapper generator class of the desired type.
"""
if '--swig' in sys.argv:
import swig_generator
gClass = swig_generator.SwigWrapperGenerator
elif '--sip' in sys.argv:
import sip_generator
gClass = sip_generator.SipWrapperGenerator
else:
# The default is sip, at least for now...
import sip_generator
gClass = sip_generator.SipWrapperGenerator
return gClass()
def getDocsGenerator():
import generators
g = generators.StubbedDocsGenerator()
return g
def runGenerators(module):
# Create the code generator and make the wrapper code
wg = getWrapperGenerator()
wg.generate(module)
# Create a documentation generator and let it do its thing
dg = getDocsGenerator()
dg.generate(module)
#---------------------------------------------------------------------------
def convertTwoIntegersTemplate(CLASS):
return """\
// is it just a typecheck?