Refureku v2.2.0
C++17 runtime reflection library.
Variable.h
1
8#pragma once
9
10#include "Refureku/TypeInfo/Variables/VariableBase.h"
11#include "Refureku/TypeInfo/Variables/EVarFlags.h"
12
13namespace rfk
14{
15 class Variable final : public VariableBase
16 {
17 public:
18 REFUREKU_API Variable(char const* name,
19 std::size_t id,
20 Type const& type,
21 void* ptr,
22 EVarFlags flags) noexcept;
23 REFUREKU_API Variable(char const* name,
24 std::size_t id,
25 Type const& type,
26 void const* constPtr,
27 EVarFlags flags) noexcept;
28 REFUREKU_INTERNAL Variable(Variable&&) noexcept;
29 REFUREKU_API ~Variable() noexcept;
30
46 template <typename ValueType>
47 RFK_NODISCARD ValueType get() const;
48
59 template <typename ValueType>
60 void set(ValueType&& value) const;
61
70 REFUREKU_API void set(void const* valuePtr,
71 std::size_t valueSize) const;
72
78 RFK_NODISCARD REFUREKU_API bool isStatic() const noexcept;
79
85 RFK_NODISCARD REFUREKU_API EVarFlags getFlags() const noexcept;
86
95 RFK_NODISCARD REFUREKU_API void* getPtr() const;
96
102 RFK_NODISCARD REFUREKU_API void const* getConstPtr() const noexcept;
103
104 protected:
105 //Forward declaration
106 class VariableImpl;
107
108 RFK_GEN_GET_PIMPL(VariableImpl, Entity::getPimpl())
109 };
110
112 template <auto VarPtr>
113 Variable const* getVariable() noexcept;
114
115 REFUREKU_TEMPLATE_API(rfk::Allocator<Variable const*>);
116 REFUREKU_TEMPLATE_API(rfk::Vector<Variable const*, rfk::Allocator<Variable const*>>);
117
118 #include "Refureku/TypeInfo/Variables/Variable.inl"
119}
Definition: Allocator.h:19
Definition: Entity.h:29
Definition: Type.h:20
Definition: VariableBase.h:20
Definition: Variable.h:16
RFK_NODISCARD ValueType get() const
Get the value stored in this variable. This method in not safe if you provide a wrong ValueType.
RFK_NODISCARD REFUREKU_API void const * getConstPtr() const noexcept
Get a const pointer to this static field.
RFK_NODISCARD REFUREKU_API void * getPtr() const
Get a non-const pointer to this variable. Performing non-const operations with the pointer if the var...
RFK_NODISCARD REFUREKU_API bool isStatic() const noexcept
Check if this variable is static.
RFK_NODISCARD REFUREKU_API EVarFlags getFlags() const noexcept
Getter for the field _flags.
void set(ValueType &&value) const
Set some value in this variable. This method is not safe if you provide a wrong ValueType.
REFUREKU_API void set(void const *valuePtr, std::size_t valueSize) const
Copy dataSize bytes starting from value into the variable.
Definition: Vector.h:19
Definition: Allocator.h:16
EVarFlags
Definition: EVarFlags.h:16
Variable const * getVariable() noexcept