10#include "Refureku/TypeInfo/Entity/Entity.h"
11#include "Refureku/TypeInfo/Variables/EVarFlags.h"
12#include "Refureku/TypeInfo/Functions/EFunctionFlags.h"
13#include "Refureku/TypeInfo/Functions/FunctionHelper.h"
28 REFUREKU_INTERNAL
Namespace(
char const* name,
29 std::size_t
id)
noexcept;
53 void* userData)
const;
66 void* userData)
const;
80 void* userData)
const;
109 void* userData) const;
122 void* userData) const;
136 void* userData) const;
158 void* userData) const;
171 void* userData) const;
185 void* userData) const;
207 void* userData) const;
220 void* userData) const;
234 void* userData) const;
248 void* userData) const;
280 void* userData) const;
293 void* userData) const;
307 void* userData) const;
325 template <typename FunctionSignature>
364 void* userData) const;
377 void* userData) const;
391 void* userData) const;
460 RFK_GEN_GET_PIMPL(NamespaceImpl,
Entity::getPimpl())
466 #include "Refureku/TypeInfo/Namespace/Namespace.inl"
Definition: Allocator.h:19
Definition: Archetype.h:16
Definition: Function.h:17
Definition: Namespace.h:26
REFUREKU_API void removeNamespace(Namespace const &nestedNamespace) noexcept
Remove a nested namespace from this namespace.
RFK_NODISCARD REFUREKU_API Struct const * getStructByPredicate(Predicate< Struct > predicate, void *userData) const
Retrieve the first nested struct satisfying the provided predicate.
RFK_NODISCARD REFUREKU_API Variable const * getVariableByPredicate(Predicate< Variable > predicate, void *userData) const
Retrieve the first nested variable satisfying the provided predicate.
REFUREKU_API void addVariable(Variable const &variable) noexcept
Add a nested variable to this namespace.
RFK_NODISCARD REFUREKU_API Vector< Class const * > getClassesByPredicate(Predicate< Class > predicate, void *userData) const
Retrieve all nested classes satisfying the provided predicate.
REFUREKU_API bool foreachStruct(Visitor< Struct > visitor, void *userData) const
Execute the given visitor on all nested structs.
REFUREKU_API bool foreachEnum(Visitor< Enum > visitor, void *userData) const
Execute the given visitor on all nested enums.
RFK_NODISCARD REFUREKU_API Class const * getClassByName(char const *name) const noexcept
Retrieve a class from this namespace.
RFK_NODISCARD REFUREKU_API Enum const * getEnumByName(char const *name) const noexcept
Retrieve an enum from this namespace.
REFUREKU_API bool foreachVariable(Visitor< Variable > visitor, void *userData) const
Execute the given visitor on all nested variables.
REFUREKU_API void addArchetype(Archetype const &archetype) noexcept
Add a nested archetype to this namespace.
RFK_NODISCARD REFUREKU_API Vector< Function const * > getFunctionsByName(char const *name, EFunctionFlags flags=EFunctionFlags::Default) const noexcept
Retrieve all functions with a given name from this namespace.
RFK_NODISCARD REFUREKU_API Vector< Struct const * > getStructsByPredicate(Predicate< Struct > predicate, void *userData) const
Retrieve all nested structs satisfying the provided predicate.
REFUREKU_API std::size_t getNamespacesCount() const noexcept
Get the number of namespaces nested in this namespace.
REFUREKU_API bool foreachNamespace(Visitor< Namespace > visitor, void *userData) const
Execute the given visitor on all nested namespaces.
RFK_NODISCARD REFUREKU_API Variable const * getVariableByName(char const *name, EVarFlags flags=EVarFlags::Default) const noexcept
Retrieve a variable from this namespace.
REFUREKU_API bool foreachFunction(Visitor< Function > visitor, void *userData) const
Execute the given visitor on all nested functions.
RFK_NODISCARD Function const * getFunctionByName(char const *name, EFunctionFlags flags=EFunctionFlags::Default) const noexcept
Retrieve a function with a given name and signature from this namespace.
RFK_NODISCARD REFUREKU_API Vector< Variable const * > getVariablesByPredicate(Predicate< Variable > predicate, void *userData) const
Retrieve all nested variables satisfying the provided predicate.
RFK_NODISCARD REFUREKU_API Vector< Namespace const * > getNamespacesByPredicate(Predicate< Namespace > predicate, void *userData) const
Retrieve all nested namespaces satisfying the provided predicate.
REFUREKU_API bool foreachClass(Visitor< Class > visitor, void *userData) const
Execute the given visitor on all nested classes.
RFK_NODISCARD REFUREKU_API Enum const * getEnumByPredicate(Predicate< Enum > predicate, void *userData) const
Retrieve the first nested enum satisfying the provided predicate.
REFUREKU_API std::size_t getArchetypesCount() const noexcept
Get the number of archetypes nested in this namespace.
REFUREKU_API std::size_t getVariablesCount() const noexcept
Get the number of variables nested in this namespace.
REFUREKU_API void addNamespace(Namespace const &nestedNamespace) noexcept
Add a nested namespace to this namespace.
RFK_NODISCARD REFUREKU_API Vector< Function const * > getFunctionsByPredicate(Predicate< Function > predicate, void *userData) const
Retrieve all nested functions satisfying the provided predicate.
REFUREKU_API std::size_t getFunctionsCount() const noexcept
Get the number of functions nested in this namespace.
REFUREKU_API void addFunction(Function const &function) noexcept
Add a nested function to this namespace.
RFK_NODISCARD REFUREKU_API Struct const * getStructByName(char const *name) const noexcept
Retrieve a struct from this namespace.
REFUREKU_API void removeFunction(Function const &function) noexcept
Remove a nested function from this namespace.
RFK_NODISCARD REFUREKU_API Namespace const * getNamespaceByName(char const *name) const noexcept
Retrieve a namespace contained in this namespace.
RFK_NODISCARD REFUREKU_API Vector< Enum const * > getEnumsByPredicate(Predicate< Enum > predicate, void *userData) const
Retrieve all nested enums satisfying the provided predicate.
RFK_NODISCARD REFUREKU_API Class const * getClassByPredicate(Predicate< Class > predicate, void *userData) const
Retrieve the first nested class satisfying the provided predicate.
REFUREKU_API void removeArchetype(Archetype const &archetype) noexcept
Remove a nested archetype from this namespace.
REFUREKU_API void removeVariable(Variable const &variable) noexcept
Remove a nested variable from this namespace.
RFK_NODISCARD REFUREKU_API Function const * getFunctionByPredicate(Predicate< Function > predicate, void *userData) const
Retrieve the first nested function satisfying the provided predicate.
RFK_NODISCARD REFUREKU_API Namespace const * getNamespaceByPredicate(Predicate< Namespace > predicate, void *userData) const
Retrieve the first nested namespace satisfying the provided predicate.
REFUREKU_API bool foreachArchetype(Visitor< Archetype > visitor, void *userData) const
Execute the given visitor on all nested archetypes.
Definition: Variable.h:16
Definition: Allocator.h:16
bool(*)(T const &value, void *userData) Predicate
Predicate defining if a value is valid or not.
Definition: Predicate.h:21
EFunctionFlags
Definition: EFunctionFlags.h:17
bool(*)(T const &value, void *userData) Visitor
Visitor function.
Definition: Visitor.h:21
EVarFlags
Definition: EVarFlags.h:16