From c412e879a14bf61e477389217b011dc9733b47e6 Mon Sep 17 00:00:00 2001 From: Leonetienne Date: Wed, 2 Jun 2021 15:58:14 +0200 Subject: [PATCH] Added Getters for data-types in Value --- Hazelnupp.vpp | Bin 684032 -> 708608 bytes Hazelnupp/FloatValue.cpp | 5 ++++ Hazelnupp/FloatValue.h | 3 ++ Hazelnupp/IntValue.cpp | 6 ++-- Hazelnupp/IntValue.h | 4 ++- Hazelnupp/ListValue.cpp | 5 ++++ Hazelnupp/ListValue.h | 3 ++ Hazelnupp/StringValue.cpp | 5 ++++ Hazelnupp/StringValue.h | 3 ++ Hazelnupp/Value.cpp | 59 +++++++++++++++++++++++++++++++++++++- Hazelnupp/Value.h | 22 +++++++++++++- Hazelnupp/main.cpp | 2 +- 12 files changed, 110 insertions(+), 7 deletions(-) diff --git a/Hazelnupp.vpp b/Hazelnupp.vpp index 8cffd19a793c4f4e3e83743d7b5eedbe4e2484b3..fc6b34f70f15fe003813dae43ad6d33664f74d2a 100644 GIT binary patch delta 19596 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 ListValue::GetValue() const +{ + return value; +} + std::string ListValue::GetAsOsString() const { std::stringstream ss; diff --git a/Hazelnupp/ListValue.h b/Hazelnupp/ListValue.h index 4215d0f..7aad97a 100644 --- a/Hazelnupp/ListValue.h +++ b/Hazelnupp/ListValue.h @@ -17,6 +17,9 @@ public: //! Will add this value to the list void AddValue(const Value* value); + //! Will return the raw value + const std::vector& GetValue() const; + operator std::vector() const; private: diff --git a/Hazelnupp/StringValue.cpp b/Hazelnupp/StringValue.cpp index b2fa5e6..2849f00 100644 --- a/Hazelnupp/StringValue.cpp +++ b/Hazelnupp/StringValue.cpp @@ -21,6 +21,11 @@ std::string StringValue::GetAsOsString() const return ss.str(); } +const std::string& StringValue::GetValue() const +{ + return value; +} + StringValue::operator std::string() const { return value; diff --git a/Hazelnupp/StringValue.h b/Hazelnupp/StringValue.h index 1d13a53..dd0b797 100644 --- a/Hazelnupp/StringValue.h +++ b/Hazelnupp/StringValue.h @@ -13,6 +13,9 @@ public: //! Will return a string suitable for an std::ostream; std::string GetAsOsString() const override; + //! Will return the raw value + const std::string& GetValue() const; + operator std::string() const; private: diff --git a/Hazelnupp/Value.cpp b/Hazelnupp/Value.cpp index ada73b9..d69c0f6 100644 --- a/Hazelnupp/Value.cpp +++ b/Hazelnupp/Value.cpp @@ -1,8 +1,65 @@ #include "Value.h" +#include "IntValue.h" +#include "FloatValue.h" +#include "StringValue.h" +#include "ListValue.h" Value::Value(DATA_TYPE type) : - type { type } + type{ type } { return; } + +DATA_TYPE Value::GetDataType() const +{ + return type; +} + +long long int Value::GetInt64() const +{ + if (type != DATA_TYPE::INT) + throw std::bad_cast(); + + return ((IntValue*)this)->GetValue(); +} + +int Value::GetInt32() const +{ + if (type != DATA_TYPE::INT) + throw std::bad_cast(); + + return (int)((IntValue*)this)->GetValue(); +} + +long double Value::GetFloat64() const +{ + if (type != DATA_TYPE::FLOAT) + throw std::bad_cast(); + + return ((FloatValue*)this)->GetValue(); +} + +double Value::GetFloat32() const +{ + if (type != DATA_TYPE::FLOAT) + throw std::bad_cast(); + + return (double)((FloatValue*)this)->GetValue(); +} + +const std::string& Value::GetString() const +{ + if (type != DATA_TYPE::STRING) + throw std::bad_cast(); + + return ((StringValue*)this)->GetValue(); +} + +const std::vector& Value::GetList() const +{ + if (type != DATA_TYPE::LIST) + throw std::bad_cast(); + + return ((ListValue*)this)->GetValue(); +} diff --git a/Hazelnupp/Value.h b/Hazelnupp/Value.h index c303644..72afff1 100644 --- a/Hazelnupp/Value.h +++ b/Hazelnupp/Value.h @@ -1,6 +1,7 @@ #pragma once #include "DataType.h" #include +#include class Value { @@ -8,14 +9,33 @@ public: //! Will return a deeopopy of this object virtual Value* Deepcopy() const = 0; - //! Will return a string suitable for an std::ostream; + //! Will return a string suitable for an std::ostream virtual std::string GetAsOsString() const = 0; + //! Will return the data type of this value + DATA_TYPE GetDataType() const; + friend std::ostream& operator<< (std::ostream& os, const Value& v) { return os << v.GetAsOsString(); } + //! Will attempt to return the integer data (long long), if the type matches + long long int GetInt64() const; + //! Will attempt to return the integer data (int), if the type matches + int GetInt32() const; + + //! Will attempt to return the floating-point data (long double), if the type matches + long double GetFloat64() const; + //! Will attempt to return the floating-point data (double), if the type matches + double GetFloat32() const; + + //! Will attempt to return the string-data, if the type matches + const std::string& GetString() const; + + //! Will attempt to return the list-data, if the type matches + const std::vector& GetList() const; + protected: Value(DATA_TYPE type); diff --git a/Hazelnupp/main.cpp b/Hazelnupp/main.cpp index 36996ae..f44e452 100644 --- a/Hazelnupp/main.cpp +++ b/Hazelnupp/main.cpp @@ -28,7 +28,7 @@ int main(int argc, char** argv) if (args.HasParam("--word")) { - int i = *(IntValue*)args["--word"]; + int i = args["--word"]->GetInt32(); std::cout << i << std::endl; } else