#pragma once #include "storage/model/properties/property.hpp" template class Array : public Property { public: static constexpr Flags type = f_type; using Arr = std::vector; Array(const Array &) = default; Array(Array &&) = default; Array(const Arr &value); Array(Arr &&value); operator const Arr &() const; bool operator==(const Property &other) const override; bool operator==(const Array &other) const; bool operator==(const Arr &other) const; friend std::ostream &operator<<(std::ostream &stream, const Array &prop); std::ostream &print(std::ostream &stream) const override; Arr const &value_ref() const { return value; } Arr value; }; class ArrayString : public Array { public: using Array::Array; }; class ArrayBool : public Array { public: using Array::Array; }; class ArrayInt32 : public Array { public: using Array::Array; }; class ArrayInt64 : public Array { public: using Array::Array; }; class ArrayFloat : public Array { public: using Array::Array; }; class ArrayDouble : public Array { public: using Array::Array; };