78 [[
nodiscard]]
virtual const void*
access(
const void* target)
const {
return target; }
123 virtual void copy(
void* target,
const void* source)
const = 0;
141 virtual void move(
void* target,
void* source)
const = 0;
237 virtual void set(
const Box& target,
size_t index,
Box&& value)
const = 0;
A value type that can hold any alongside it's type information.
Definition Box.hpp:40
Definition TypeInfo.hpp:81
~ConstructibleTypeTrait()=default
virtual void construct(void *target) const =0
Constructs a new instance at the given target address.
Definition TypeInfo.hpp:108
virtual void copy(void *target, const void *source) const =0
Copies the object from source to target.
~CopyableTypeTrait()=default
Definition TypeInfo.hpp:144
~DereferenceableTypeTrait()=default
virtual Box dereference(const Box &value) const =0
Dereferences the value at value.
Definition TypeInfo.hpp:96
~DestructibleTypeTrait()=default
virtual void destroy(void *target) const =0
Destroys an existing instance of the type at target address.
Definition TypeInfo.hpp:168
virtual bool notEquals(const Box &lhs, const Box &rhs) const
Definition TypeInfo.hpp:177
~EqualityComparableTypeTrait()=default
virtual bool equals(const Box &lhs, const Box &rhs) const =0
Definition TypeInfo.hpp:197
virtual void increment(const Box &value) const =0
~IncrementableTypeTrait()=default
Definition TypeInfo.hpp:221
virtual void set(const Box &target, size_t index, Box &&value) const =0
Sets the element at index position on target by using operator[].
virtual Box get(const Box &target, size_t index) const =0
Gets the element at index position on target by using operator[].
~IndexableTypeTrait()=default
Definition TypeInfo.hpp:207
~IterableTypeTrait()=default
virtual Box begin(const Box &value) const =0
Gets the begin iterator value by calling valie.begin().
virtual Box end(const Box &value) const =0
Gets the begin iterator value by calling value.end().
Definition TypeInfo.hpp:126
~MovableTypeTrait()=default
virtual void move(void *target, void *source) const =0
Moves the object from source to target.
Definition TypeInfo.hpp:262
~PushBackableTypeTrait()=default
virtual void pushBack(const Box &container, Box &&value) const =0
Definition TypeInfo.hpp:184
virtual bool greaterThan(const Box &lhs, const Box &rhs) const =0
virtual bool greaterThanOrEquals(const Box &lhs, const Box &rhs) const =0
virtual bool lessThan(const Box &lhs, const Box &rhs) const =0
virtual bool lessThanOrEquals(const Box &lhs, const Box &rhs) const =0
~TotallyOrderedTypeTrait()=default
Definition TypeInfo.hpp:36
TypeID getID() const noexcept
Definition TypeInfo.hpp:43
const TypeInfo & removeReference() const
bool is() const noexcept
Definition TypeInfo.hpp:60
virtual ~TypeInfo()=default
virtual std::size_t getSize() const noexcept=0
virtual const TypeInfo & desugar() const
Desugar the type into a raw type.
Definition TypeInfo.hpp:50
virtual TypeIdentityHash getIdentityHash() const noexcept=0
virtual const TypeInfo & getType(TypeAttribute attribute) const =0
const TypeInfo & removeConst() const
const T * being() const noexcept
Definition TypeInfo.hpp:62
const T * as() const noexcept
Definition TypeInfo.hpp:61
virtual const void * access(const void *target) const
Provides access to the object.
Definition TypeInfo.hpp:78
virtual StringView getName() const noexcept=0
const TypeInfo & removePointer() const
virtual std::size_t getAlignment() const noexcept=0
Definition Application.hpp:19
std::uint64_t UInt64
Definition DataTypes.hpp:26
UInt64 TypeIdentityHash
A type that represents a Type hash value.
Definition Type.hpp:29
TypedID< internal::TypeTag, UInt64 > TypeID
Definition Forward.hpp:45
consteval TypeIdentityHash getIdentityHash() noexcept
Gets the a static constexpr hash of the type.
Definition TypeInfo.hpp:25
constexpr UInt64 staticHash64(BasicStringView< T > string, const UInt64 value=0xcbf29ce484222325) noexcept
Definition Hash.hpp:82
TypeAttribute
Definition TypeInfo.hpp:29
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25
A meta interface that can be implemented by types that support erasion.
Definition TypeInfo.hpp:252
virtual Box erase(const Box &container, const Box &where) const =0
~ErasableTypeTrait()=default
A meta interface that can be implemented by types that support hashing.
Definition TypeInfo.hpp:157
~HashableTypeTrait()=default
virtual size_t hash(const Box &object) const =0
Computes the hash of the object by using CeresEngine::hash.
A meta interface that can be implemented by types that support insertion.
Definition TypeInfo.hpp:242
virtual Box insert(const Box &container, const Box &where, Box &&value) const =0
~InsertableTypeTrait()=default