Class id
Synopsis
#include <include/flecs/cpp/entity.hpp>
class id
Description
Class that stores a flecs id. A flecs id is an identifier that can store an entity id, an relation-object pair, or role annotated id (such as SWITCH | Movement).
Inheritance
Decsendents: entity_view
Methods
id overload | ||
add_role | ||
has_relation | ||
has_role overload | ||
is_case | ||
is_pair | Test if id is pair (has relation, object) | |
is_switch | ||
object | Get object from pair | |
raw_id | ||
relation | Get relation from pair | |
remove_generation | ||
remove_role overload | ||
role | ||
role_str | Convert id to string. | |
world | Get world. |
Source
Lines 20-136 in include/flecs/cpp/entity.hpp.
class id {
public:
id()
: m_world(nullptr)
, m_id(0) { }
explicit id(flecs::id_t value)
: m_world(nullptr)
, m_id(value) { }
explicit id(flecs::world_t *world, flecs::id_t value)
: m_world(world)
, m_id(value) { }
explicit id(flecs::world_t *world, flecs::id_t relation, flecs::id_t object)
: m_world(world)
, m_id(ecs_pair(relation, object)) { }
explicit id(flecs::id_t relation, flecs::id_t object)
: m_world(nullptr)
, m_id(ecs_pair(relation, object)) { }
explicit id(const flecs::id& relation, const flecs::id& object)
: m_world(relation.world())
, m_id(ecs_pair(relation.m_id, object.m_id)) { }
/** Test if id is pair (has relation, object) */
bool is_pair() const {
return (m_id & ECS_ROLE_MASK) == flecs::Pair;
}
/* Test if id has the Switch role */
bool is_switch() const {
return (m_id & ECS_ROLE_MASK) == flecs::Switch;
}
/* Test if id has the Case role */
bool is_case() const {
return (m_id & ECS_ROLE_MASK) == flecs::Case;
}
/* Return id with role added */
flecs::entity add_role(flecs::id_t role) const;
/* Return id with role removed */
flecs::entity remove_role(flecs::id_t role) const;
/* Return id without role */
flecs::entity remove_role() const;
/* Return id without role */
flecs::entity remove_generation() const;
/* Test if id has specified role */
bool has_role(flecs::id_t role) const {
return ((m_id & ECS_ROLE_MASK) == role);
}
/* Test if id has any role */
bool has_role() const {
return (m_id & ECS_ROLE_MASK) != 0;
}
flecs::entity role() const;
/* Test if id has specified relation */
bool has_relation(flecs::id_t relation) const {
if (!is_pair()) {
return false;
}
return ECS_PAIR_RELATION(m_id) == relation;
}
/** Get relation from pair.
* If the id is not a pair, this operation will fail. When the id has a
* world, the operation will ensure that the returned id has the correct
* generation count.
*/
flecs::entity relation() const;
/** Get object from pair.
* If the id is not a pair, this operation will fail. When the id has a
* world, the operation will ensure that the returned id has the correct
* generation count.
*/
flecs::entity object() const;
/** Get world. */
flecs::world_t* world() const {
return m_world;
}
/** Convert id to string. */
flecs::string role_str() const {
return flecs::string_view( ecs_role_str(m_id & ECS_ROLE_MASK));
}
ECS_DEPRECATED("use object()")
flecs::entity lo() const;
ECS_DEPRECATED("use relation()")
flecs::entity hi() const;
ECS_DEPRECATED("use flecs::id(relation, object)")
static
flecs::entity comb(entity_view lo, entity_view hi);
flecs::id_t raw_id() {
return m_id;
}
protected:
/* World is optional, but guarantees that entity identifiers extracted from
* the id are valid */
flecs::world_t *m_world;
flecs::id_t m_id;
};