10 #include <nx/sdk/ptr.h> 64 static constexpr
int kMinSize = 16;
65 static constexpr
int minSize() {
return kMinSize; }
71 bool operator==(
const InterfaceId& other)
const {
return strcmp(value, other.value) == 0; }
72 bool operator!=(
const InterfaceId& other)
const {
return !(*
this == other); }
80 static_assert(len + 1 >= InterfaceId::minSize(),
81 "Interface id is too short");
83 return reinterpret_cast<const InterfaceId*
>(charArray);
103 template<
class TemplateInstance,
class TemplateArg,
int len>
106 static constexpr
int kMaxStaticInterfaceIdSize = 256;
108 static_assert(len >= 1,
"baseIdCharArray should not be empty");
109 static_assert(std::is_base_of<IRefCountable, TemplateInstance>::value,
110 "TemplateInstance should be inherited from IRefCountable");
111 static_assert(std::is_base_of<IRefCountable, TemplateArg>::value,
112 "TemplateArg should be inherited from IRefCountable");
115 static char id[kMaxStaticInterfaceIdSize];
116 assert(
id[0] ==
'\0');
118 const int result = snprintf(
120 kMaxStaticInterfaceIdSize,
123 TemplateArg::interfaceId()->value);
126 assert(result >= InterfaceId::minSize() - 1);
127 assert(result < kMaxStaticInterfaceIdSize);
150 template<
class Interface>
153 return toPtr(static_cast<Interface*>(queryInterface(Interface::interfaceId())));
156 template<
class Interface>
157 Ptr<const Interface> queryInterface()
const 159 return toPtr(static_cast<const Interface*>(
160 const_cast<IRefCountable*>(
this)->queryInterface(Interface::interfaceId())));
167 virtual int addRef()
const = 0;
181 const void* this_ =
this;
182 if (this_ ==
nullptr)
Definition: i_ref_countable.h:62
static const InterfaceId * makeIdForTemplate(const char(&baseIdCharArray)[len])
Definition: i_ref_countable.h:104
virtual int releaseRef() const =0
virtual ~IRefCountable()=default
int refCountThreadUnsafe() const
Definition: i_ref_countable.h:179
Definition: apple_utils.h:6
static auto interfaceId()
Definition: i_ref_countable.h:88
virtual int addRef() const =0
Definition: i_ref_countable.h:50
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:78