diff options
author | Peter Korsgaard <peter@korsgaard.com> | 2017-05-23 09:58:16 +0200 |
---|---|---|
committer | Peter Korsgaard <peter@korsgaard.com> | 2017-05-23 10:07:30 +0200 |
commit | e9592077371ddf64b8bfe6e7454a28078707c3ad (patch) | |
tree | 2836522817da10b10bf751cffc76e8651e668ba4 | |
parent | 7bf5710b22aa8d58b7eeaaf3dc6960c26cade4f0 (diff) | |
download | keycodemapdb-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>
-rwxr-xr-x | tools/keymap-gen | 21 |
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(), |