summaryrefslogtreecommitdiff
path: root/src/core/common/Number.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/common/Number.cpp')
-rw-r--r--src/core/common/Number.cpp22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/core/common/Number.cpp b/src/core/common/Number.cpp
index 12f64ae..308a24b 100644
--- a/src/core/common/Number.cpp
+++ b/src/core/common/Number.cpp
@@ -69,7 +69,7 @@ double Number::doubleValue()
int64_t Number::intValue() { return s * a; }
bool Number::appendChar(char c, int base, Part p, CharReader &reader,
- Logger &logger)
+ Logger &logger)
{
// Check whether the given character is valid
int v = charValue(c);
@@ -100,6 +100,22 @@ bool Number::appendChar(char c, int base, Part p, CharReader &reader,
return true;
}
+/**
+ * State used in the parser state machine
+ */
+enum class State {
+ INIT,
+ HAS_MINUS,
+ LEADING_ZERO,
+ LEADING_POINT,
+ INT,
+ HEX,
+ POINT,
+ EXP_INIT,
+ EXP_HAS_MINUS,
+ EXP
+};
+
bool Number::parse(CharReader &reader, Logger &logger,
const std::unordered_set<char> &delims)
{
@@ -238,7 +254,8 @@ bool Number::parse(const std::string &str, Logger &logger)
return parse(reader, logger);
}
-bool Number::parseFixedLenInt(CharReader &reader, int len, int base, Logger &logger)
+bool Number::parseFixedLengthInteger(CharReader &reader, int len, int base,
+ Logger &logger)
{
char c;
reader.consumePeek();
@@ -254,6 +271,5 @@ bool Number::parseFixedLenInt(CharReader &reader, int len, int base, Logger &log
}
return true;
}
-
}