SDEngine
Game Engine
Loading...
Searching...
No Matches
id_types.hpp
Go to the documentation of this file.
1#pragma once
2#include <cstdint>
3#include <functional>
4
5namespace sd {
6
7struct ViewId {
9
10 ViewId() = default;
11 explicit constexpr ViewId(uint32_t v) noexcept : value(v) {}
12
13 constexpr ViewId& operator++() noexcept {
14 ++value;
15 return *this;
16 }
17 constexpr ViewId operator++(int) noexcept {
18 const ViewId tmp = *this;
19 ++value;
20 return tmp;
21 }
22
23 constexpr auto operator<=>(const ViewId&) const = default;
24 constexpr bool operator==(const ViewId&) const = default;
25
26 explicit constexpr operator uint32_t() const noexcept { return value; }
27};
28
29struct WindowId {
31
32 WindowId() = default;
33 explicit constexpr WindowId(uint32_t v) noexcept : value(v) {}
34
36 ++value;
37 return *this;
38 }
39 constexpr WindowId operator++(int) noexcept {
40 const WindowId tmp = *this;
41 ++value;
42 return tmp;
43 }
44
45 constexpr auto operator<=>(const WindowId&) const = default;
46 constexpr bool operator==(const WindowId&) const = default;
47
48 explicit constexpr operator uint32_t() const noexcept { return value; }
49};
50
51} // namespace sd
52
53// std::hash specializations (inline to avoid ODR violations across TUs)
54template<>
55struct std::hash<sd::ViewId> {
56 inline std::size_t operator()(const sd::ViewId id) const noexcept {
57 return std::hash<uint32_t>{}(id.value);
58 }
59};
60
61template<>
62struct std::hash<sd::WindowId> {
63 inline std::size_t operator()(const sd::WindowId id) const noexcept {
64 return std::hash<uint32_t>{}(id.value);
65 }
66};
Definition Application.hpp:22
Definition id_types.hpp:7
ViewId()=default
constexpr bool operator==(const ViewId &) const =default
constexpr auto operator<=>(const ViewId &) const =default
uint32_t value
Definition id_types.hpp:8
constexpr ViewId operator++(int) noexcept
Definition id_types.hpp:17
constexpr ViewId(uint32_t v) noexcept
Definition id_types.hpp:11
constexpr ViewId & operator++() noexcept
Definition id_types.hpp:13
Definition id_types.hpp:29
WindowId()=default
constexpr WindowId operator++(int) noexcept
Definition id_types.hpp:39
constexpr bool operator==(const WindowId &) const =default
uint32_t value
Definition id_types.hpp:30
constexpr WindowId(uint32_t v) noexcept
Definition id_types.hpp:33
constexpr WindowId & operator++() noexcept
Definition id_types.hpp:35
constexpr auto operator<=>(const WindowId &) const =default
std::size_t operator()(const sd::ViewId id) const noexcept
Definition id_types.hpp:56
std::size_t operator()(const sd::WindowId id) const noexcept
Definition id_types.hpp:63
consteval U64 type_id_of()
Definition type_id.hpp:6