aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvSFEnum.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
committerFelix Morgner <felix.morgner@gmail.com>2026-08-24 11:16:07 +0200
commitc068f22329d5cc722622a2183bbb22eef2093df7 (patch)
tree12d56c1aede67988a55e241364606bfbb4dba933 /tool_src/QvLib/QvSFEnum.cpp
downloadopenparsec-c068f22329d5cc722622a2183bbb22eef2093df7.tar.xz
openparsec-c068f22329d5cc722622a2183bbb22eef2093df7.zip
initial importHEADmain
Diffstat (limited to 'tool_src/QvLib/QvSFEnum.cpp')
-rw-r--r--tool_src/QvLib/QvSFEnum.cpp58
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;
+}