Flecs v4.1
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
Meta

Flecs reflection framework. More...

Collaboration diagram for Meta:

Classes

struct  flecs::cursor
 Class for reading/writing dynamic values. More...
struct  flecs::bitmask
 Base type for bitmasks. More...
struct  flecs::opaque< T, ElemType >
 Type-safe interface for opaque types. More...

Typedefs

using flecs::bool_t = ecs_bool_t
 Primitive type aliases.
using flecs::char_t = ecs_char_t
using flecs::u8_t = ecs_u8_t
using flecs::u16_t = ecs_u16_t
using flecs::u32_t = ecs_u32_t
using flecs::u64_t = ecs_u64_t
using flecs::uptr_t = ecs_uptr_t
using flecs::i8_t = ecs_i8_t
using flecs::i16_t = ecs_i16_t
using flecs::i32_t = ecs_i32_t
using flecs::i64_t = ecs_i64_t
using flecs::iptr_t = ecs_iptr_t
using flecs::f32_t = ecs_f32_t
using flecs::f64_t = ecs_f64_t
using flecs::member_t = ecs_member_t
 Embedded type aliases.
using flecs::enum_constant_t = ecs_enum_constant_t
using flecs::bitmask_constant_t = ecs_bitmask_constant_t
using flecs::Type = EcsType
 Components.
using flecs::TypeSerializer = EcsTypeSerializer
using flecs::Primitive = EcsPrimitive
using flecs::Enum = EcsEnum
using flecs::Bitmask = EcsBitmask
using flecs::Member = EcsMember
using flecs::MemberRanges = EcsMemberRanges
using flecs::Struct = EcsStruct
using flecs::Array = EcsArray
using flecs::Vector = EcsVector
using flecs::Unit = EcsUnit
using flecs::meta::type_kind_t = ecs_type_kind_t
 Type kinds supported by the reflection system.
using flecs::meta::primitive_kind_t = ecs_primitive_kind_t
 Primitive type kinds supported by the reflection system.
using flecs::meta::op_t = ecs_meta_op_t
using flecs::serializer = ecs_serializer_t
 Serializer object, used for serializing opaque types.
using flecs::serialize_t = ecs_meta_serialize_t
 Serializer function, used to serialize opaque types.
template<typename T>
using flecs::serialize = int(*)(const serializer *, const T*)
 Type-safe variant of the serializer function.
template<typename T>
using flecs::serialize_member = int(*)(const serializer *, const T*, const char* name)
 Type-safe variant of the serialize_member() function.
template<typename T>
using flecs::serialize_element = int(*)(const serializer *, const T*, size_t element)
 Type-safe variant of the serialize_element() function.

Variables

uint32_t flecs::bitmask::value
untyped_componentmember (flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count=0)
 Add a member with unit.
untyped_componentmember (flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count, size_t offset)
 Add a member with unit, count, and offset.
untyped_componentmember (flecs::entity_t type_id, const char *name, int32_t count=0)
 Add a member.
untyped_componentmember (flecs::entity_t type_id, const char *name, int32_t count, size_t offset)
 Add a member with count and offset.
template<typename MemberType>
untyped_componentmember (const char *name, int32_t count=0)
 Add a member.
template<typename MemberType>
untyped_componentmember (const char *name, int32_t count, size_t offset)
 Add a member.
template<typename MemberType>
untyped_componentmember (flecs::entity_t unit, const char *name, int32_t count=0)
 Add a member with unit.
template<typename MemberType>
untyped_componentmember (flecs::entity_t unit, const char *name, int32_t count, size_t offset)
 Add a member with unit.
template<typename MemberType, typename UnitType>
untyped_componentmember (const char *name, int32_t count=0)
 Add a member with unit.
template<typename MemberType, typename UnitType>
untyped_componentmember (const char *name, int32_t count, size_t offset)
 Add a member with unit.
template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_componentmember (const char *name, const MemberType ComponentType::*ptr)
 Add a member using pointer-to-member.
template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_componentmember (flecs::entity_t unit, const char *name, const MemberType ComponentType::*ptr)
 Add a member with unit using pointer-to-member.
template<typename UnitType, typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_componentmember (const char *name, const MemberType ComponentType::*ptr)
 Add a member with unit using pointer-to-member.
template<typename T = int32_t>
untyped_componentconstant (const char *name, T value)
 Add a constant.
template<typename T = uint32_t>
untyped_componentbit (const char *name, T value)
 Add a bitmask constant.
