Add a script to generate constant for binding
diff --git a/bindings/const_generator.py b/bindings/const_generator.py
new file mode 100644
index 0000000..90e70c9
--- /dev/null
+++ b/bindings/const_generator.py
@@ -0,0 +1,73 @@
+import sys, re
+
+INCL_DIR = '../include'
+
+include = [
+ ('/arm.h', 'ARM_'),
+ ('/arm64.h', 'ARM64_'),
+ ('/x86.h', 'X86_'),
+ ('/mips.h', 'MIPS_'),
+]
+
+template = {
+ 'java': {
+ 'header': "// AUTOGENRATED FILE, DO NOT EDIT\npackage capstone;\n\npublic class %sconst {\n",
+ 'footer': "}",
+ 'line_format': '\tpublic static final int %s = %s;\n',
+ 'out_file': 'java/capstone/%sconst.java',
+ }
+}
+
+def gen(templ):
+ global include, INCL_DIR
+ for target in include:
+ prefix = target[1];
+ outfile = open(templ['out_file'] %(prefix.capitalize()), 'w')
+ outfile.write(templ['header'] % (prefix.capitalize()))
+
+ lines = open(INCL_DIR + target[0]).readlines()
+
+ count = 0
+ for line in lines:
+ line = line.strip()
+ if line == '' or line.startswith('//'):
+ continue
+ if not line.startswith(prefix):
+ continue
+
+ tmp = line.strip().split(',')
+ for t in tmp:
+ t = t.strip()
+ if not t or t.startswith('//'): continue
+ f = re.split('\s+', t)
+
+ if f[0].startswith(prefix):
+ if len(f) > 1 and f[1] not in '//=':
+ print "Error: Unable to convert %s" % f
+ continue
+ elif len(f) > 1 and f[1] == '=':
+ rhs = f[2]
+ else:
+ rhs = str(count)
+ count += 1
+
+ if rhs == '0':
+ outfile.write("\n")
+ count = 1
+
+ outfile.write(templ['line_format'] %(f[0].strip(), rhs))
+
+ outfile.write(templ['footer'])
+ outfile.close()
+
+def main():
+ if (sys.argv[1] == 'java'):
+ gen(template['java'])
+ else:
+ raise RuntimeError("Unsupported binding")
+
+if __name__ == "__main__":
+ if len(sys.argv) < 2:
+ print "Usage:", sys.argv[0], " <bindings: java|python>"
+ sys.exit(1)
+ main()