|
REFUREKU_INTERNAL | Field (char const *name, std::size_t id, Type const &type, EFieldFlags flags, Struct const *owner, std::size_t memoryOffset, Entity const *outerEntity=nullptr) noexcept |
|
REFUREKU_INTERNAL | Field (Field &&) noexcept |
|
template<typename ValueType , typename InstanceType , typename = std::enable_if_t<is_value_v<InstanceType> && internal::IsAdjustableInstanceValue<InstanceType>>> |
RFK_NODISCARD ValueType | get (InstanceType &instance) const |
| Get the value corresponding to this field in the provided instance. This method in not safe if you provide a wrong ValueType. More...
|
|
template<typename ValueType > |
RFK_NODISCARD ValueType | getUnsafe (void *instance) const |
| Get the value corresponding to this field in the provided instance. This method in not safe if you provide a wrong ValueType. This method DOES NOT perform any pointer adjustment on the provided instance so it is unsafe if instance is not a valid pointer to an object of the field's owner archetype. Prefer using Field::get for safety if you know the static type of your instance in the calling context. More...
|
|
template<typename ValueType > |
RFK_NODISCARD ValueType | getUnsafe (void const *instance) const |
| Get the value corresponding to this field in the provided instance. This method in not safe if you provide a wrong ValueType. This method DOES NOT perform any pointer adjustment on the provided instance so it is unsafe if instance is not a valid pointer to an object of the field's owner archetype. Prefer using Field::get for safety if you know the static type of your instance in the calling context. More...
|
|
template<typename ValueType , typename InstanceType , typename = std::enable_if_t<is_value_v<InstanceType> && internal::IsAdjustableInstanceValue<InstanceType>>> |
void | set (InstanceType &instance, ValueType &&value) const |
| Set the value corresponding to this field in the provided instance. This method is not safe if you provide a wrong ValueType. More...
|
|
template<typename InstanceType , typename = std::enable_if_t<is_value_v<InstanceType> && internal::IsAdjustableInstanceValue<InstanceType>>> |
void | set (InstanceType &instance, void const *valuePtr, std::size_t valueSize) const |
| Copy valueSize bytes starting from valuePtr into this field's address in instance. More...
|
|
template<typename ValueType > |
void | setUnsafe (void *instance, ValueType &&value) const |
| Set the value corresponding to this field in the provided instance. This method is not safe if you provide a wrong ValueType. This method DOES NOT perform any pointer adjustment on the provided instance so it is unsafe if instance is not a valid pointer to an object of the field's owner archetype. Prefer using Field::set for safety if you know the static type of your instance in the calling context. More...
|
|
REFUREKU_API void | setUnsafe (void *instance, void const *valuePtr, std::size_t valueSize) const |
| Copy valueSize bytes starting from valuePtr into this field's address in instance. More...
|
|
template<typename InstanceType , typename = std::enable_if_t<is_value_v<InstanceType> && internal::IsAdjustableInstanceValue<InstanceType>>> |
RFK_NODISCARD void * | getPtr (InstanceType &instance) const |
| Get a pointer to this field in the provided instance. More...
|
|
RFK_NODISCARD REFUREKU_API void * | getPtrUnsafe (void *instance) const |
| Get a pointer to this field in the provided instance. This method DOES NOT perform any pointer adjustment on the provided instance so it is unsafe if instance is not a valid pointer to an object of the field's owner archetype. Prefer using Field::getPtr for safety if you know the static type of your instance in the calling context. More...
|
|
template<typename InstanceType , typename = std::enable_if_t<is_value_v<InstanceType> && internal::IsAdjustableInstanceValue<InstanceType>>> |
RFK_NODISCARD void const * | getConstPtr (InstanceType const &instance) const |
| Get a const pointer to this field in the provided instance. More...
|
|
RFK_NODISCARD REFUREKU_API void const * | getConstPtrUnsafe (void const *instance) const noexcept |
| Get a const pointer to this field in the provided instance. This method DOES NOT perform any pointer adjustment on the provided instance so it is unsafe if instance is not a valid pointer to an object of the field's owner archetype. Prefer using Field::getConstPtr for safety if you know the static type of your instance in the calling context. More...
|
|
RFK_NODISCARD REFUREKU_API std::size_t | getMemoryOffset () const noexcept |
| Get the memory offset of this field in an instance of its owner class (Field::getOwner()). More...
|
|
RFK_NODISCARD REFUREKU_API EAccessSpecifier | getAccess () const noexcept |
| Get the access specifier of this field in its owner struct/class. More...
|
|
RFK_NODISCARD REFUREKU_API bool | isStatic () const noexcept |
| Check whether this field is static or not. If the field is static, it can safely be cast to StaticField. More...
|
|
RFK_NODISCARD REFUREKU_API bool | isMutable () const noexcept |
| Check whether this field is mutable or not. More...
|
|
RFK_NODISCARD REFUREKU_API EFieldFlags | getFlags () const noexcept |
| Get the flags qualifying this field. More...
|
|
RFK_NODISCARD REFUREKU_API Struct const * | getOwner () const noexcept |
| Get the struct owning this field. More...
|
|
REFUREKU_API Type const & | getType () const noexcept |
| Get the type of this variable. More...
|
|
| Entity (Entity const &)=delete |
|
RFK_NODISCARD REFUREKU_API Property const * | getPropertyAt (std::size_t propertyIndex) const noexcept |
| Retrieve the property at the given index. If propertyIndex is greater or equal to the properties count, the behaviour is undefined. More...
|
|
template<typename PropertyType , typename = std::enable_if_t<std::is_base_of_v<Property, PropertyType> && !std::is_same_v<PropertyType, Property>>> |
RFK_NODISCARD PropertyType const * | getProperty (bool isChildClassValid=true) const noexcept |
| Retrieve a property of a given type from this entity. More...
|
|
RFK_NODISCARD REFUREKU_API Property const * | getProperty (Struct const &archetype, bool isChildClassValid=true) const noexcept |
| Retrieve the first property matching with the provided archetype. More...
|
|
RFK_NODISCARD REFUREKU_API Property const * | getPropertyByName (char const *name) const noexcept |
| Retrieve the first property named with the provided name. More...
|
|
RFK_NODISCARD REFUREKU_API Property const * | getPropertyByPredicate (Predicate< Property > predicate, void *userData) const |
| Retrieve a property matching with a predicate. More...
|
|
template<typename PropertyType , typename = std::enable_if_t<std::is_base_of_v<Property, PropertyType> && !std::is_same_v<PropertyType, Property>>> |
RFK_NODISCARD Vector< PropertyType const * > | getProperties (bool isChildClassValid=true) const noexcept |
| Retrieve all properties matching with the provided archetype. If PropertyType uses multiple inheritance, its first inherited type must be rfk::Property or derived. More...
|
|
RFK_NODISCARD REFUREKU_API Vector< Property const * > | getProperties (Struct const &archetype, bool isChildClassValid=true) const noexcept |
| Retrieve all properties matching with the provided archetype. More...
|
|
RFK_NODISCARD REFUREKU_API Vector< Property const * > | getPropertiesByName (char const *name) const noexcept |
| Retrieve all properties named with the provided name. More...
|
|
RFK_NODISCARD REFUREKU_API Vector< Property const * > | getPropertiesByPredicate (Predicate< Property > predicate, void *userData) const |
| Retrieve all properties matching with a predicate in this entity. More...
|
|
RFK_NODISCARD REFUREKU_API std::size_t | getPropertiesCount () const noexcept |
| Get the number of properties attached to this entity. More...
|
|
REFUREKU_API bool | foreachProperty (Visitor< Property > visitor, void *userData) const |
| Execute the given visitor on all properties attached to this entity. More...
|
|
RFK_NODISCARD REFUREKU_API char const * | getName () const noexcept |
| Get the name of the entity. More...
|
|
RFK_NODISCARD REFUREKU_API bool | hasSameName (char const *name) const noexcept |
| Check that this entity has the same name as the provided string. More...
|
|
RFK_NODISCARD REFUREKU_API std::size_t | getId () const noexcept |
| Get the program-unique id of the entity. More...
|
|
RFK_NODISCARD REFUREKU_API EEntityKind | getKind () const noexcept |
| Get the kind of the entity. Knowing the kind allows to safely cast to child classes. Check the EEntityKind documentation for more information. More...
|
|
RFK_NODISCARD REFUREKU_API Entity const * | getOuterEntity () const noexcept |
| Get the outer entity of the entity. It basically corresponds to the entity this entity was declared in from a source-code point of view. A nullptr outer entity means the entity was declared at file level. More...
|
|
REFUREKU_API bool | addProperty (Property const &property) noexcept |
| Add a property to this entity. More...
|
|
REFUREKU_API void | setOuterEntity (Entity const *outerEntity) noexcept |
| Setter for the field _outerEntity. More...
|
|
REFUREKU_API void | setPropertiesCapacity (std::size_t capacity) noexcept |
| Set the number of properties for this entity. Useful to avoid reallocations when adding a lot of properties. If the number of properties is already >= to the provided capacity, this method has no effect. More...
|
|
Entity & | operator= (Entity const &)=delete |
|
Entity & | operator= (Entity &&)=delete |
|
RFK_NODISCARD REFUREKU_API bool | operator== (Entity const &other) const noexcept |
|
RFK_NODISCARD REFUREKU_API bool | operator!= (Entity const &other) const noexcept |
|