From 4fe913cbf7163aef49e9de2281331e1c273614b7 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Sun, 11 Jan 2015 13:03:55 +0100 Subject: Made Number class interface better --- src/core/common/Number.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) (limited to 'src/core/common/Number.cpp') 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 &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; } - } -- cgit v1.2.3