From db01a2c6542b8f343963defa4d3f9f5cd4ab1c62 Mon Sep 17 00:00:00 2001 From: jfa Date: Wed, 2 Mar 2011 08:52:25 +0000 Subject: [PATCH] Rename Engines::Component to Engines::EngineComponent --- src/ModuleGenerator/IDLparser.py | 191 +++++++++++++++---------------- 1 file changed, 93 insertions(+), 98 deletions(-) diff --git a/src/ModuleGenerator/IDLparser.py b/src/ModuleGenerator/IDLparser.py index e7efd63b7..da07fdff4 100644 --- a/src/ModuleGenerator/IDLparser.py +++ b/src/ModuleGenerator/IDLparser.py @@ -19,11 +19,10 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com -# # File : IDLparser.py # Module : SALOME -# + import string, sys, fpformat, re, os import xml.sax import pdb @@ -60,7 +59,7 @@ def getParamValue( param_name, default_value, args ): res = opt[s.end():] break #found - return res + return res #-------------------------------------------------- @@ -74,7 +73,7 @@ def error (message): # base class implementing tree #-------------------------------------------------- class Tree: - + def __init__(self, name = '', content = '', key = None): self.name = name self.content = content @@ -83,9 +82,9 @@ class Tree: self.childs = [] self.comments = [] self.attrs={} - + def addChild(self, tree): - if tree is not None: + if tree is not None: self.childs.append(tree) tree.parent = self return tree @@ -104,12 +103,12 @@ class Tree: pos += 1 return self.addChild(tree) - + def insertFirstChild(self, tree): if tree is not None: self.childs.insert(0, tree) return tree - + def insertFirstNamedChild(self, name, content = ''): return self.insertFirstChild(Tree(name, content)) @@ -117,7 +116,7 @@ class Tree: d = depth if self.name != '': s = string.ljust('', 4*depth) - s += '<' + self.name + s += '<' + self.name for k,v in self.attrs.items(): s += ' ' + k + '="' + v + '"' s += '>' @@ -128,10 +127,10 @@ class Tree: s += '\n' f.write(s) d += 1 - + for i in self.childs: i.output_xml(f, d) - + if self.name != '': s = '\n' if len(self.childs) > 0 : @@ -140,9 +139,9 @@ class Tree: def Dump(self, levels=-1, depth=0): #Dumps the tree contents - + if levels == 0: return - + s = string.ljust('', 4*depth) print s, self, self.content for i in self.childs: @@ -157,7 +156,7 @@ class Tree: l.append(p.name) p = p.parent return l - + def getChild(self, name, content=None): # return child node with a given name # if content == None, don't compare contents @@ -173,12 +172,12 @@ class Tree: if (self.name == name): if (content is None) | (self.content == content): return self - + if (depth != 0): for i in self.childs: n = i.getNode(name, content, depth-1) - if n: return n - + if n: return n + return None def __repr__(self): @@ -198,47 +197,46 @@ class Tree: L_int = self.getChild(list) L_merge = Tree(list) - + for i_ext in L_ext.childs: k_ext = i_ext.key if k_ext is None: continue present = 0 - + for i_int in L_int.childs: k_int = i_int.key if k_int is None: continue - + if (k_int == k_ext): present = 1 break; - + if present : i_int.merge(i_ext) L_merge.addChild(i_int) else: L_merge.addChild(i_ext) - + self.replaceChild(L_merge) def setAttrib(self, name,value): self.attrs[name]=value - - + #-------------------------------------------------- # implements parameter tree #-------------------------------------------------- class parameter(Tree): - + def __init__(self, name=None, mode = 'in', type='', comment='unknown'): Tree.__init__(self, mode + 'Parameter', key=name) self.mode = mode if name is None: return - + self.addNamedChild(mode + 'Parameter-name', name) self.addNamedChild(mode + 'Parameter-type', type) self.addNamedChild(mode + 'Parameter-comment', comment) - + def merge(self, P): self.mode = P.mode @@ -247,19 +245,19 @@ class parameter(Tree): C = P.getChild(P.mode + 'Parameter-comment') if C.content != 'unkonwn': self.replaceChild(C) - + #-------------------------------------------------- # implements dataStreamParameter tree #-------------------------------------------------- class dataStreamParameter(parameter): - + def __init__(self, name=None, mode='in', type='', dependency='', comment='unknown'): parameter.__init__(self, name, mode, type, comment) if name is None: return - + self.addNamedChild(mode + 'Parameter-dependency', dependency) self.mode = mode - + def merge(self, P): parameter.merge(self, P) @@ -270,11 +268,11 @@ def parseComment(comment): spaces = '[\t\n ]*' word = spaces + '([a-zA-Z][a-zA-Z0-9_]*)' + spaces - + result = [] type = None key = None - + ## match : // followed by a 'DataStreamPorts' string, ## the service name, and a list of ports pattern = '// *DataStreamPorts{,1}' + word @@ -285,7 +283,7 @@ def parseComment(comment): ## service type = 'DataStreamPorts' key = m.group(1) - + sPorts = comment[m.end():] pattern = word + '\('+word+','+word +','+word+'\)' \ + spaces + ',{,1}' + spaces @@ -300,19 +298,19 @@ def parseComment(comment): 'format error in DataStreamPort definition : '+sPorts sPorts = sPorts[m.end():] result.append(m.groups()) - + return type, key, result; #-------------------------------------------------- # implements service tree #-------------------------------------------------- class Service(Tree): - + def __init__(self, name=None, comment = 'unknown'): - + Tree.__init__(self, 'component-service', key=name) if name is None: return - + self.addNamedChild('service-name', name) self.addNamedChild('service-author',common_data["AUTHOR"]) self.addNamedChild('service-version',common_data["VERSION"]) @@ -321,13 +319,13 @@ class Service(Tree): self.addNamedChild('inParameter-list') self.addNamedChild('outParameter-list') self.addNamedChild('DataStream-list') - + def createInParameter(self, name, type): L = self.getChild('inParameter-list') p = parameter(name, 'in', type) L.replaceChild(p) return p - + def createOutParameter(self, name, type): L = self.getChild('outParameter-list') p = parameter(name, 'out', type) @@ -339,7 +337,7 @@ class Service(Tree): p = dataStreamParameter(p[0], p[2], p[1], p[3]) L.replaceChild(p) return p - + def merge(self, S): self.replaceChild(S.getChild('service-author')) @@ -348,27 +346,26 @@ class Service(Tree): C = S.getChild('service-comment') if C.content != 'unkonwn': self.replaceChild(C) - + for L in ['inParameter-list', 'outParameter-list', 'DataStream-list']: self.mergeChilds(S, L) - #-------------------------------------------------- # implements interface tree #-------------------------------------------------- class Interface(Tree): - + def __init__(self, name=None, comment='unknown'): - + Tree.__init__(self, key=name) if name is None: return - + self.addNamedChild('component-interface-name', name) self.addNamedChild('component-interface-comment', comment); self.addNamedChild('component-service-list') - + def createService(self, name): L = self.getChild('component-service-list') @@ -386,7 +383,7 @@ class Interface(Tree): if S.key == key: return S return None - + def merge(self, I): C = S.getChild('component-interface-comment') @@ -394,7 +391,7 @@ class Interface(Tree): self.replaceChild(C) self.mergeChilds(I, 'component-service-list') - + def processDataStreams(self): for sComment in self.comments: @@ -418,7 +415,7 @@ class Component(Tree): def __init__(self, name=None): Tree.__init__(self, 'component', key=name) if name is None: return - + # ASV : fix for bug PAL8922 (Component name indicated by user in GUI is not taken into account if common_data["COMP_NAME"] != '': self.addNamedChild('component-name', common_data["COMP_NAME"]) @@ -433,7 +430,7 @@ class Component(Tree): self.addNamedChild('component-username', common_data["COMP_NAME"] ) else: self.addNamedChild('component-username', name) - + self.addNamedChild('component-type', common_data["COMP_TYPE"]) self.addNamedChild('component-author', common_data["AUTHOR"]) self.addNamedChild('component-version', common_data["VERSION"]) @@ -443,7 +440,7 @@ class Component(Tree): self.addNamedChild('component-icone', common_data["ICON"]) self.addNamedChild('constraint') self.addNamedChild('component-interface-list') - + def createInterface(self, name): L = self.getChild('component-interface-list') if L is None: @@ -464,13 +461,13 @@ class Component(Tree): int = ext elif ext is not None and len(ext.content): int.content = ext.content - + Cc = C.getChild('component-comment') if Cc.content != 'unkonwn': self.replaceChild(Cc) - + self.mergeChilds(C, 'component-interface-list') - + #-------------------------------------------------- # implements document tree #-------------------------------------------------- @@ -499,7 +496,7 @@ class Catalog(ContentHandler, Tree): n.childs.insert(p+1,Tree('type-list')) if n.getChild('component-list') is None: n.addNamedChild('component-list') - + def removeComponent(self, name): complist = self.getNode('component-list') idx = 0 @@ -512,11 +509,11 @@ class Catalog(ContentHandler, Tree): if cname.content == name: complist.childs.pop(idx) print "Component " + name + " is removed" - idx += 1 - + idx += 1 + def startDocument(self): self.list.append(self) - + def startElement(self, name, attrs): p = self.list[len(self.list)-1] if name == 'component': @@ -543,7 +540,7 @@ class Catalog(ContentHandler, Tree): e = p.addNamedChild(name) self.list.append(e) self.buffer = '' - + def endElement(self, name): self.buffer = string.join(string.split(self.buffer), ' ') p = self.list[len(self.list)-1] @@ -552,17 +549,17 @@ class Catalog(ContentHandler, Tree): p.key = p.getChild('component-name').content self.buffer = '' e = self.list.pop() - + def characters(self, ch): self.buffer += ch def mergeComponent(self, comp): - + L_int = self.getNode('component-list') if L_int is None: error("Catalog.mergeComponent : 'component-list' is not found") return - + i_ext = comp present = 0 n_ext = i_ext.key @@ -570,14 +567,14 @@ class Catalog(ContentHandler, Tree): if (i_int.key == n_ext): present = 1 break; - + if present == 0: print ' add component', i_ext.getChild('component-name').content L_int.addChild(i_ext) else: print ' replace component', i_ext.getChild('component-name').content i_int.merge(i_ext) - + def mergeType(self, type): L_int = self.getNode('type-list') if L_int is None: @@ -666,41 +663,41 @@ ttsMap = { # class ModuleCatalogVisitor #-------------------------------------------------- class ModuleCatalogVisitor (idlvisitor.AstVisitor): - + def __init__(self, catalog): self.catalog = catalog self.EngineType = 0 self.currentScope=None - + def visitAST(self, node): for n in node.declarations(): if n.mainFile(): n.accept(self) - + def visitModule(self, node): self.currentScope=node for n in node.definitions(): n.accept(self) - + def visitInterface(self, node): if node.mainFile(): self.EngineType = 0 - + for i in node.inherits(): s = i.scopedName(); if s[0] == "Engines": - if s[1] == "Component": + if s[1] == "EngineComponent": self.EngineType = 1; break if s[1] == "Superv_Component": self.EngineType = 2; break - + if self.EngineType: #This interface is a SALOME component Comp = Component(node.identifier()) - + self.currentInterface = Comp.createInterface(node.identifier()) - + for c in node.callables(): if isinstance(c, idlast.Operation): c.accept(self) @@ -708,13 +705,13 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor): for c in node.declarations(): if isinstance(c, idlast.Struct): c.accept(self) - + for i in node.comments(): self.currentInterface.comments.append(str(i)) if self.EngineType == 2: self.currentInterface.processDataStreams() - + global nb_components nb_components = nb_components + 1 self.catalog.mergeComponent(Comp) @@ -727,36 +724,36 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor): self.catalog.mergeType(t) self.EngineType = 0 - + def visitOperation(self, node): self.currentService = self.currentInterface.createService \ (node.identifier()) - + node.returnType().accept(self) if (self.currentType != "void"): self.currentService.createOutParameter \ ("return", self.currentType) - + for c in node.parameters(): c.accept(self) for i in node.comments(): self.currentInterface.comments.append(str(i)) - + def visitDeclaredType(self, type): name=type.name() scoped_name="/".join(type.scopedName()) self.currentType = scoped_name - + def visitBaseType(self, type): self.currentType = ttsMap[type.kind()] - + def visitStringType(self, type): self.currentType = "string" - + def visitParameter(self, node): node.paramType().accept(self) if node.is_in(): @@ -765,7 +762,7 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor): if node.is_out(): self.currentService.createOutParameter \ (node.identifier(), self.currentType) - + def visitSequenceType(self,type): type.seqType().accept(self) if type.bound() == 0: @@ -822,27 +819,27 @@ class ModuleCatalogVisitor (idlvisitor.AstVisitor): # parse idl and store xml file #-------------------------------------------------- def run(tree, args): - + CatalogFileName=getParamValue("catalog", "CatalogModulePersonnel.xml", args) if re.compile(".*?.xml$").match(CatalogFileName, 1) is None: CatalogFileName = CatalogFileName + '.xml' - #========= Read parameters ====================== + #========= Read parameters ====================== common_data["ICON"] = getParamValue("icon", "", args) common_data["AUTHOR"] = getParamValue("author", os.getenv("USER"), args) common_data["VERSION"] = getParamValue("version", "1", args) - common_data["COMP_NAME"] = getParamValue("name", "", args) + common_data["COMP_NAME"] = getParamValue("name", "", args) common_data["COMP_UNAME"] = getParamValue("username", "", args) common_data["COMP_TYPE"] = getParamValue("type", "OTHER", args) common_data["COMP_MULT"] = getParamValue("multistudy", "1", args) common_data["COMP_IMPL"] = getParamValue("impltype", "1", args) print common_data - + remove_comp = getParamValue("remove", "", args) - - #================================================== - + + #================================================== + if (os.path.exists(CatalogFileName)): print "Importing", CatalogFileName C = Catalog(CatalogFileName) @@ -851,15 +848,15 @@ def run(tree, args): C = Catalog() print "Reading idl file" - + visitor = ModuleCatalogVisitor(C) tree.accept(visitor) ## C.Dump() - + if remove_comp : C.removeComponent(remove_comp) - + if (os.path.exists(CatalogFileName)): print "Updating", CatalogFileName CatalogFileName_old = CatalogFileName + '_old' @@ -867,7 +864,7 @@ def run(tree, args): else: CatalogFileName_old = "" print "Writing", CatalogFileName - + CatalogFileName_new = CatalogFileName + '_new' f=open(CatalogFileName_new, 'w') f.write("\n\n") @@ -877,7 +874,7 @@ def run(tree, args): os.rename(CatalogFileName_new, CatalogFileName) if ((CatalogFileName_old != "") & os.path.exists(CatalogFileName_old)): os.unlink(CatalogFileName_old) - + print @@ -885,5 +882,3 @@ if __name__ == "__main__": print print "Usage : omniidl -bIDLparser [-I]* -Wbcatalog=[,icon=][,version=][,author=][,name=][,username=][,multistudy=][,impltype=] " print - - -- 2.39.2