]> git.0d.be Git - empathy.git/blobdiff - tools/glib-interfaces-gen.py
3.12.2
[empathy.git] / tools / glib-interfaces-gen.py
index 69c721be36d303b064fe83454b613f262178bcf6..b67d7b4f0c8013d450f4cf6bd0cf4cdbc55d39d6 100644 (file)
@@ -3,6 +3,7 @@
 from sys import argv, stdout, stderr
 import xml.dom.minidom
 
+from libtpcodegen import file_set_contents, u
 from libglibcodegen import NS_TP, get_docstring, \
         get_descendant_text, get_by_path
 
@@ -13,25 +14,33 @@ class Generator(object):
         assert declfile.endswith('.h')
         docfile = declfile[:-2] + '-gtk-doc.h'
 
-        self.impls = open(implfile, 'w')
-        self.decls = open(declfile, 'w')
-        self.docs = open(docfile, 'w')
+        self.implfile = implfile
+        self.declfile = declfile
+        self.docfile = docfile
+
+        self.impls = []
+        self.decls = []
+        self.docs = []
         self.spec = get_by_path(dom, "spec")[0]
 
     def h(self, code):
-        self.decls.write(code.encode('utf-8'))
+        self.decls.append(code)
 
     def c(self, code):
-        self.impls.write(code.encode('utf-8'))
+        self.impls.append(code)
 
     def d(self, code):
-        self.docs.write(code.encode('utf-8'))
+        self.docs.append(code)
 
     def __call__(self):
         for f in self.h, self.c:
             self.do_header(f)
         self.do_body()
 
+        file_set_contents(self.implfile, u('').join(self.impls).encode('utf-8'))
+        file_set_contents(self.declfile, u('').join(self.decls).encode('utf-8'))
+        file_set_contents(self.docfile, u('').join(self.docs).encode('utf-8'))
+
     # Header
     def do_header(self, f):
         f('/* Generated from: ')
@@ -49,6 +58,7 @@ class Generator(object):
         f("""
  */
 
+#include <glib.h>
 """)
 
     # Body