def visitInterface(node): if node.local(): # No POA class for local interfaces return iname = id.mapID(node.identifier()) environment = id.lookup(node) scopedName = id.Name(node.scopedName()) impl_scopedName = scopedName.prefix("_impl_") scopedID = scopedName.fullyQualify() impl_scopedID = impl_scopedName.fullyQualify() POA_name = POA_prefix() + iname # deal with inheritance inherits = [] for i in map(ast.remove_ast_typedefs, node.inherits()): name = id.Name(i.scopedName()) i_POA_name = name.unambiguous(environment) if name.relName(environment) == None: # we need to fully qualify from the root i_POA_name = "::POA_" + name.fullyQualify(environment) elif name.relName(environment) == i.scopedName(): # fully qualified (but not from root) POA name has a POA_ on the # front i_POA_name = "POA_" + i_POA_name inherits.append("public virtual " + i_POA_name) # Note that RefCountServantBase is a mixin class specified by the # implementor, not generated by the idl compiler. if node.inherits() == []: inherits.append("public virtual ::PortableServer::ServantBase") inherits_str = ",\n ".join(inherits) # build the normal POA class first stream.out(template.POA_interface, POA_name=POA_name, scopedID=scopedID, impl_scopedID=impl_scopedID, inherits=inherits_str) if config.state['Normal Tie']: # Normal tie templates, inline (so already in relevant POA_ # module) poa_name = "" if len(scopedName.fullName()) == 1: poa_name = "POA_" poa_name = poa_name + scopedName.simple() tie_name = poa_name + "_tie" tie.write_template(tie_name, poa_name, node, stream) return
def visitInterface(node): if node.local(): # No POA class for local interfaces return iname = id.mapID(node.identifier()) environment = id.lookup(node) scopedName = id.Name(node.scopedName()) impl_scopedName = scopedName.prefix("_impl_") scopedID = scopedName.fullyQualify() impl_scopedID = impl_scopedName.fullyQualify() POA_name = POA_prefix() + iname # deal with inheritance inherits = [] for i in map(ast.remove_ast_typedefs, node.inherits()): name = id.Name(i.scopedName()) i_POA_name = name.unambiguous(environment) if name.relName(environment) == None: # we need to fully qualify from the root i_POA_name = "::POA_" + name.fullyQualify(environment) elif name.relName(environment) == i.scopedName(): # fully qualified (but not from root) POA name has a POA_ on the # front i_POA_name = "POA_" + i_POA_name inherits.append("public virtual " + i_POA_name) # Note that RefCountServantBase is a mixin class specified by the # implementor, not generated by the idl compiler. if node.inherits() == []: inherits.append("public virtual ::PortableServer::ServantBase") inherits_str = ",\n ".join(inherits) # build the normal POA class first stream.out(template.POA_interface, POA_name = POA_name, scopedID = scopedID, impl_scopedID = impl_scopedID, inherits = inherits_str) if config.state['Normal Tie']: # Normal tie templates, inline (so already in relevant POA_ # module) poa_name = "" if len(scopedName.fullName()) == 1: poa_name = "POA_" poa_name = poa_name + scopedName.simple() tie_name = poa_name + "_tie" tie.write_template(tie_name, poa_name, node, stream) return