58 typedef std::remove_cv_t<std::remove_reference_t<T>> type;
61 using remove_cvref_t =
typename remove_cvref<T>::type;
64 enum class Types : uint8_t
101 [[nodiscard]]
constexpr std::string* getString()
const {
return static_cast<std::string*
>(this->_ptr); }
111 template<
class T,
typename = std::enable_if_t<!std::is_same_v<remove_cvref_t<T>, fge::Property>>>
121 [[nodiscard]]
bool operator==(
fge::Property const& val)
const;
128 template<
class T,
typename = std::enable_if_t<!std::is_same_v<remove_cvref_t<T>, fge::Property>>>
136 void setType(Types type);
138 [[nodiscard]]
bool isType()
const;
139 [[nodiscard]]
bool isType(Types type)
const;
141 [[nodiscard]] std::type_info
const& getClassType()
const;
142 [[nodiscard]] Types getType()
const;
143 [[nodiscard]]
bool isSigned()
const;
145 [[nodiscard]] std::string toString()
const;
150 template<
class T,
typename = std::enable_if_t<!std::is_same_v<remove_cvref_t<T>, fge::Property>>>
153 bool set(
char const* val);
156 bool get(T& val)
const;
158 std::optional<T> get()
const;
163 T
const* getPtr()
const;
166 fge::ParrayType& setArrayType();
168 bool resize(std::size_t n);
169 bool reserve(std::size_t n);
181 [[nodiscard]]
fge::Property const* getData(std::size_t index)
const;
184 bool getData(std::size_t index, T& val)
const;
186 T* getDataPtr(std::size_t index);
188 T
const* getDataPtr(std::size_t index)
const;
190 [[nodiscard]] std::size_t getDataSize()
const;
195 [[nodiscard]]
bool isModified()
const;
196 void setModifiedFlag(
bool flag);
199 Types g_type{Types::PTYPE_NULL};
202 bool g_isModified{
false};
242 static_assert(std::negation_v<std::is_base_of<fge::PropertyClassWrapper, T>>,
243 "fge::PropertyClassWrapperType<T>, T must not be based on fge::PropertyClassWrapper class type !");
244 static_assert(std::negation_v<std::is_base_of<fge::Property, T>>,
245 "fge::PropertyClassWrapperType<T>, T must not be based on fge::Property class type !");
246 static_assert(std::negation_v<std::is_pointer<T>>,
"fge::PropertyClassWrapperType<T>, T must not be a pointer !");
247 static_assert(std::negation_v<std::is_reference<T>>,
248 "fge::PropertyClassWrapperType<T>, T must not be a reference !");
252 template<
typename = std::enable_if_t<std::is_copy_constructible_v<T>>>
254 template<
typename = std::enable_if_t<std::is_move_constructible_v<T>>>
258 [[nodiscard]] std::type_info
const& getType()
const override;
260 [[nodiscard]] std::string toString()
const override;