3#include <Infinity/Types/Core/Base.hpp>
4#include <Infinity/Types/Core/PropertyValue.hpp>
8#include <unordered_map>
57 std::unique_ptr<Base>
clone()
const override;
81 std::unordered_map<std::string, PropertyValue>
properties;
109 void setProperty(
const std::string& key, T&& value);
128 void setProperty(
const std::string& key,
const T& value);
195 const T& getProperty(
const std::string& key)
const;
201#include <Infinity/Types/Core/Data.inl>
Abstract base class for all Infinity Engine data types.
Definition Base.hpp:43
Base class for complex data types with memory wrapping and property support.
Definition Data.hpp:49
Data & operator=(Data &&other)
std::unordered_map< std::string, PropertyValue > properties
Property storage for arbitrary metadata.
Definition Data.hpp:81
virtual ~Data()
Virtual destructor.
std::unique_ptr< Base > clone() const override
Data & operator=(const Data &other)
virtual const Infinity::Types::TypeID & typeId() const override
Gets the runtime type identifier for this object.
const PropertyValue & getProperty(const std::string &key) const
Gets a property value without type checking.
void removeProperty(const std::string &key)
void setProperty(const std::string &key, PropertyValue &&value)
Sets a typed property value.
bool hasProperty(const std::string &key) const
Definition PropertyValue.hpp:14
Runtime type identifier for the Infinity type system.
Definition TypeID.hpp:71