Skip to main content

EntityHandle.ixx File

Versioned, strongly-typed handle for referencing entities. More...

Included Headers

#include <functional> #include <cstdint> #include <cstddef> #include <helios.ecs.types.StrongId> #include <helios.ecs.types.TypeDefs>

Namespaces Index

namespacehelios
namespaceecs
namespacetypes

Classes Index

structEntityHandle<TDomainTag>

A versioned handle for referencing entities in a registry. More...

structhash<helios::ecs::types::EntityHandle< TDomainTag >>

Hash specialization for EntityHandle. More...

Description

Versioned, strongly-typed handle for referencing entities.

File Listing

The file content with the documentation metadata removed is:

1
5module;
6
7
8#include <functional>
9#include <cstdint>
10#include <cstddef>
11
12export module helios.ecs.types.EntityHandle;
13
14import helios.ecs.types.TypeDefs;
15import helios.ecs.types.StrongId;
16
17using namespace helios::ecs::types;
18export namespace helios::ecs::types {
19
23 constexpr auto InvalidVersion = VersionId{0};
24
31 constexpr auto InitialVersion = VersionId{1};
32
33
46 template<typename TDomainTag>
47 struct EntityHandle {
48
53
60
65
66 using DomainTag_type = TDomainTag;
67
69
73 bool operator==(const EntityHandle<TDomainTag>&) const = default;
74
82 constexpr bool operator<(const EntityHandle<TDomainTag>& entityHandle) const noexcept {
83 return entityId < entityHandle.entityId;
84 }
85
93 constexpr bool operator>(const EntityHandle<TDomainTag>& entityHandle) const noexcept {
94 return entityId > entityHandle.entityId;
95 }
96
97
103 [[nodiscard]] bool isValid() const noexcept {
104 return versionId >= 1;
105 }
106
107 };
108
109}
110
111
117template<typename TDomainTag>
118struct std::hash<helios::ecs::types::EntityHandle<TDomainTag>> {
119 std::size_t operator()(const helios::ecs::types::EntityHandle<TDomainTag>& handle) const noexcept {
120
121 const uint64_t packed = (static_cast<uint64_t>(handle.entityId) << 32) |
122 static_cast<uint64_t>(handle.versionId);
123
124 return std::hash<uint64_t>{}(packed);
125 }
126};

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.