[Spice-devel] [spice-common 1/5] codegen: Improve header guard generation

Christophe Fergeau cfergeau at redhat.com
Thu Jun 23 10:57:17 UTC 2016


From: Frediano Ziglio <fziglio at redhat.com>

Until now, the same header guard was used for all generated .h files.
Now the header guard name is based on the name of the file being
generated so that it's different for each .h file.
---
Frediano, I left you as the author of this patch but I squashed the changes I
suggested, I can take ownership and mention you in the commit log if you prefer.

Christophe


 python_modules/marshal.py | 13 +++++++++++--
 spice_codegen.py          |  1 +
 2 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/python_modules/marshal.py b/python_modules/marshal.py
index cc6cbdf..dc36e18 100644
--- a/python_modules/marshal.py
+++ b/python_modules/marshal.py
@@ -1,13 +1,22 @@
 
 from . import ptypes
 from . import codegen
+import re
 
 def write_includes(writer):
     writer.header.writeln("#include <spice/protocol.h>")
     writer.header.writeln('#include "common/marshaller.h"')
     writer.header.newline()
-    writer.header.writeln("#ifndef _GENERATED_HEADERS_H")
-    writer.header.writeln("#define _GENERATED_HEADERS_H")
+    if writer.header.has_option("dest_file"):
+        src = writer.header.options["dest_file"]
+    else:
+        src = "generated_headers.h"
+    src = re.sub(r'[^a-z0-9]+', '_', src, flags=re.IGNORECASE)
+    src = src.upper()
+    if src.endswith("_H"):
+        src = "_H_"+src[:-2]
+    writer.header.writeln("#ifndef %s" % src)
+    writer.header.writeln("#define %s" % src)
 
     writer.writeln("#include <string.h>")
     writer.writeln("#include <assert.h>")
diff --git a/spice_codegen.py b/spice_codegen.py
index 569cccc..53c7be3 100755
--- a/spice_codegen.py
+++ b/spice_codegen.py
@@ -170,6 +170,7 @@ if proto == None:
 codegen.set_prefix(proto.name)
 writer = codegen.CodeWriter()
 writer.header = codegen.CodeWriter()
+writer.header.set_option("dest_file", dest_file)
 writer.set_option("source", os.path.basename(proto_file))
 
 license = """/*
-- 
2.7.4



More information about the Spice-devel mailing list