def genCmd(self, cmdinfo, name, alias): """Generate command.""" OutputGenerator.genCmd(self, cmdinfo, name, alias) if alias: return self.record_name(self.protos, name)
def genCmd(self, cmdinfo, name, alias): OutputGenerator.genCmd(self, cmdinfo, name, alias) # @@@ (Jon) something needs to be done here to handle aliases, probably self.makeThreadSafetyBlocks(cmdinfo.elem, 'param') self.writeInclude()
def genCmd(self, cmdinfo, name): OutputGenerator.genCmd(self, cmdinfo, name) # decls = self.makeStub(cmdinfo.elem) self.featurePointerInitializersInstance.append(decls[0]) self.featurePointerInitializersDevice.append(decls[1]) self.featurePointers.append(decls[2])
def genCmd(self, cmdinfo, name): OutputGenerator.genCmd(self, cmdinfo, name) return_type = cmdinfo.elem.find('proto/type') if return_type is not None and return_type.text == 'XrResult': # This command is an XrResult, so check that it returns at least the required errors. required_errors = [ 'XR_ERROR_VALIDATION_FAILURE' ] errorcodes = cmdinfo.elem.attrib.get('errorcodes').split(',') if not set(required_errors).issubset(set(errorcodes)): self.logMsg('error', 'Missing required error code for command: ', name, '\n') exit(1) decls = self.makeCDecls(cmdinfo.elem) self.writeInclude('protos', name, decls[0])
def genCmd(self, cmdinfo, name, alias): OutputGenerator.genCmd(self, cmdinfo, name, alias) # if alias: # prefix = '// ' + name + ' is an alias of command ' + alias + '\n' # else: # prefix = '' prefix = '' decls = self.makeCDecls(cmdinfo.elem) self.appendSection('command', prefix + decls[0] + '\n') if self.genOpts.genFuncPointers: self.appendSection('commandPointer', decls[1])
def genCmd(self, cmdinfo, name, alias): OutputGenerator.genCmd(self, cmdinfo, name, alias) return_type = cmdinfo.elem.find('proto/type') if self.genOpts.conventions.requires_error_validation(return_type): # This command returns an API result code, so check that it # returns at least the required errors. required_errors = self.genOpts.conventions.required_errors errorcodes = cmdinfo.elem.get('errorcodes').split(',') if not required_errors.issubset(set(errorcodes)): self.logMsg('error', 'Missing required error code for command: ', name, '\n') exit(1) decls = self.makeCDecls(cmdinfo.elem) self.writeInclude('protos', name, decls[0])
def genCmd(self, cmdinfo, name, alias): "Command generation" OutputGenerator.genCmd(self, cmdinfo, name, alias) # if alias: # prefix = '// ' + name + ' is an alias of command ' + alias + '\n' # else: # prefix = '' if self.genOpts is None: raise MissingGeneratorOptionsError() prefix = '' decls = self.makeCDecls(cmdinfo.elem) self.appendSection('command', prefix + decls[0] + '\n') if self.genOpts.genFuncPointers: self.appendSection('commandPointer', decls[1])
def genCmd(self, cmdinfo, name, alias): OutputGenerator.genCmd(self, cmdinfo, name, alias) if alias: # Add name -> alias mapping self.addName(self.alias, name, alias) else: # May want to only emit definition on this branch True # Add a typeCategory{} entry for the category of this type. self.addName(self.typeCategory, name, 'protos') params = [param.text for param in cmdinfo.elem.findall('param/name')] self.protos[name] = params paramTypes = [param.text for param in cmdinfo.elem.findall('param/type')] for param_type in paramTypes: self.addMapping(name, param_type)
def genCmd(self, cmdinfo, name, alias): "Generate command." OutputGenerator.genCmd(self, cmdinfo, name, alias) return_type = cmdinfo.elem.find('proto/type') if self.genOpts.conventions.requires_error_validation(return_type): # This command returns an API result code, so check that it # returns at least the required errors. # TODO move this to consistency_tools required_errors = set(self.genOpts.conventions.required_errors) errorcodes = cmdinfo.elem.get('errorcodes').split(',') if not required_errors.issubset(set(errorcodes)): self.logMsg('error', 'Missing required error code for command: ', name, '\n') exit(1) body = self.genRequirements(name) decls = self.makeCDecls(cmdinfo.elem) body += decls[0] self.writeInclude('protos', name, body)
def genCmd(self, cmdinfo, name, alias): OutputGenerator.genCmd(self, cmdinfo, name, alias) if alias: # Add name -> alias mapping self.addName(self.alias, name, alias) else: # May want to only emit definition on this branch True # Add a typeCategory{} entry for the category of this type. self.addName(self.typeCategory, name, 'protos') params = [param.text for param in cmdinfo.elem.findall('param/name')] self.protos[name] = params paramTypes = [ param.text for param in cmdinfo.elem.findall('param/type') ] for param_type in paramTypes: self.addMapping(name, param_type)
def genCmd(self, cmdinfo, name, alias): OutputGenerator.genCmd(self, cmdinfo, name, alias) if self.processCmds: # Create the declaration for the function prototype proto = cmdinfo.elem.find('proto') protoDecl = self.genOpts.apicall + noneStr(proto.text) for elem in proto: text = noneStr(elem.text) tail = noneStr(elem.tail) if (elem.tag == 'name'): if text.startswith('vk'): text = text[2:] protoDecl += self.makeProtoName(text, tail) else: protoDecl += text + tail returnType = noneStr(proto.text) + noneStr(proto.find('type').text) # TODO: Define a class or namedtuple for the dictionary entry self.featureCmdParams[name] = (returnType, protoDecl, self.makeValueInfo( cmdinfo.elem.findall('param')))
def genCmd(self, cmdinfo, name, alias): """Generate command. - Add the command name to the 'protos' dictionary, with the value being an ordered list of the parameter names.""" OutputGenerator.genCmd(self, cmdinfo, name, alias) if alias: # Add name -> alias mapping self.addName(self.alias, name, alias) else: # May want to only emit definition on this branch True # Add a typeCategory{} entry for the category of this type. self.addName(self.typeCategory, name, 'protos') params = [param.text for param in cmdinfo.elem.findall('param/name')] self.protos[name] = params paramTypes = [param.text for param in cmdinfo.elem.findall('param/type')] for param_type in paramTypes: self.addMapping(name, param_type)
def genCmd(self, cmdinfo, name, alias): "Generate command." OutputGenerator.genCmd(self, cmdinfo, name, alias) decls = self.makeCDecls(cmdinfo.elem) self.writeInclude('protos', name, decls[0])