def makeRegistry(self): try: import lxml.etree as etree HAS_LXML = True except ImportError: HAS_LXML = False if not HAS_LXML: return super().makeRegistry() registryFile = str(SPECIFICATION_DIR / 'registry/xr.xml') registry = Registry() registry.filename = registryFile registry.loadElementTree(etree.parse(registryFile)) return registry
def makeRegistry(self): # This tries to override and use lxml instead of the built-in etree. # lxml isn't suitable for generation, but it's fine for this checking, # and it provides file line info which is useful in messages. try: import lxml.etree as etree HAS_LXML = True except ImportError: HAS_LXML = False if not HAS_LXML: return super().makeRegistry() registryFile = str(SPECIFICATION_DIR / 'registry/xr.xml') registry = Registry() registry.filename = registryFile registry.loadElementTree(etree.parse(registryFile)) return registry
# Create the API generator & generator options (gen, options) = genTarget(args) # Create the registry object with the specified generator and generator # options. The options are set before XML loading as they may affect it. reg = Registry(gen, options) # Parse the specified registry XML into an ElementTree object startTimer(args.time) tree = etree.parse(args.registry) endTimer(args.time, '* Time to make ElementTree =') # Load the XML tree into the registry object startTimer(args.time) reg.loadElementTree(tree) endTimer(args.time, '* Time to parse ElementTree =') if args.validate: reg.validateGroups() if args.dump: logDiag('* Dumping registry to regdump.txt') reg.dumpReg(filehandle=open('regdump.txt', 'w', encoding='utf-8')) # Finally, use the output generator to create the requested target if args.debug: pdb.run('reg.apiGen()') else: startTimer(args.time) reg.apiGen()
DGeneratorOptions( filename=path.join(srcDir, "vk.d"), module="{}.vk".format(pack), apiname="vulkan", regFile=path.join(regDir, "vk.xml"), versions=featuresPat, addExtensions=addPlatformExtensionsRE, removeExtensions=None, emitExtensions=emitPlatformExtensionsRE, ), ] for opts in buildList: gen = DGenerator() reg = Registry() reg.loadElementTree(etree.parse(opts.regFile)) reg.setGenerator(gen) reg.apiGen(opts) files.append(opts.filename) import platform libname = '' if platform.system() == 'Windows': libname = 'vkd.lib' else: libname = 'libvkd.a' with open(path.join(rootDir, 'dmd_args.txt'), "w") as argfile: argfile.write('-lib\n') argfile.write('-I' + args.dest + '\n') argfile.write('-of' + path.join(rootDir, libname) + '\n')