aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorPeter Korsgaard <peter@korsgaard.com>2017-05-23 09:58:16 +0200
committerPeter Korsgaard <peter@korsgaard.com>2017-05-23 10:07:30 +0200
commite9592077371ddf64b8bfe6e7454a28078707c3ad (patch)
tree2836522817da10b10bf751cffc76e8651e668ba4 /tools
parent7bf5710b22aa8d58b7eeaaf3dc6960c26cade4f0 (diff)
downloadkeycodemapdb-e9592077371ddf64b8bfe6e7454a28078707c3ad.zip
keycodemapdb-e9592077371ddf64b8bfe6e7454a28078707c3ad.tar.gz
keycodemapdb-e9592077371ddf64b8bfe6e7454a28078707c3ad.tar.bz2
keymap-gen: add support for generating output for C++
Designated initializers ([index] = value,) are not available in C++: https://gcc.gnu.org/onlinedocs/gcc/Designated-Inits.html So add a custom stdc++ output format which outputs all array entries instead of the "sparse" C variant. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/keymap-gen21
1 files changed, 21 insertions, 0 deletions
diff --git a/tools/keymap-gen b/tools/keymap-gen
index a10c538..914b40c 100755
--- a/tools/keymap-gen
+++ b/tools/keymap-gen
@@ -493,11 +493,31 @@ class CLanguageGenerator(LanguageSrcGenerator):
if value is not None:
print(" [0x%x] = \"%s\", /* %s */" % (index, value, comment))
+class CppLanguageGenerator(CLanguageGenerator):
+
+ # designated initializers not available in C++
+ def _array_entry_code(self, index, value, comment):
+ if value is not None:
+ print(" 0x%x, /* %s */" % (value, comment))
+ else:
+ print(" 0, /* %s */" % comment)
+
+ def _array_entry_name(self, index, value, comment):
+ if value is not None:
+ print(" \"%s\", /* %s */" % (value, comment))
+ else:
+ print(" 0, /* %s */" % comment)
+
class StdCLanguageGenerator(CLanguageGenerator):
def __init__(self):
super(StdCLanguageGenerator, self).__init__("unsigned short", "char *")
+class StdCppLanguageGenerator(CppLanguageGenerator):
+
+ def __init__(self):
+ super(StdCppLanguageGenerator, self).__init__("unsigned short", "char *")
+
class GLib2LanguageGenerator(CLanguageGenerator):
def __init__(self):
@@ -603,6 +623,7 @@ class PodLanguageGenerator(LanguageDocGenerator):
SRC_GENERATORS = {
"stdc": StdCLanguageGenerator(),
+ "stdc++": StdCppLanguageGenerator(),
"glib2": GLib2LanguageGenerator(),
"python2": PythonLanguageGenerator(),
"python3": PythonLanguageGenerator(),