template<typename Elem>
untyped_componentarray (int32_t elem_count)
 Register array metadata for a component.
untyped_componentrange (double min, double max)
 Add a member value range.
untyped_componentwarning_range (double min, double max)
 Add a member warning range.
untyped_componenterror_range (double min, double max)
 Add a member error range.
const Self & flecs::entity_builder< Self >::unit (const char *symbol, flecs::entity_t prefix=0, flecs::entity_t base=0, flecs::entity_t over=0, int32_t factor=0, int32_t power=0) const
 Make an entity a unit.
const Self & unit (flecs::entity_t prefix=0, flecs::entity_t base=0, flecs::entity_t over=0, int32_t factor=0, int32_t power=0) const
 Make an entity a derived unit.
const Self & unit_prefix (const char *symbol, int32_t factor=0, int32_t power=0) const
 Make an entity a unit prefix.
const Self & quantity (flecs::entity_t quantity) const
 Add a quantity to a unit.
template<typename Quantity>
const Self & quantity () const
 Add a quantity to a unit.
const Self & quantity () const
 Make an entity a quantity.
flecs::cursor flecs::world::cursor (flecs::entity_t tid, void *ptr)
 Return a meta cursor to a value.
template<typename T>
flecs::cursor cursor (void *ptr)
 Return a meta cursor to a value.
flecs::entity primitive (flecs::meta::primitive_kind_t kind)
 Create a primitive type.
flecs::entity array (flecs::entity_t elem_id, int32_t array_count)
 Create an array type.
template<typename T>
flecs::entity array (int32_t array_count)
 Create an array type.
flecs::entity vector (flecs::entity_t elem_id)
 Create a vector type.
template<typename T>
flecs::entity vector ()
 Create a vector type.
untyped_componentmember (flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count=0)
 Add a member with unit.
untyped_componentmember (flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count, size_t offset)
 Add a member with unit, count, and offset.
untyped_componentmember (flecs::entity_t type_id, const char *name, int32_t count=0)
 Add a member.
untyped_componentmember (flecs::entity_t type_id, const char *name, int32_t count, size_t offset)
 Add a member with count and offset.
template<typename MemberType>
untyped_componentmember (const char *name, int32_t count=0)
 Add a member.
template<typename MemberType>
untyped_componentmember (const char *name, int32_t count, size_t offset)
 Add a member.
template<typename MemberType>
untyped_componentmember (flecs::entity_t unit, const char *name, int32_t count=0)
 Add a member with unit.
template<typename MemberType>
untyped_componentmember (flecs::entity_t unit, const char *name, int32_t count, size_t offset)
 Add a member with unit.
template<typename MemberType, typename UnitType>
untyped_componentmember (const char *name, int32_t count=0)
 Add a member with unit.
template<typename MemberType, typename UnitType>
untyped_componentmember (const char *name, int32_t count, size_t offset)
 Add a member with unit.
template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_componentmember (const char *name, const MemberType ComponentType::*ptr)
 Add a member using pointer-to-member.
template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_componentmember (flecs::entity_t unit, const char *name, const MemberType ComponentType::*ptr)
 Add a member with unit using pointer-to-member.
template<typename UnitType, typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_componentmember (const char *name, const MemberType ComponentType::*ptr)
 Add a member with unit using pointer-to-member.
template<typename T = int32_t>
untyped_componentconstant (const char *name, T value)
 Add a constant.
template<typename T = uint32_t>
untyped_componentbit (const char *name, T value)
 Add a bitmask constant.
template<typename Elem>
untyped_componentarray (int32_t elem_count)
 Register array metadata for a component.
untyped_componentrange (double min, double max)
 Add a member value range.
untyped_componentwarning_range (double min, double max)
 Add a member warning range.
untyped_componenterror_range (double min, double max)
 Add a member error range.

Detailed Description

Flecs reflection framework.

Typedef Documentation

◆ Array

using flecs::Array = EcsArray

Definition at line 48 of file decl.hpp.

◆ Bitmask

using flecs::Bitmask = EcsBitmask

Definition at line 44 of file decl.hpp.

◆ bitmask_constant_t

using flecs::bitmask_constant_t = ecs_bitmask_constant_t

Definition at line 37 of file decl.hpp.

◆ bool_t

Primitive type aliases.

Definition at line 19 of file decl.hpp.

◆ char_t

using flecs::char_t = ecs_char_t

Definition at line 20 of file decl.hpp.

◆ Enum

