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 explicit constexpr ViewId(uint32_t v = 0) noexcept : value(v) {}
11
12 constexpr ViewId& operator++() noexcept {
13 ++value;
14 return *this;
15 }
16 constexpr ViewId operator++(int) noexcept {
17 const ViewId tmp = *this;
18 ++value;
19 return tmp;
20 }
21
22 constexpr auto operator<=>(const ViewId&) const = default;
23 constexpr bool operator==(const ViewId&) const = default;
24
25 explicit constexpr operator uint32_t() const noexcept { return value; }
26};
27
28struct WindowId {
30
31 explicit constexpr WindowId(uint32_t v = 0) noexcept : value(v) {}
32
34 ++value;
35 return *this;
36 }
37 constexpr WindowId operator++(int) noexcept {
38 const WindowId tmp = *this;
39 ++value;
40 return tmp;
41 }
42
43 constexpr auto operator<=>(const WindowId&) const = default;
44 constexpr bool operator==(const WindowId&) const = default;
45
46 explicit constexpr operator uint32_t() const noexcept { return value; }
47};
48
49} // namespace sd
50
51// std::hash specializations (inline to avoid ODR violations across TUs)
52template<>
53struct std::hash<sd::ViewId> {
54 inline std::size_t operator()(const sd::ViewId id) const noexcept {
55 return std::hash<uint32_t>{}(id.value);
56 }
57};
58
59template<>
60struct std::hash<sd::WindowId> {
61 inline std::size_t operator()(const sd::WindowId id) const noexcept {
62 return std::hash<uint32_t>{}(id.value);
63 }
64};
Definition Application.hpp:28
Definition id_types.hpp:7
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:16
constexpr ViewId & operator++() noexcept
Definition id_types.hpp:12
constexpr ViewId(uint32_t v=0) noexcept
Definition id_types.hpp:10
Definition id_types.hpp:28
constexpr WindowId operator++(int) noexcept
Definition id_types.hpp:37
constexpr bool operator==(const WindowId &) const =default
uint32_t value
Definition id_types.hpp:29
constexpr WindowId & operator++() noexcept
Definition id_types.hpp:33
constexpr WindowId(uint32_t v=0) noexcept
Definition id_types.hpp:31
constexpr auto operator<=>(const WindowId &) const =default
std::size_t operator()(const sd::ViewId id) const noexcept
Definition id_types.hpp:54
std::size_t operator()(const sd::WindowId id) const noexcept
Definition id_types.hpp:61
constexpr T g_type_max
Definition types.hpp:21