diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2026-08-24 11:16:07 +0200 |
| commit | c068f22329d5cc722622a2183bbb22eef2093df7 (patch) | |
| tree | 12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/QvLib/QvSFEnum.cpp | |
| download | openparsec-main.tar.xz openparsec-main.zip | |
Diffstat (limited to 'tool_src/QvLib/QvSFEnum.cpp')
| -rw-r--r-- | tool_src/QvLib/QvSFEnum.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvSFEnum.cpp b/tool_src/QvLib/QvSFEnum.cpp new file mode 100644 index 0000000..2c41da9 --- /dev/null +++ b/tool_src/QvLib/QvSFEnum.cpp @@ -0,0 +1,58 @@ +#include <QvDebugError.h> +#include <QvReadError.h> +#include <QvSFEnum.h> + +// Can't use macro, since we define a constructor. + +QvSFEnum::QvSFEnum() +{ + enumValues = NULL; + enumNames = NULL; +} + +QvSFEnum::~QvSFEnum() +{ +} + +QvBool +QvSFEnum::findEnumValue(const QvName &name, int &val) const +{ + int i; + + // Look through names table for one that matches + for (i = 0; i < numEnums; i++) { + if (name == enumNames[i]) { + val = enumValues[i]; + return TRUE; + } + } + + return FALSE; +} + +QvBool +QvSFEnum::readValue(QvInput *in) +{ + QvName n; + +#ifdef DEBUG + if (enumValues == NULL) { + QvDebugError::post("QvSFEnum::readValue", + "Enum values were never initialized"); + QvReadError::post(in, "Couldn't read QvSFEnum value"); + return FALSE; + } +#endif /* DEBUG */ + + // Read mnemonic value as a character string identifier + if (! in->read(n, TRUE)) + return FALSE; + + if (findEnumValue(n, value)) + return TRUE; + + // Not found? Too bad + QvReadError::post(in, "Unknown QvSFEnum enumeration value \"%s\"", + n.getString()); + return FALSE; +} |
