26#if (! defined (_MSC_VER) && ! defined (__uuidof))
32 #define __uuidof(x) UUIDGetter<x>::get()
37 static CLSID
get() {
return { 0, 0, 0, { 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46 } }; }
40 #define JUCE_DECLARE_UUID_GETTER(name, uuid) \
41 template <> struct UUIDGetter<name> { static CLSID get() { return uuidFromString (uuid); } };
43 #define JUCE_COMCLASS(name, guid) \
45 JUCE_DECLARE_UUID_GETTER (name, guid) \
49 #define JUCE_DECLARE_UUID_GETTER(name, uuid)
50 #define JUCE_COMCLASS(name, guid) struct DECLSPEC_UUID (guid) name
53#define JUCE_IUNKNOWNCLASS(name, guid) JUCE_COMCLASS(name, guid) : public IUnknown
54#define JUCE_COMRESULT HRESULT STDMETHODCALLTYPE
55#define JUCE_COMCALL virtual HRESULT STDMETHODCALLTYPE
63 for (
uint32 digitIndex = 0; digitIndex < 32;)
68 if (
c >=
'0' &&
c <=
'9') digit =
c -
'0';
69 else if (
c >=
'a' &&
c <=
'f') digit =
c -
'a' + 10;
70 else if (
c >=
'A' &&
c <=
'F') digit =
c -
'A' + 10;
71 else if (
c ==
'-')
continue;
74 ints[digitIndex / 8] |= (digit << 4 * (7 - (digitIndex & 7)));
90template <
class ComClass>
99 operator ComClass*()
const noexcept {
return p; }
105 if (newP !=
nullptr) newP->AddRef();
124 jassert (hr != CO_E_NOTINITIALIZED);
128 template <
class OtherComClass>
137 template <
class OtherComClass>
143 template <
class OtherComClass>
155 ComClass*
p =
nullptr;
163template <class First, class... ComClasses>
182 return E_NOINTERFACE;
185 template <
class Type>
189 *
result =
dynamic_cast<Type*
> (
this);
199template <
class... ComClasses>
208 const std::tuple<IID, void*> bases[]
210 std::make_tuple (
__uuidof (ComClasses),
211 static_cast<void*
> (
static_cast<ComClasses*
> (
this)))...
214 for (
const auto& base : bases)
216 if (refId == std::get<0> (base))
219 *
result = std::get<1> (base);
#define noexcept
Definition DistrhoDefines.h:72
JUCE_COMRESULT QueryInterface(REFIID refId, void **result)
Definition juce_win32_ComSmartPtr.h:176
ULONG refCount
Definition juce_win32_ComSmartPtr.h:174
JUCE_COMRESULT castToType(void **result)
Definition juce_win32_ComSmartPtr.h:186
ComBaseClassHelperBase(unsigned int initialRefCount)
Definition juce_win32_ComSmartPtr.h:167
ULONG STDMETHODCALLTYPE AddRef()
Definition juce_win32_ComSmartPtr.h:170
virtual ~ComBaseClassHelperBase()=default
ULONG STDMETHODCALLTYPE Release()
Definition juce_win32_ComSmartPtr.h:171
ComBaseClassHelper(unsigned int initialRefCount=1)
Definition juce_win32_ComSmartPtr.h:203
JUCE_COMRESULT QueryInterface(REFIID refId, void **result)
Definition juce_win32_ComSmartPtr.h:206
ComSmartPtr() noexcept
Definition juce_win32_ComSmartPtr.h:94
~ComSmartPtr()
Definition juce_win32_ComSmartPtr.h:97
ComClass * operator->() const noexcept
Definition juce_win32_ComSmartPtr.h:101
ComSmartPtr(ComClass *obj)
Definition juce_win32_ComSmartPtr.h:95
ComClass ** resetAndGetPointerAddress()
Definition juce_win32_ComSmartPtr.h:114
HRESULT QueryInterface(ComSmartPtr< OtherComClass > &destObject) const
Definition juce_win32_ComSmartPtr.h:138
ComSmartPtr(const ComSmartPtr &other)
Definition juce_win32_ComSmartPtr.h:96
ComClass ** operator&() noexcept
void release()
Definition juce_win32_ComSmartPtr.h:157
HRESULT CoCreateInstance(REFCLSID classUUID, DWORD dwClsContext=CLSCTX_INPROC_SERVER)
Definition juce_win32_ComSmartPtr.h:121
ComClass & operator*() const noexcept
Definition juce_win32_ComSmartPtr.h:100
ComClass * p
Definition juce_win32_ComSmartPtr.h:155
HRESULT QueryInterface(REFCLSID classUUID, ComSmartPtr< OtherComClass > &destObject) const
Definition juce_win32_ComSmartPtr.h:129
ComSmartPtr< OtherComClass > getInterface() const
Definition juce_win32_ComSmartPtr.h:144
unsigned s
Definition inflate.c:1555
#define JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE(...)
Definition juce_CompilerWarnings.h:181
#define JUCE_END_IGNORE_WARNINGS_GCC_LIKE
Definition juce_CompilerWarnings.h:182
#define JUCE_COMRESULT
Definition juce_win32_ComSmartPtr.h:54
#define __uuidof(x)
Definition juce_win32_ComSmartPtr.h:32
Definition carla_juce.cpp:31
GUID uuidFromString(const char *s) noexcept
Definition juce_win32_ComSmartPtr.h:59
unsigned short uint16
Definition juce_MathsFunctions.h:41
unsigned int uint32
Definition juce_MathsFunctions.h:45
unsigned char uint8
Definition juce_MathsFunctions.h:37
static CLSID get()
Definition juce_win32_ComSmartPtr.h:37
Definition juce_win32_ComSmartPtr.h:31
static CLSID get()
Definition juce_win32_ComSmartPtr.h:31
#define S_OK
Definition swell-types.h:53
signed int HRESULT
Definition swell-types.h:181
unsigned int DWORD
Definition swell-types.h:164
unsigned int ULONG
Definition swell-types.h:183
return c
Definition crypt.c:175
int r
Definition crypt.c:458
int result
Definition process.c:1455
#define const
Definition zconf.h:137