mirror of
https://github.com/doitsujin/dxvk.git
synced 2024-12-12 13:08:50 +01:00
92698be09a
Adds substutite Windows headers for use when building DXVK natively for Linux. The main one being windows_base.h which has all of the definitions. It supports stuff like __uuidof using some template nonsense too.
49 lines
1.1 KiB
C++
49 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "windows_base.h"
|
|
|
|
typedef interface IUnknown IUnknown;
|
|
|
|
DEFINE_GUID(IID_IUnknown, 0x00000000,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46)
|
|
|
|
#ifdef __cplusplus
|
|
struct IUnknown {
|
|
|
|
public:
|
|
|
|
virtual HRESULT QueryInterface(REFIID riid, void** ppvObject) = 0;
|
|
|
|
virtual ULONG AddRef() = 0;
|
|
virtual ULONG Release() = 0;
|
|
|
|
};
|
|
#else
|
|
typedef struct IUnknownVtbl
|
|
{
|
|
BEGIN_INTERFACE
|
|
|
|
HRESULT (STDMETHODCALLTYPE *QueryInterface)(
|
|
IUnknown *This,
|
|
REFIID riid,
|
|
void **ppvObject
|
|
);
|
|
ULONG (STDMETHODCALLTYPE *AddRef)(IUnknown *This);
|
|
ULONG (STDMETHODCALLTYPE *Release)(IUnknown *This);
|
|
|
|
END_INTERFACE
|
|
} IUnknownVtbl;
|
|
|
|
interface IUnknown
|
|
{
|
|
CONST_VTBL struct IUnknownVtbl *lpVtbl;
|
|
};
|
|
|
|
#define IUnknown_AddRef(This) ((This)->lpVtbl->AddRef(This))
|
|
#define IUnknown_Release(This) ((This)->lpVtbl->Release(This))
|
|
|
|
#endif // __cplusplus
|
|
|
|
DECLARE_UUIDOF_HELPER(IUnknown, 0x00000000,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46)
|
|
|
|
#define IID_PPV_ARGS(ppType) __uuidof(decltype(**(ppType))), [](auto** pp) { (void)static_cast<IUnknown*>(*pp); return reinterpret_cast<void**>(pp); }(ppType)
|