From b2393f935f64f20dede44dc1b37aca9a6efc77f1 Mon Sep 17 00:00:00 2001 From: Eatswap Date: Mon, 12 Dec 2022 23:45:23 +0800 Subject: [PATCH] fix: ArrayValue --- value.h | 74 +++++++++++++++++++++++++++------------------------------ 1 file changed, 35 insertions(+), 39 deletions(-) diff --git a/value.h b/value.h index 96f5f14..1357d44 100644 --- a/value.h +++ b/value.h @@ -16,44 +16,6 @@ public: virtual bool isArray() const = 0; }; -class ArrayValue : public Value { -private: - std::vector values; - - std::size_t size; - -public: - ArrayValue() = delete; - - explicit ArrayValue(std::size_t s) : values(s), size(s) {} - - explicit ArrayValue(std::vector v) : values(std::move(v)), size(this->values.size()) {} - - bool isArray() const override final { - return true; - } - - std::size_t getSize() const { - return this->size; - } - - ValueVariant& operator[](std::size_t i) { - return this->values[i]; - } - - const ValueVariant& operator[](std::size_t i) const { - return this->values[i]; - } - - std::vector& getValues() { - return this->values; - } - - const std::vector& getValues() const { - return this->values; - } -}; - class SingleValue : public Value { private: ValueType type; @@ -69,7 +31,7 @@ public: explicit SingleValue(std::string v) : value(std::move(v)) {} - SingleValue() = delete; + SingleValue() : SingleValue(ValueType::TYPE_NIL) {} bool isArray() const override final { return false; @@ -128,6 +90,40 @@ public: } }; +class ArrayValue : public Value { +private: + std::vector values; + + std::size_t size; + +public: + ArrayValue() = delete; + + explicit ArrayValue(std::size_t s) : values(s), size(s) {} + + explicit ArrayValue(std::vector v) : values(std::move(v)), size(this->values.size()) {} + + bool isArray() const override final { + return true; + } + + std::size_t getSize() const { + return this->size; + } + + SingleValue operator[](std::size_t i) const { + return this->values[i]; + } + + std::vector& getValues() { + return this->values; + } + + const std::vector& getValues() const { + return this->values; + } +}; + class _Unused_Variable { protected: std::string name;