summaryrefslogtreecommitdiff
path: root/cesar/maximus
diff options
context:
space:
mode:
authorNélio Laranjeiro2011-10-26 11:49:20 +0200
committerNélio Laranjeiro2011-11-28 17:08:11 +0100
commit2adcbed9fc11b197cac666f35c182b337552b3b1 (patch)
treea080a2e3513ac85b06de990ab935ae58f45e391c /cesar/maximus
parent89845c5b7c67a3f333eceafa490e82ae7e516266 (diff)
cesar/maximus/python/lib/cesar: add a header defines parser
Diffstat (limited to 'cesar/maximus')
-rw-r--r--cesar/maximus/python/lib/cesar/defineparser.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/cesar/maximus/python/lib/cesar/defineparser.py b/cesar/maximus/python/lib/cesar/defineparser.py
new file mode 100644
index 0000000000..e5f7c4518c
--- /dev/null
+++ b/cesar/maximus/python/lib/cesar/defineparser.py
@@ -0,0 +1,38 @@
+#!/usr/bin/python
+
+#############################################################################
+# Copyright (C) 2011 Spidcom
+#############################################################################
+
+def define_parser (filename):
+ """
+ Get constant defines into a python dict.
+ param filename : the string to parse the file.
+ return a dict containing the defines.
+
+ Supported defines:
+ #define FOO 2
+ #define BAR FOO
+
+ Not supported defines: All Macros set to check values, computes values,
+ etc...
+ """
+ import os
+ import re
+ # Read the file.
+ fd = open (filename, 'r')
+ f = fd.read ()
+ fd.close ()
+ defines = \
+ re.findall (r'(?m)^#define\s+([A-Z_0-9]+)\s+((?:0x)?[0-9A-Z_]+)\s*$',
+ f)
+ defs = {}
+ defines_dict = dict (defines)
+ for i in defines:
+ a = i[0]
+ if re.match (r'^[A-Z][A-Z_0-9]*$', i[1]):
+ b = defines_dict[i[1]]
+ else:
+ b = i[1]
+ defs[a] = int (b, 0)
+ return defs