using flecs::Enum = EcsEnum

Definition at line 43 of file decl.hpp.

◆ enum_constant_t

using flecs::enum_constant_t = ecs_enum_constant_t

Definition at line 36 of file decl.hpp.

◆ f32_t

using flecs::f32_t = ecs_f32_t

Definition at line 31 of file decl.hpp.

◆ f64_t

using flecs::f64_t = ecs_f64_t

Definition at line 32 of file decl.hpp.

◆ i16_t

using flecs::i16_t = ecs_i16_t

Definition at line 27 of file decl.hpp.

◆ i32_t

using flecs::i32_t = ecs_i32_t

Definition at line 28 of file decl.hpp.

◆ i64_t

using flecs::i64_t = ecs_i64_t

Definition at line 29 of file decl.hpp.

◆ i8_t

using flecs::i8_t = ecs_i8_t

Definition at line 26 of file decl.hpp.

◆ iptr_t

using flecs::iptr_t = ecs_iptr_t

Definition at line 30 of file decl.hpp.

◆ Member

using flecs::Member = EcsMember

Definition at line 45 of file decl.hpp.

◆ member_t

Embedded type aliases.

Definition at line 35 of file decl.hpp.

◆ MemberRanges

using flecs::MemberRanges = EcsMemberRanges

Definition at line 46 of file decl.hpp.

◆ op_t

using flecs::meta::op_t = ecs_meta_op_t

Definition at line 111 of file decl.hpp.

◆ Primitive

using flecs::Primitive = EcsPrimitive

Definition at line 42 of file decl.hpp.

◆ primitive_kind_t

Primitive type kinds supported by the reflection system.

Definition at line 91 of file decl.hpp.

◆ serialize

template<typename T>
using flecs::serialize = int(*)(const serializer *, const T*)

Type-safe variant of the serializer function.

Definition at line 26 of file opaque.hpp.

◆ serialize_element

template<typename T>
using flecs::serialize_element = int(*)(const serializer *, const T*, size_t element)

Type-safe variant of the serialize_element() function.

Definition at line 34 of file opaque.hpp.

◆ serialize_member

template<typename T>
using flecs::serialize_member = int(*)(const serializer *, const T*, const char* name)

Type-safe variant of the serialize_member() function.

Definition at line 30 of file opaque.hpp.

◆ serialize_t

Serializer function, used to serialize opaque types.

Definition at line 22 of file opaque.hpp.

◆ serializer

Serializer object, used for serializing opaque types.

Definition at line 19 of file opaque.hpp.

◆ Struct

using flecs::Struct = EcsStruct

Definition at line 47 of file decl.hpp.

◆ Type

Components.

Definition at line 40 of file decl.hpp.

◆ type_kind_t

Type kinds supported by the reflection system.

Definition at line 80 of file decl.hpp.

◆ TypeSerializer

using flecs::TypeSerializer = EcsTypeSerializer

Definition at line 41 of file decl.hpp.

◆ u16_t

using flecs::u16_t = ecs_u16_t

Definition at line 22 of file decl.hpp.

◆ u32_t

using flecs::u32_t = ecs_u32_t

Definition at line 23 of file decl.hpp.

◆ u64_t

using flecs::u64_t = ecs_u64_t

Definition at line 24 of file decl.hpp.

◆ u8_t

using flecs::u8_t = ecs_u8_t

Definition at line 21 of file decl.hpp.

◆ Unit

using flecs::Unit = EcsUnit

Definition at line 50 of file decl.hpp.

◆ uptr_t

using flecs::uptr_t = ecs_uptr_t

Definition at line 25 of file decl.hpp.

◆ Vector

using flecs::Vector = EcsVector

Definition at line 49 of file decl.hpp.

Function Documentation

◆ array() [1/2]

template<typename Elem>
untyped_component & array ( int32_t elem_count)
related

Register array metadata for a component.

Definition at line 228 of file untyped_component.inl.

◆ array() [2/2]

template<typename Elem>
untyped_component & array ( int32_t elem_count)
related

Register array metadata for a component.

Definition at line 229 of file component.hpp.

◆ bit() [1/2]

template<typename T = uint32_t>
untyped_component & bit ( const char * name,
T value )
related

Add a bitmask constant.

Definition at line 207 of file untyped_component.inl.

◆ bit() [2/2]

template<typename T = uint32_t>
untyped_component & bit ( const char * name,
T value )
related

Add a bitmask constant.

Definition at line 208 of file component.hpp.

