From 98210a2092d54b32f9fee8a485e49bc55530139b Mon Sep 17 00:00:00 2001 From: Franck Dary <franck.dary@lis-lab.fr> Date: Tue, 9 Feb 2021 13:12:12 +0100 Subject: [PATCH] strongly typed enums --- common/include/Dict.hpp | 5 +++-- common/src/Dict.cpp | 2 ++ reading_machine/include/Action.hpp | 2 +- reading_machine/include/Config.hpp | 2 +- reading_machine/include/Strategy.hpp | 2 +- reading_machine/src/Transition.cpp | 4 ++-- trainer/include/Trainer.hpp | 2 +- 7 files changed, 11 insertions(+), 8 deletions(-) diff --git a/common/include/Dict.hpp b/common/include/Dict.hpp index 64a5539..f78f0fd 100644 --- a/common/include/Dict.hpp +++ b/common/include/Dict.hpp @@ -10,13 +10,14 @@ class Dict { public : - enum State {Open, Closed}; - enum Encoding {Binary, Ascii}; + enum class State {Open, Closed}; + enum class Encoding {Binary, Ascii}; public : static constexpr char const * unknownValueStr = "__unknownValue__"; static constexpr char const * nullValueStr = "__nullValue__"; + static constexpr char const * oobValueStr = "__oobValue__"; static constexpr char const * noChildValueStr = "__noChildValue__"; static constexpr char const * emptyValueStr = "__emptyValue__"; static constexpr char const * separatorValueStr = "__separatorValue__"; diff --git a/common/src/Dict.cpp b/common/src/Dict.cpp index eab5646..85cdae9 100644 --- a/common/src/Dict.cpp +++ b/common/src/Dict.cpp @@ -6,6 +6,7 @@ Dict::Dict(State state) setState(state); insert(unknownValueStr); insert(nullValueStr); + insert(oobValueStr); insert(noChildValueStr); insert(emptyValueStr); insert(numberValueStr); @@ -301,6 +302,7 @@ bool Dict::isSpecialValue(const std::string & value) { return value == unknownValueStr || value == nullValueStr + || value == oobValueStr || value == noChildValueStr || value == emptyValueStr || value == separatorValueStr diff --git a/reading_machine/include/Action.hpp b/reading_machine/include/Action.hpp index a0b23a3..4afd9e6 100644 --- a/reading_machine/include/Action.hpp +++ b/reading_machine/include/Action.hpp @@ -10,7 +10,7 @@ class Action { public : - enum Type + enum class Type { Push, Pop, diff --git a/reading_machine/include/Config.hpp b/reading_machine/include/Config.hpp index 68408c8..801173f 100644 --- a/reading_machine/include/Config.hpp +++ b/reading_machine/include/Config.hpp @@ -31,7 +31,7 @@ class Config static constexpr int nbHypothesesMax = 1; static constexpr int maxNbAppliableSplitTransitions = 8; - enum Object + enum class Object { Buffer, Stack diff --git a/reading_machine/include/Strategy.hpp b/reading_machine/include/Strategy.hpp index c907b71..c0b3323 100644 --- a/reading_machine/include/Strategy.hpp +++ b/reading_machine/include/Strategy.hpp @@ -19,7 +19,7 @@ class Strategy { private : - enum EndCondition + enum class EndCondition { CannotMove }; diff --git a/reading_machine/src/Transition.cpp b/reading_machine/src/Transition.cpp index db34591..e80ae0b 100644 --- a/reading_machine/src/Transition.cpp +++ b/reading_machine/src/Transition.cpp @@ -758,7 +758,7 @@ void Transition::initEOS(int bufferIndex) costDynamic = [bufferIndex](const Config & config) { - int lineIndex = config.getRelativeWordIndex(Config::Buffer, bufferIndex); + int lineIndex = config.getRelativeWordIndex(Config::Object::Buffer, bufferIndex); if (config.getConst(Config::EOSColName, lineIndex, 0) != Config::EOSSymbol1) return std::numeric_limits<int>::max(); @@ -772,7 +772,7 @@ void Transition::initNotEOS(int bufferIndex) { costDynamic = [bufferIndex](const Config & config) { - int lineIndex = config.getRelativeWordIndex(Config::Buffer, bufferIndex); + int lineIndex = config.getRelativeWordIndex(Config::Object::Buffer, bufferIndex); if (config.getConst(Config::EOSColName, lineIndex, 0) == Config::EOSSymbol1) return std::numeric_limits<int>::max(); diff --git a/trainer/include/Trainer.hpp b/trainer/include/Trainer.hpp index a936bad..ef0f25e 100644 --- a/trainer/include/Trainer.hpp +++ b/trainer/include/Trainer.hpp @@ -9,7 +9,7 @@ class Trainer { public : - enum TrainAction + enum class TrainAction { ExtractGold, ExtractDynamic, -- GitLab