def __init__(self, filename, translator): self.translator = translator parser = GIRParser(False) parser.parse(filename) self.path = os.path.dirname(os.path.abspath(filename)) self.package = os.path.basename(self.path) self.func_spec = {} func_spec_file = os.path.join(self.path, 'func_spec.py') func_spec_module = imp.load_source('func_spec', func_spec_file) self.func_spec = func_spec_module.func_specs config_file = os.path.join(self.path, 'config.py') config_module = imp.load_source('config', config_file) for name in dir(config_module): if name.startswith('_'): continue if name[0].islower(): continue setattr(self, name.lower(), getattr(config_module, name)) self.namespace = parser.get_namespace() self.module_name = self.namespace.name.lower() self.translator.namespaces.add(self.namespace.name) self.pkgconfig_packages = list(parser.get_pkgconfig_packages()) self.includes = list(parser.get_c_includes()) self.prefixes = self.namespace.symbol_prefixes self.functions = [] self.const_symbols = set() self.class_types = {} self.record_types = {} self.exported_functions = set() self.functions_to_handle = []
def passthrough_gir(path, f): parser = GIRParser() parser.parse(path) writer = GIRWriter(parser.get_namespace(), parser.get_shared_libraries(), parser.get_includes(), parser.get_pkgconfig_packages(), parser.get_c_includes()) f.write(writer.get_xml())