diff options
-rw-r--r-- | tests/Makefile | 2 | ||||
-rw-r--r-- | tests/stdc++.cc | 28 | ||||
-rwxr-xr-x | tools/keymap-gen | 13 |
3 files changed, 16 insertions, 27 deletions
diff --git a/tests/Makefile b/tests/Makefile index b7e2d3f..e8a1f50 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -39,7 +39,7 @@ stdc++: stdc++.cc osx2win32.hh osx2win32_name.hh \ osx2xkb.hh osx2xkb_name.hh \ html2win32.hh html2win32_name.hh \ osx.hh osx_name.hh - $(CC) -o $@ $^ + $(CXX) -std=c++11 -o $@ $^ osx2win32.hh: $(SOURCES) $(GEN) --lang stdc++ code-map $(DATA) osx win32 > $@ osx2win32_name.hh: $(SOURCES) diff --git a/tests/stdc++.cc b/tests/stdc++.cc index 71d4bcd..5e3e8f5 100644 --- a/tests/stdc++.cc +++ b/tests/stdc++.cc @@ -22,42 +22,18 @@ #include "osx.hh" #include "osx_name.hh" -#define ARRAY_SIZE(a) (sizeof(a)/sizeof(a[0])) - int main(int argc, char** argv) { - unsigned i; - - assert(code_map_osx_to_win32_len == ARRAY_SIZE(code_map_osx_to_win32)); assert(code_map_osx_to_win32[0x1d] == 0x30); - assert(name_map_osx_to_win32_len == ARRAY_SIZE(name_map_osx_to_win32)); assert(strcmp(name_map_osx_to_win32[0x1d], "VK_0") == 0); - assert(code_map_osx_to_xkb_len == ARRAY_SIZE(code_map_osx_to_xkb)); assert(strcmp(code_map_osx_to_xkb[0x1d], "AE10") == 0); - assert(name_map_osx_to_xkb_len == ARRAY_SIZE(name_map_osx_to_xkb)); assert(strcmp(name_map_osx_to_xkb[0x1d], "AE10") == 0); - assert(code_map_html_to_win32_len == ARRAY_SIZE(code_map_html_to_win32)); - for (i = 0;i < code_map_html_to_win32_len;i++) { - if (strcmp(code_map_html_to_win32[i].from, "ControlLeft") == 0) { - assert(code_map_html_to_win32[i].to == 0x11); - break; - } - } - assert(i != code_map_html_to_win32_len); - assert(name_map_html_to_win32_len == ARRAY_SIZE(name_map_html_to_win32)); - for (i = 0;i < name_map_html_to_win32_len;i++) { - if (strcmp(name_map_html_to_win32[i].from, "ControlLeft") == 0) { - assert(strcmp(name_map_html_to_win32[i].to, "VK_CONTROL") == 0); - break; - } - } - assert(i != name_map_html_to_win32_len); + assert(code_map_html_to_win32.at("ControlLeft") == 0x11); + assert(strcmp(name_map_html_to_win32.at("ControlLeft"), "VK_CONTROL") == 0); - assert(code_table_osx_len == ARRAY_SIZE(code_table_osx)); assert(code_table_osx[0x1d] == 0x3b); - assert(name_table_osx_len == ARRAY_SIZE(name_table_osx)); assert(strcmp(name_table_osx[0x1d], "Control") == 0); return 0; diff --git a/tools/keymap-gen b/tools/keymap-gen index cb8b8fc..6536861 100755 --- a/tools/keymap-gen +++ b/tools/keymap-gen @@ -530,6 +530,19 @@ class CLanguageGenerator(LanguageSrcGenerator): class CppLanguageGenerator(CLanguageGenerator): + def _array_start_code(self, varname, length, fromtype, totype): + totypename = self.inttypename if totype == int else "const " + self.strtypename + if fromtype == int: + print("#include <vector>") + print("const std::vector<%s> %s = {" % (totypename, varname)) + else: + print("#include <map>") + print("#include <string>") + print("const std::map<const std::string, %s> %s = {" % (totypename, varname)) + + def _array_end(self): + print("};") + # designated initializers not available in C++ def _array_entry_code(self, index, value, comment): if type(index) != int: |