13#include "Refureku/Misc/Pimpl.h"
14#include "Refureku/TypeInfo/TypePart.h"
15#include "Refureku/TypeInfo/Archetypes/GetArchetype.h"
22 REFUREKU_API
Type()
noexcept;
25 REFUREKU_API
~Type()
noexcept;
72 REFUREKU_API
bool isValue() const noexcept;
78 REFUREKU_API
bool isConst() const noexcept;
98 REFUREKU_API
bool match(
Type const& other) const noexcept;
127 REFUREKU_API
bool operator==(
Type const&) const noexcept;
128 REFUREKU_API
bool operator!=(
Type const&) const noexcept;
136 Pimpl<TypeImpl> _pimpl;
139 template <typename T>
147 template <typename T>
148 static
void fillType(
Type& out_type) noexcept;
157 template <typename T>
160 #include "Refureku/TypeInfo/Type.inl"
165 template REFUREKU_API
Type const& getType<void>() noexcept;
166 template REFUREKU_API
Type const&
getType<std::nullptr_t>() noexcept;
167 template REFUREKU_API
Type const&
getType<
bool>() noexcept;
168 template REFUREKU_API
Type const&
getType<
char>() noexcept;
169 template REFUREKU_API
Type const&
getType<
signed char>() noexcept;
170 template REFUREKU_API
Type const&
getType<
unsigned char>() noexcept;
171 template REFUREKU_API
Type const&
getType<
wchar_t>() noexcept;
172 template REFUREKU_API
Type const&
getType<
char16_t>() noexcept;
173 template REFUREKU_API
Type const&
getType<
char32_t>() noexcept;
174 template REFUREKU_API
Type const&
getType<
short>() noexcept;
175 template REFUREKU_API
Type const&
getType<
unsigned short>() noexcept;
176 template REFUREKU_API
Type const&
getType<
int>() noexcept;
177 template REFUREKU_API
Type const&
getType<
unsigned int>() noexcept;
178 template REFUREKU_API
Type const&
getType<
long>() noexcept;
179 template REFUREKU_API
Type const&
getType<
unsigned long>() noexcept;
180 template REFUREKU_API
Type const&
getType<
long long>() noexcept;
181 template REFUREKU_API
Type const&
getType<
unsigned long long>() noexcept;
182 template REFUREKU_API
Type const&
getType<
float>() noexcept;
183 template REFUREKU_API
Type const&
getType<
double>() noexcept;
184 template REFUREKU_API
Type const&
getType<
long double>() noexcept;
Definition: Archetype.h:16
REFUREKU_API Archetype const * getArchetype() const noexcept
Get this type's archetype.
REFUREKU_API TypePart & addTypePart() noexcept
Add a default-constructed type part to this type.
REFUREKU_API bool isConst() const noexcept
REFUREKU_API bool isRValueReference() const noexcept
REFUREKU_API void optimizeMemory() noexcept
Reallocate the underlying dynamic memory to use no more than needed.
REFUREKU_API bool isPointer() const noexcept
REFUREKU_API bool isCArray() const noexcept
REFUREKU_API bool match(Type const &other) const noexcept
REFUREKU_API uint32 getCArraySize() const noexcept
REFUREKU_API bool isValue() const noexcept
REFUREKU_API TypePart const & getTypePartAt(std::size_t index) const noexcept
Get the type part at the specified index. If index is greater or equal to the type parts count,...
friend Type const & getType() noexcept
Retrieve the Type object from a given type. Identical types will return the same Type object (the ret...
REFUREKU_API bool isVolatile() const noexcept
REFUREKU_API void setArchetype(Archetype const *archetype) noexcept
Set this type's archetype.
REFUREKU_API bool isLValueReference() const noexcept
REFUREKU_API std::size_t getTypePartsCount() const noexcept
Get the number of type parts constituting this type.
Definition: TypePart.h:17
Definition: Allocator.h:16