5 #include <nx/sdk/uuid.h> 7 #include "i_ref_countable.h" 25 template<
class DerivedInterface,
class BaseInterface = IRefCountable>
29 static_assert(std::is_base_of<IRefCountable, BaseInterface>::value,
30 "Template parameter BaseInterface should be derived from IRefCountable");
34 friend DerivedInterface;
37 using IRefCountable::queryInterface;
41 return doQueryInterface(
id);
48 const Uuid& deprecatedInterfaceId)
50 if (memcmp(
id.value, deprecatedInterfaceId.data(), Uuid::kSize) == 0)
53 return static_cast<DerivedInterface*
>(
this);
55 return doQueryInterface(
id);
61 if (
id == DerivedInterface::interfaceId())
64 return static_cast<DerivedInterface*
>(
this);
66 return BaseInterface::queryInterface(
id);
Definition: i_ref_countable.h:55
Definition: interface.h:26
Definition: i_ref_countable.h:43
IRefCountable * queryInterfaceSupportingDeprecatedId(IRefCountable::InterfaceId id, const Uuid &deprecatedInterfaceId)
Definition: interface.h:46