From 70dfeeba9105581a2775b88a109268d89a5a30ab Mon Sep 17 00:00:00 2001 From: Martin Michelsen Date: Fri, 8 Nov 2024 10:20:11 -0800 Subject: [PATCH] add WordSelectTable::validate --- src/WordSelectTable.cc | 14 ++++++++++++++ src/WordSelectTable.hh | 6 ++---- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/WordSelectTable.cc b/src/WordSelectTable.cc index 58499b3d..aea012bc 100644 --- a/src/WordSelectTable.cc +++ b/src/WordSelectTable.cc @@ -280,6 +280,20 @@ void WordSelectTable::print_index(FILE* stream, Version v) const { } } +WordSelectMessage WordSelectTable::validate(const WordSelectMessage& msg, Version version) const { + const auto& index = this->tokens_for_version(version); + + for (size_t z = 0; z < msg.tokens.size(); z++) { + if (msg.tokens[z] == 0xFFFF) { + continue; + } + const auto& token = index.at(msg.tokens[z]); + if (!token) { + throw runtime_error(phosg::string_printf("token %04hX does not exist in the index", msg.tokens[z].load())); + } + } +} + WordSelectMessage WordSelectTable::translate( const WordSelectMessage& msg, Version from_version, diff --git a/src/WordSelectTable.hh b/src/WordSelectTable.hh index d950986a..db52ae04 100644 --- a/src/WordSelectTable.hh +++ b/src/WordSelectTable.hh @@ -81,10 +81,8 @@ public: void print(FILE* stream) const; void print_index(FILE* stream, Version v) const; - WordSelectMessage translate( - const WordSelectMessage& msg, - Version from_version, - Version to_version) const; + WordSelectMessage validate(const WordSelectMessage& msg, Version version) const; + WordSelectMessage translate(const WordSelectMessage& msg, Version from_version, Version to_version) const; private: struct Token {