◆ constant() [1/2]

template<typename T = int32_t>
untyped_component & constant ( const char * name,
T value )
related

Add a constant.

Definition at line 186 of file untyped_component.inl.

◆ constant() [2/2]

template<typename T = int32_t>
untyped_component & constant ( const char * name,
T value )
related

Add a constant.

Definition at line 187 of file component.hpp.

◆ cursor() [1/2]

flecs::cursor cursor ( flecs::entity_t tid,
void * ptr )
inline

Return a meta cursor to a value.

Definition at line 15 of file world.hpp.

◆ cursor() [2/2]

template<typename T>
flecs::cursor cursor ( void * ptr)
related

Return a meta cursor to a value.

Definition at line 21 of file world.hpp.

◆ error_range() [1/2]

template<typename T>
untyped_component & error_range ( double min,
double max )
related

Add a member error range.

Definition at line 294 of file untyped_component.inl.

◆ error_range() [2/2]

untyped_component & error_range ( double min,
double max )
related

Add a member error range.

Definition at line 295 of file component.hpp.

◆ member() [1/26]

template<typename UnitType, typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_component & member ( const char * name,
const MemberType ComponentType::* ptr )
related

Add a member with unit using pointer-to-member.

Definition at line 174 of file untyped_component.inl.

◆ member() [2/26]

template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_component & member ( const char * name,
const MemberType ComponentType::* ptr )
related

Add a member using pointer-to-member.

Definition at line 149 of file untyped_component.inl.

◆ member() [3/26]

template<typename MemberType, typename UnitType>
untyped_component & member ( const char * name,
int32_t count,
size_t offset )
related

Add a member with unit.

Definition at line 136 of file untyped_component.inl.

◆ member() [4/26]

template<typename MemberType>
untyped_component & member ( const char * name,
int32_t count,
size_t offset )
related

Add a member.

Definition at line 91 of file untyped_component.inl.

◆ member() [5/26]

template<typename MemberType, typename UnitType>
untyped_component & member ( const char * name,
int32_t count = 0 )
related

Add a member with unit.

Definition at line 125 of file untyped_component.inl.

◆ member() [6/26]

template<typename MemberType>
untyped_component & member ( const char * name,
int32_t count = 0 )
related

Add a member.

Definition at line 81 of file untyped_component.inl.

◆ member() [7/26]

template<typename T>
untyped_component & member ( flecs::entity_t type_id,
const char * name,
int32_t count,
size_t offset )
related

Add a member with count and offset.

Definition at line 70 of file untyped_component.inl.

◆ member() [8/26]

template<typename T>
untyped_component & member ( flecs::entity_t type_id,
const char * name,
int32_t count = 0 )
related

Add a member.

Definition at line 61 of file untyped_component.inl.

◆ member() [9/26]

template<typename T>
untyped_component & member ( flecs::entity_t type_id,
flecs::entity_t unit,
const char * name,
int32_t count,
size_t offset )
related

Add a member with unit, count, and offset.

Definition at line 50 of file untyped_component.inl.

◆ member() [10/26]

template<typename T>
untyped_component & member ( flecs::entity_t type_id,
flecs::entity_t unit,
const char * name,
int32_t count = 0 )
related

Add a member with unit.

Definition at line 40 of file untyped_component.inl.

◆ member() [11/26]

template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_component & member ( flecs::entity_t unit,
const char * name,
const MemberType ComponentType::* ptr )
related

Add a member with unit using pointer-to-member.

Definition at line 161 of file untyped_component.inl.

◆ member() [12/26]

template<typename MemberType>
untyped_component & member ( flecs::entity_t unit,
const char * name,
int32_t count,
size_t offset )
related

Add a member with unit.

Definition at line 113 of file untyped_component.inl.

◆ member() [13/26]

template<typename MemberType>
untyped_component & member ( flecs::entity_t unit,
const char * name,
int32_t count = 0 )
related

Add a member with unit.

Definition at line 102 of file untyped_component.inl.

◆ member() [14/26]

template<typename UnitType, typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_component & member ( const char * name,
const MemberType ComponentType::* ptr )
related

Add a member with unit using pointer-to-member.

Definition at line 175 of file component.hpp.

◆ member() [15/26]

template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_component & member ( const char * name,
const MemberType ComponentType::* ptr )
related

Add a member using pointer-to-member.

Definition at line 150 of file component.hpp.

◆ member() [16/26]

template<typename MemberType, typename UnitType>
untyped_component & member ( const char * name,
int32_t count,
size_t offset )
related

