diff options
author | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-11 15:26:50 +0100 |
---|---|---|
committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2014-12-11 15:26:50 +0100 |
commit | 3f62168ed0b088eec3cb2903f03966f7d501f564 (patch) | |
tree | 781f5bd9b304d9eb931827a26f463575d772983d /src/core/variant/Variant.cpp | |
parent | b74936760e28a92cadfaec47928ea478fe2d72ee (diff) |
moved to CharReader everywhere
Diffstat (limited to 'src/core/variant/Variant.cpp')
-rw-r--r-- | src/core/variant/Variant.cpp | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/src/core/variant/Variant.cpp b/src/core/variant/Variant.cpp deleted file mode 100644 index d33cd4f..0000000 --- a/src/core/variant/Variant.cpp +++ /dev/null @@ -1,155 +0,0 @@ -/* - Ousía - Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <sstream> - -#include <core/Utils.hpp> - -#include "Variant.hpp" - -namespace ousia { - -/* Class Variant::TypeException */ - -Variant::TypeException::TypeException(Type actualType, Type requestedType) - : OusiaException(std::string("Variant: Requested \"") + - Variant::getTypeName(requestedType) + - std::string("\" but is \"") + - Variant::getTypeName(actualType) + std::string("\"")), - actualType(actualType), - requestedType(requestedType) -{ -} - -/* Class Variant */ - -const char *Variant::getTypeName(Type type) -{ - switch (type) { - case Type::NULLPTR: - return "null"; - case Type::BOOL: - return "boolean"; - case Type::INT: - return "integer"; - case Type::DOUBLE: - return "double"; - case Type::STRING: - return "string"; - case Type::ARRAY: - return "array"; - case Type::MAP: - return "map"; - } - return "unknown"; -} - -Variant::boolType Variant::toBool() const -{ - switch (getType()) { - case Type::NULLPTR: - return false; - case Type::BOOL: - return asBool(); - case Type::INT: - return asInt() != 0; - case Type::DOUBLE: - return asDouble() != 0.0; - case Type::STRING: - return true; - case Type::ARRAY: - return true; - case Type::MAP: - return true; - } - return false; -} - -Variant::intType Variant::toInt() const -{ - switch (getType()) { - case Type::NULLPTR: - return 0; - case Type::BOOL: - return asBool() ? 1 : 0; - case Type::INT: - return asInt(); - case Type::DOUBLE: - return asDouble(); - case Type::STRING: - return 0; // TODO: Parse string as int - case Type::ARRAY: { - const arrayType &a = asArray(); - return (a.size() == 1) ? a[0].toInt() : 0; - } - case Type::MAP: - return 0; - } - return false; -} - -Variant::doubleType Variant::toDouble() const -{ - switch (getType()) { - case Type::NULLPTR: - return 0.0; - case Type::BOOL: - return asBool() ? 1.0 : 0.0; - case Type::INT: - return asInt(); - case Type::DOUBLE: - return asDouble(); - case Type::STRING: - return 0.0; // TODO: Parse string as double - case Type::ARRAY: { - const arrayType &a = asArray(); - return (a.size() == 1) ? a[0].toDouble() : 0; - } - case Type::MAP: - return 0; - } - return false; -} - -Variant::stringType Variant::toString(bool escape) const -{ - switch (getType()) { - case Type::NULLPTR: - return "null"; - case Type::BOOL: - return asBool() ? "true" : "false"; - case Type::INT: - return std::to_string(asInt()); - case Type::DOUBLE: - return std::to_string(asDouble()); - case Type::STRING: { - // TODO: Use proper serialization function - std::stringstream ss; - ss << "\"" << asString() << "\""; - return ss.str(); - } - case Type::ARRAY: - return Utils::join(asArray(), ", ", "[", "]"); - case Type::MAP: - return Utils::join(asMap(), ", ", "{", "}"); - } - return ""; -} - -} - |