diff options
Diffstat (limited to 'xml/versioned-introspection.py')
-rw-r--r-- | xml/versioned-introspection.py | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/xml/versioned-introspection.py b/xml/versioned-introspection.py new file mode 100644 index 0000000..3922f66 --- /dev/null +++ b/xml/versioned-introspection.py @@ -0,0 +1,91 @@ + +import sys +from xml.etree import ElementTree + +CTEMPLATE = \ +""" +/* + * This file has been auto-generated from the introspection data available + * in the at-spi2-core repository. The D-Bus procol is defined in this + * repository, which can be found at: + * + * http://download.gnome.org/sources/at-spi2-core/0.1/ + * + * DO NOT EDIT. + */ + +%s +""" + +HTEMPLATE = \ +""" +/* + * This file has been auto-generated from the introspection data available + * in the at-spi2-core repository. The D-Bus procol is defined in this + * repository, which can be found at: + * + * http://download.gnome.org/sources/at-spi2-core/0.1/ + * + * DO NOT EDIT. + */ + +#ifndef SPI_INTROSPECTION_DATA_H_ +#define SPI_INTROSPECTION_DATA_H_ + +%s + +#endif /* SPI_INTROSPECTION_DATA_H_ */ +""" + +DECTEMPLATE = \ +""" +extern const char *%s; +""" + +DEFTEMPLATE = \ +""" +const char *%s = +%s; +""" + +VERSION = "0.1.7" + +def convert_name (name): + return "spi_" + name.replace (".", "_") + +def convert_contents (contents): + contents = contents.replace ("\"", "\\\"") + literals = ["\"%s\"" % (line) for line in contents.split ("\n")] + return "\n".join (literals) + +def main (argv): + #Open the XML file and process includes. + tree = ElementTree.parse ("Processed.xml") + root = tree.getroot () + + #Open the output files. + cfile = open ("introspection.c", "w") + hfile = open ("introspection.h", "w") + + ccontents = "" + hcontents = "" + + for itf in root.findall ("node/interface"): + #Get and convert the name of the interface. + name = convert_name (itf.attrib["name"]) + + #Create the introspection string with version information. + itf.attrib["version"] = VERSION + contents = convert_contents (ElementTree.tostring (itf)) + + hcontents += DECTEMPLATE % (name) + ccontents += DEFTEMPLATE % (name, contents) + + cfile.write (CTEMPLATE % (ccontents)) + hfile.write (HTEMPLATE % (hcontents)) + + cfile.close () + hfile.close () + +if __name__ == "__main__": + sys.exit(main(sys.argv)) |