Pioneer
FrameId.h
Go to the documentation of this file.
1 #ifndef FRAMEID_H_INCLUDED
2 #define FRAMEID_H_INCLUDED
3 
4 #include <cstddef>
5 #include <cstdint>
6 #include <exception>
7 #include <limits>
8 
9 struct FrameId {
10  static constexpr uint32_t Invalid = std::numeric_limits<uint32_t>::max();
11  constexpr FrameId() :
12  m_id(Invalid) {}
13  constexpr FrameId(uint32_t new_id) :
14  m_id(new_id) {}
15 
16  constexpr operator bool() const { return m_id != Invalid; }
17  constexpr operator size_t() const { return m_id; }
18 
19  constexpr bool operator==(FrameId rhs) const { return m_id == rhs.m_id; }
20  constexpr bool operator!=(FrameId rhs) const { return m_id != rhs.m_id; }
21 
22  constexpr bool valid() const { return m_id != Invalid; }
23  constexpr size_t id() const { return m_id; }
24 
25 private:
26  uint32_t m_id;
27 };
28 
29 static_assert(sizeof(FrameId) == sizeof(uint32_t) && alignof(FrameId) == alignof(uint32_t),
30  "Error: FrameId sized differently than the underlying type on this platform!");
31 
32 #endif // FRAMEID_H_INCLUDED
Definition: FrameId.h:9
constexpr FrameId(uint32_t new_id)
Definition: FrameId.h:13
static constexpr uint32_t Invalid
Definition: FrameId.h:10
constexpr bool operator==(FrameId rhs) const
Definition: FrameId.h:19
constexpr bool operator!=(FrameId rhs) const
Definition: FrameId.h:20
constexpr FrameId()
Definition: FrameId.h:11
constexpr bool valid() const
Definition: FrameId.h:22
constexpr size_t id() const
Definition: FrameId.h:23