acme
Foundational cross-platform layer of the ca2 framework
Loading...
Searching...
No Matches
_.h
1// Created by camilo on 2026-05-22 17:14 <3ThomasBorregaardSørensen!!
2#pragma once
3
4#include "comptr.h"
5#include "hresult_exception.h"
6
7#define øDECL_INTERFACE_MAP() \
8 HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void **ppv); \
9 ULONG STDMETHODCALLTYPE AddRef() { return InternalAddRef(); } \
10 ULONG STDMETHODCALLTYPE Release() { return InternalRelease(); }
11
12#define øBEGIN_INTERFACE_MAP(class_name, default_interface) \
13HRESULT STDMETHODCALLTYPE class_name::QueryInterface(REFIID riid, void **ppv) \
14 { \
15 if (!ppv) \
16 return E_POINTER; \
17 \
18 *ppv = nullptr; \
19 if (riid == IID_IUnknown) \
20 { \
21 \
22 *ppv = (IUnknown *)(default_interface *)this; \
23 this->AddRef(); \
24return S_OK; \
25 }
26
27
28#define øINTERFACE_MAP_ITEM(interface) \
29 else if (riid == __uuidof(interface)) \
30 { \
31 *ppv = (interface *)this; \
32 AddRef(); \
33 return S_OK; \
34 }
35
36#define øEND_INTERFACE_MAP() \
37 return E_NOINTERFACE; \
38 }