extend generation framework to set Python class name

This commit is contained in:
wmayer 2016-12-03 12:50:36 +01:00
parent 89a896b52e
commit e45a099698
4 changed files with 55 additions and 38 deletions

View File

@ -3215,6 +3215,9 @@ Options:
--root-element="XXX" Assume XXX is root element of instance docs.
Default is first element defined in schema.
--super="XXX" Super module name in subclass module. Default="???"
Example:
python generateDS.py -o generateModel_Module.py generateMetaModel_Module.xsd
"""
def usage():

View File

@ -55,6 +55,7 @@
<xs:element name="ClassDeclarations" type="xs:string"/>
</xs:sequence>
<xs:attribute name="Name" type="xs:string" use="required"/>
<xs:attribute name="PythonName" type="xs:string" use="optional"/>
<xs:attribute name="Include" type="xs:string" use="required"/>
<xs:attribute name="Father" type="xs:string" use="required"/>
<xs:attribute name="Twin" type="xs:string" use="required"/>
@ -67,6 +68,7 @@
<xs:attribute name="TwinPointer" type="xs:string" use="required"/>
<xs:attribute name="Delete" type="xs:boolean" use="optional" default="false"/>
<xs:attribute name="Reference" type="xs:boolean" use="optional"/>
<xs:attribute name="Initialization" type="xs:boolean" use="optional" default="false"/>
</xs:complexType>
</xs:element>
</xs:sequence>

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python
#
# Generated Thu Jul 22 14:11:34 2010 by generateDS.py.
# Generated Sat Dec 03 11:48:45 2016 by generateDS.py.
#
import sys
@ -216,14 +216,16 @@ class GenerateModel:
class PythonExport:
subclass = None
def __init__(self, FatherNamespace='', RichCompare=0, Name='', Reference=0, FatherInclude='', Father='', Namespace='', Twin='', Constructor=0, TwinPointer='', Include='', NumberProtocol=0, Delete=0, Documentation=None, Methode=None, Attribute=None, Sequence=None, CustomAttributes='', ClassDeclarations='', Initialization=0):
def __init__(self, FatherNamespace='', RichCompare=0, Name='', Reference=0, FatherInclude='', Namespace='', Initialization=0, Father='', PythonName='', Twin='', Constructor=0, TwinPointer='', Include='', NumberProtocol=0, Delete=0, Documentation=None, Methode=None, Attribute=None, Sequence=None, CustomAttributes='', ClassDeclarations=''):
self.FatherNamespace = FatherNamespace
self.RichCompare = RichCompare
self.Name = Name
self.Reference = Reference
self.FatherInclude = FatherInclude
self.Father = Father
self.Namespace = Namespace
self.Initialization = Initialization
self.Father = Father
self.PythonName = PythonName
self.Twin = Twin
self.Constructor = Constructor
self.TwinPointer = TwinPointer
@ -231,7 +233,6 @@ class PythonExport:
self.NumberProtocol = NumberProtocol
self.Delete = Delete
self.Documentation = Documentation
self.Initialization = Initialization
if Methode is None:
self.Methode = []
else:
@ -249,8 +250,6 @@ class PythonExport:
else:
return PythonExport(*args_, **kwargs_)
factory = staticmethod(factory)
def getInitialization(self): return self.Initialization
def setInitialization(self, Initialization): self.Initialization = Initialization
def getDocumentation(self): return self.Documentation
def setDocumentation(self, Documentation): self.Documentation = Documentation
def getMethode(self): return self.Methode
@ -277,10 +276,14 @@ class PythonExport:
def setReference(self, Reference): self.Reference = Reference
def getFatherinclude(self): return self.FatherInclude
def setFatherinclude(self, FatherInclude): self.FatherInclude = FatherInclude
def getFather(self): return self.Father
def setFather(self, Father): self.Father = Father
def getNamespace(self): return self.Namespace
def setNamespace(self, Namespace): self.Namespace = Namespace
def getInitialization(self): return self.Initialization
def setInitialization(self, Initialization): self.Initialization = Initialization
def getFather(self): return self.Father
def setFather(self, Father): self.Father = Father
def getPythonname(self): return self.PythonName
def setPythonname(self, PythonName): self.PythonName = PythonName
def getTwin(self): return self.Twin
def setTwin(self, Twin): self.Twin = Twin
def getConstructor(self): return self.Constructor
@ -309,13 +312,15 @@ class PythonExport:
if self.getReference() is not None:
outfile.write(' Reference="%s"' % (self.getReference(), ))
outfile.write(' FatherInclude="%s"' % (self.getFatherinclude(), ))
outfile.write(' Father="%s"' % (self.getFather(), ))
outfile.write(' Namespace="%s"' % (self.getNamespace(), ))
if self.getInitialization() is not None:
outfile.write(' Initialization="%s"' % (self.getInitialization(), ))
outfile.write(' Father="%s"' % (self.getFather(), ))
if self.getPythonname() is not None:
outfile.write(' PythonName="%s"' % (self.getPythonname(), ))
outfile.write(' Twin="%s"' % (self.getTwin(), ))
if self.getConstructor() is not None:
outfile.write(' Constructor="%s"' % (self.getConstructor(), ))
if self.getInitialization() is not None:
outfile.write(' Initialization="%s"' % (self.getInitialization(), ))
outfile.write(' TwinPointer="%s"' % (self.getTwinpointer(), ))
outfile.write(' Include="%s"' % (self.getInclude(), ))
if self.getNumberprotocol() is not None:
@ -351,15 +356,18 @@ class PythonExport:
showIndent(outfile, level)
outfile.write('FatherInclude = "%s",\n' % (self.getFatherinclude(),))
showIndent(outfile, level)
outfile.write('Namespace = "%s",\n' % (self.getNamespace(),))
showIndent(outfile, level)
outfile.write('Initialization = "%s",\n' % (self.getInitialization(),))
showIndent(outfile, level)
outfile.write('Father = "%s",\n' % (self.getFather(),))
showIndent(outfile, level)
outfile.write('Namespace = "%s",\n' % (self.getNamespace(),))
outfile.write('PythonName = "%s",\n' % (self.getPythonname(),))
showIndent(outfile, level)
outfile.write('Twin = "%s",\n' % (self.getTwin(),))
showIndent(outfile, level)
outfile.write('Constructor = "%s",\n' % (self.getConstructor(),))
showIndent(outfile, level)
outfile.write('Initialization = "%s",\n' % (self.getInitialization(),))
outfile.write('TwinPointer = "%s",\n' % (self.getTwinpointer(),))
showIndent(outfile, level)
outfile.write('Include = "%s",\n' % (self.getInclude(),))
@ -435,10 +443,19 @@ class PythonExport:
raise ValueError('Bad boolean attribute (Reference)')
if attrs.get('FatherInclude'):
self.FatherInclude = attrs.get('FatherInclude').value
if attrs.get('Father'):
self.Father = attrs.get('Father').value
if attrs.get('Namespace'):
self.Namespace = attrs.get('Namespace').value
if attrs.get('Initialization'):
if attrs.get('Initialization').value in ('true', '1'):
self.Initialization = 1
elif attrs.get('Initialization').value in ('false', '0'):
self.Initialization = 0
else:
raise ValueError('Bad boolean attribute (Initialization)')
if attrs.get('Father'):
self.Father = attrs.get('Father').value
if attrs.get('PythonName'):
self.PythonName = attrs.get('PythonName').value
if attrs.get('Twin'):
self.Twin = attrs.get('Twin').value
if attrs.get('Constructor'):
@ -448,13 +465,6 @@ class PythonExport:
self.Constructor = 0
else:
raise ValueError('Bad boolean attribute (Constructor)')
if attrs.get('Initialization'):
if attrs.get('Initialization').value in ('true', '1'):
self.Initialization = 1
elif attrs.get('Initialization').value in ('false', '0'):
self.Initialization = 0
else:
raise ValueError('Bad boolean attribute (Initialization)')
if attrs.get('TwinPointer'):
self.TwinPointer = attrs.get('TwinPointer').value
if attrs.get('Include'):
@ -506,11 +516,6 @@ class PythonExport:
for text__content_ in child_.childNodes:
ClassDeclarations_ += text__content_.nodeValue
self.ClassDeclarations = ClassDeclarations_
elif child_.nodeType == Node.ELEMENT_NODE and \
nodeName_ == 'Initialization':
obj_ = Documentation.factory()
obj_.build(child_)
self.setDocumentation(obj_)
# end class PythonExport
@ -1828,12 +1833,23 @@ class SaxGeneratemodelHandler(handler.ContentHandler):
val = attrs.get('FatherInclude', None)
if val is not None:
obj.setFatherinclude(val)
val = attrs.get('Father', None)
if val is not None:
obj.setFather(val)
val = attrs.get('Namespace', None)
if val is not None:
obj.setNamespace(val)
val = attrs.get('Initialization', None)
if val is not None:
if val in ('true', '1'):
obj.setInitialization(1)
elif val in ('false', '0'):
obj.setInitialization(0)
else:
self.reportError('"Initialization" attribute must be boolean ("true", "1", "false", "0")')
val = attrs.get('Father', None)
if val is not None:
obj.setFather(val)
val = attrs.get('PythonName', None)
if val is not None:
obj.setPythonname(val)
val = attrs.get('Twin', None)
if val is not None:
obj.setTwin(val)
@ -1845,14 +1861,6 @@ class SaxGeneratemodelHandler(handler.ContentHandler):
obj.setConstructor(0)
else:
self.reportError('"Constructor" attribute must be boolean ("true", "1", "false", "0")')
val = attrs.get('Initialization', None)
if val is not None:
if val in ('true', '1'):
obj.setInitialization(1)
elif val in ('false', '0'):
obj.setInitialization(0)
else:
self.reportError('"Initialization" attribute must be boolean ("true", "1", "false", "0")')
val = attrs.get('TwinPointer', None)
if val is not None:
obj.setTwinpointer(val)

View File

@ -247,7 +247,11 @@ using namespace @self.export.Namespace@;
PyTypeObject @self.export.Name@::Type = {
PyObject_HEAD_INIT(&PyType_Type)
0, /*ob_size*/
+ if (self.export.PythonName):
"@self.export.PythonName@", /*tp_name*/
= else:
"@self.export.Namespace@.@self.export.Twin@", /*tp_name*/
-
sizeof(@self.export.Name@), /*tp_basicsize*/
0, /*tp_itemsize*/
/* methods */