Add a member with unit.

Definition at line 137 of file component.hpp.

◆ member() [17/26]

template<typename MemberType>
untyped_component & member ( const char * name,
int32_t count,
size_t offset )
related

Add a member.

Definition at line 92 of file component.hpp.

◆ member() [18/26]

template<typename MemberType, typename UnitType>
untyped_component & member ( const char * name,
int32_t count = 0 )
related

Add a member with unit.

Definition at line 126 of file component.hpp.

◆ member() [19/26]

template<typename MemberType>
untyped_component & member ( const char * name,
int32_t count = 0 )
related

Add a member.

Definition at line 82 of file component.hpp.

◆ member() [20/26]

untyped_component & member ( flecs::entity_t type_id,
const char * name,
int32_t count,
size_t offset )
related

Add a member with count and offset.

Definition at line 71 of file component.hpp.

◆ member() [21/26]

untyped_component & member ( flecs::entity_t type_id,
const char * name,
int32_t count = 0 )
related

Add a member.

Definition at line 62 of file component.hpp.

◆ member() [22/26]

untyped_component & member ( flecs::entity_t type_id,
flecs::entity_t unit,
const char * name,
int32_t count,
size_t offset )
related

Add a member with unit, count, and offset.

Definition at line 51 of file component.hpp.

◆ member() [23/26]

untyped_component & member ( flecs::entity_t type_id,
flecs::entity_t unit,
const char * name,
int32_t count = 0 )
related

Add a member with unit.

Definition at line 41 of file component.hpp.

◆ member() [24/26]

template<typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
untyped_component & member ( flecs::entity_t unit,
const char * name,
const MemberType ComponentType::* ptr )
related

Add a member with unit using pointer-to-member.

Definition at line 162 of file component.hpp.

◆ member() [25/26]

template<typename MemberType>
untyped_component & member ( flecs::entity_t unit,
const char * name,
int32_t count,
size_t offset )
related

Add a member with unit.

Definition at line 114 of file component.hpp.

◆ member() [26/26]

template<typename MemberType>
untyped_component & member ( flecs::entity_t unit,
const char * name,
int32_t count = 0 )
related

Add a member with unit.

Definition at line 103 of file component.hpp.

◆ quantity() [1/3]

template<typename Self>
const Self & quantity ( ) const
related

Make an entity a quantity.

Definition at line 85 of file builder.hpp.

◆ quantity() [2/3]

template<typename Self>
template<typename Quantity>
const Self & quantity ( ) const
related

Add a quantity to a unit.

Definition at line 80 of file builder.hpp.

◆ quantity() [3/3]

template<typename Self>
const Self & quantity ( flecs::entity_t quantity) const
related

Add a quantity to a unit.

Definition at line 73 of file builder.hpp.

◆ range() [1/2]

template<typename T>
untyped_component & range ( double min,
double max )
related

Add a member value range.

Definition at line 240 of file untyped_component.inl.

◆ range() [2/2]

untyped_component & range ( double min,
double max )
related

Add a member value range.

Definition at line 241 of file component.hpp.

◆ unit() [1/2]

template<typename Self>
const Self & unit ( const char * symbol,
flecs::entity_t prefix = 0,
flecs::entity_t base = 0,
flecs::entity_t over = 0,
int32_t factor = 0,
int32_t power = 0 ) const
inline

Make an entity a unit.

Definition at line 15 of file builder.hpp.

◆ unit() [2/2]

template<typename Self>
const Self & unit ( flecs::entity_t prefix = 0,
flecs::entity_t base = 0,
flecs::entity_t over = 0,
int32_t factor = 0,
int32_t power = 0 ) const
related

Make an entity a derived unit.

Definition at line 37 of file builder.hpp.

◆ unit_prefix()

template<typename Self>
const Self & unit_prefix ( const char * symbol,
int32_t factor = 0,
int32_t power = 0 ) const
related

Make an entity a unit prefix.

Definition at line 57 of file builder.hpp.

◆ warning_range() [1/2]

template<typename T>
untyped_component & warning_range ( double min,
double max )
related

Add a member warning range.

Definition at line 267 of file untyped_component.inl.

◆ warning_range() [2/2]

untyped_component & warning_range ( double min,
double max )
related

Add a member warning range.

Definition at line 268 of file component.hpp.

Variable Documentation

◆ value

uint32_t flecs::bitmask::value

Definition at line 54 of file decl.hpp.