Imported version 2.7.91
[platform/core/uifw/at-spi2-core.git] / xml / versioned-introspection.py
1
2 import sys
3 from xml.etree import ElementTree
4
5 CTEMPLATE = \
6 """
7 /*
8  * This file has been auto-generated from the introspection data available
9  * in the at-spi2-core repository. The D-Bus procol is defined in this
10  * repository, which can be found at:
11  *
12  * http://download.gnome.org/sources/at-spi2-core/0.1/
13  *
14  * DO NOT EDIT.
15  */
16
17 %s
18 """
19
20 HTEMPLATE = \
21 """
22 /*
23  * This file has been auto-generated from the introspection data available
24  * in the at-spi2-core repository. The D-Bus procol is defined in this
25  * repository, which can be found at:
26  *
27  * http://download.gnome.org/sources/at-spi2-core/0.1/
28  *
29  * DO NOT EDIT.
30  */
31
32 #ifndef SPI_INTROSPECTION_DATA_H_
33 #define SPI_INTROSPECTION_DATA_H_
34
35 %s
36
37 #endif /* SPI_INTROSPECTION_DATA_H_ */
38 """
39
40 DECTEMPLATE = \
41 """
42 const char *%s;
43 """
44
45 DEFTEMPLATE = \
46 """
47 const char *%s = 
48 %s;
49 """
50
51 VERSION = "0.1.7"
52
53 def convert_name (name):
54         return "spi_" + name.replace (".", "_")
55
56 def convert_contents (contents):
57         contents = contents.replace ("\"", "\\\"")
58         literals = ["\"%s\"" % (line) for line in contents.split ("\n")]
59         return "\n".join (literals)
60
61 def main (argv):
62         #Open the XML file and process includes.
63         tree = ElementTree.parse ("Processed.xml")
64         root = tree.getroot ()
65
66         #Open the output files.
67         cfile = open ("introspection.c", "w")
68         hfile = open ("introspection.h", "w")
69
70         ccontents = ""
71         hcontents = ""
72
73         for itf in root.findall ("node/interface"):
74                 #Get and convert the name of the interface.
75                 name = convert_name (itf.attrib["name"])
76
77                 #Create the introspection string with version information.
78                 itf.attrib["version"] = VERSION
79                 contents = convert_contents (ElementTree.tostring (itf))
80
81                 hcontents += DECTEMPLATE % (name)
82                 ccontents += DEFTEMPLATE % (name, contents)
83
84         cfile.write (CTEMPLATE % (ccontents))
85         hfile.write (HTEMPLATE % (hcontents))
86
87         cfile.close ()
88         hfile.close ()  
89         
90 if __name__ == "__main__":
91         sys.exit(main(sys.argv))