9#ifndef SQUID_SRC_BASE_INSTANCEID_H
10#define SQUID_SRC_BASE_INSTANCEID_H
45template <
class Class,
class ValueType = InstanceIdDefaultValueType>
60 std::ostream &
print(std::ostream &)
const;
74#define InstanceIdDefinitions3(Class, pfx, ValueType, ...) \
75 template<> const char * \
76 InstanceId<Class, ValueType>::prefix() const { \
79 template<> std::ostream & \
80 InstanceId<Class, ValueType>::print(std::ostream &os) const { \
81 return os << pfx << value; \
84 InstanceId<Class, ValueType>::change() { \
85 static auto Last = Value(); \
86 value = ++Last ? Last : ++Last; \
90#define InstanceIdDefinitions(...) InstanceIdDefinitions3(__VA_ARGS__, InstanceIdDefaultValueType)
93template <
class Class,
class ValueType>
std::ostream & operator<<(std::ostream &os, const ScopedId &id)
unsigned int InstanceIdDefaultValueType
const char * prefix() const
bool operator==(const InstanceId &o) const
InstanceId(InstanceId &&)=delete
ValueType Value
id storage type
bool operator!=(const InstanceId &o) const
std::ostream & print(std::ostream &) const
writes a compact text representation of the ID
Value value
instance identifier
ScopedId(const char *s, uint64_t v)