summaryrefslogtreecommitdiff
path: root/src/core
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-11 13:03:55 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2015-01-11 13:03:55 +0100
commit4fe913cbf7163aef49e9de2281331e1c273614b7 (patch)
treeb6bbd743c1f810f23d7c23265af9cb333ccccacc /src/core
parent7950e05b381308a3beb3c6d1538de6af047e5c0c (diff)
Made Number class interface better
Diffstat (limited to 'src/core')
-rw-r--r--src/core/common/Number.cpp22
-rw-r--r--src/core/common/Number.hpp21
-rw-r--r--src/core/common/VariantReader.cpp30
3 files changed, 37 insertions, 36 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;
}
-
}
diff --git a/src/core/common/Number.hpp b/src/core/common/Number.hpp
index 89a689e..23db42e 100644
--- a/src/core/common/Number.hpp
+++ b/src/core/common/Number.hpp
@@ -45,22 +45,6 @@ class Logger;
class Number {
private:
/**
- * 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
- };
-
- /**
* Reprsents the part of the number: Base value a, nominator n, exponent e.
*/
enum class Part { A, N, E };
@@ -155,7 +139,7 @@ public:
bool parse(const std::string &str, Logger &logger);
/**
- * Parses a number with a fixed length and the given base.
+ * Parses an integer with a fixed length and the given base.
*
* @param reader is a reference at the char reader from which the number
* should be read.
@@ -163,8 +147,9 @@ public:
* @param base is the base of the number.
* @param logger is the logger instance to which error messages should be
* written.
+ * @return true if parsing was successful, false otherwise.
*/
- bool parseFixedLenInt(CharReader &reader, int len, int base,
+ bool parseFixedLengthInteger(CharReader &reader, int len, int base,
Logger &logger);
};
}
diff --git a/src/core/common/VariantReader.cpp b/src/core/common/VariantReader.cpp
index 904713e..faad40c 100644
--- a/src/core/common/VariantReader.cpp
+++ b/src/core/common/VariantReader.cpp
@@ -374,21 +374,21 @@ std::pair<bool, std::string> VariantReader::parseString(
case 'x': {
// Parse Latin-1 sequence \xXX
Number n;
- hadError =
- !(n.parseFixedLenInt(reader, 2, 16, logger) &&
- encodeUtf8(res, reader, logger, n.intValue(),
- true)) ||
- hadError;
+ hadError = !(n.parseFixedLengthInteger(reader, 2, 16,
+ logger) &&
+ encodeUtf8(res, reader, logger,
+ n.intValue(), true)) ||
+ hadError;
break;
}
case 'u': {
// Parse Unicode sequence \uXXXX
Number n;
- hadError =
- !(n.parseFixedLenInt(reader, 4, 16, logger) &&
- encodeUtf8(res, reader, logger, n.intValue(),
- false)) ||
- hadError;
+ hadError = !(n.parseFixedLengthInteger(reader, 4, 16,
+ logger) &&
+ encodeUtf8(res, reader, logger,
+ n.intValue(), false)) ||
+ hadError;
break;
}
default:
@@ -396,11 +396,11 @@ std::pair<bool, std::string> VariantReader::parseString(
// Parse Latin-1 sequence \000
reader.resetPeek();
Number n;
- hadError =
- !(n.parseFixedLenInt(reader, 3, 8, logger) &&
- encodeUtf8(res, reader, logger, n.intValue(),
- true)) ||
- hadError;
+ hadError = !(n.parseFixedLengthInteger(reader, 3, 8,
+ logger) &&
+ encodeUtf8(res, reader, logger,
+ n.intValue(), true)) ||
+ hadError;
} else {
logger.error(ERR_INVALID_ESCAPE, reader);
hadError = true;