diff --git a/src/core/CommandMap.cc b/src/core/CommandMap.cc index 420a94e..4552f2e 100644 --- a/src/core/CommandMap.cc +++ b/src/core/CommandMap.cc @@ -5,13 +5,27 @@ void CommandMap::add(const char * s, uint32_t id, std::shared_ptr next_map, bool following_char) { - Node * node = &m_root_node; size_t length = strlen(s); + if (length < 1u) + return; + std::vector v(length); + for (size_t i = 0u; i < length; i++) + { + v[i] = s[i]; + } + add(v, id, next_map, following_char); +} + +void CommandMap::add(const std::vector & s, uint32_t id, + std::shared_ptr next_map, bool following_char) +{ + Node * node = &m_root_node; + size_t length = s.size(); if (length < 1u) return; for (size_t i = 0u; i < length; i++) { - uint32_t c = (uint32_t)s[i]; + const uint32_t c = s[i]; auto it = node->next_chars.find(c); if (it != node->next_chars.end()) { diff --git a/src/core/CommandMap.h b/src/core/CommandMap.h index e17b1fb..8a03a02 100644 --- a/src/core/CommandMap.h +++ b/src/core/CommandMap.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "Command.h" class CommandMap @@ -18,6 +19,8 @@ public: void add(const char * s, uint32_t id, std::shared_ptr next_map, bool following_char); + void add(const std::vector & s, uint32_t id, + std::shared_ptr next_map, bool following_char); uint8_t lookup_command(const uint32_t * command_characters, size_t length, Command & command) const;