Skip to content

Commit 58f3d7b

Browse files
committed
lib: augment eid_t with member functions
1 parent 377264f commit 58f3d7b

File tree

1 file changed

+5
-0
lines changed

1 file changed

+5
-0
lines changed

include/gromox/mapidefs.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -846,9 +846,14 @@ enum {
846846

847847
/* cf. glossary.rst "Internal Identifier" */
848848
struct eid_t {
849+
static constexpr uint64_t GCV_MASK = 0xFFFFFFFFFFFF;
849850
eid_t() = default;
850851
constexpr eid_t(uint64_t v) : m_value(v) {}
852+
constexpr eid_t(uint16_t r, uint64_t v) : m_value(__builtin_bswap64(v & GCV_MASK) | r) {}
851853
constexpr operator uint64_t() const { return m_value; }
854+
constexpr uint64_t gcv() const { return __builtin_bswap64(m_value) & GCV_MASK; }
855+
constexpr uint16_t replid() const { return m_value & 0xFFFF; }
856+
constexpr uint64_t raw() const { return m_value; }
852857
void operator=(uint64_t) = delete;
853858
uint64_t m_value;
854859
};

0 commit comments

Comments
 (0)