46 строки
1.8 KiB
C++
46 строки
1.8 KiB
C++
//===- WinIncludes.cpp -----------------------------------------*- C++ -*-===//
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// //
|
|
// WinIncludes.cpp //
|
|
// Copyright (C) Microsoft Corporation. All rights reserved. //
|
|
// This file is distributed under the University of Illinois Open Source //
|
|
// License. See LICENSE.TXT for details. //
|
|
// //
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "dxc/Support/WinIncludes.h"
|
|
|
|
#include "assert.h"
|
|
#include "dxc/Support/microcom.h"
|
|
|
|
#if defined(_WIN32) && !defined(DXC_DISABLE_ALLOCATOR_OVERRIDES)
|
|
// CoGetMalloc from combaseapi.h is used
|
|
#else
|
|
struct DxcCoMalloc : public IMalloc {
|
|
DxcCoMalloc() : m_dwRef(0){};
|
|
|
|
DXC_MICROCOM_ADDREF_RELEASE_IMPL(m_dwRef)
|
|
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject) override {
|
|
assert(false && "QueryInterface not implemented for DxcCoMalloc.");
|
|
return E_NOINTERFACE;
|
|
}
|
|
|
|
void *STDMETHODCALLTYPE Alloc(SIZE_T size) override { return malloc(size); }
|
|
void *STDMETHODCALLTYPE Realloc(void *ptr, SIZE_T size) override {
|
|
return realloc(ptr, size);
|
|
}
|
|
void STDMETHODCALLTYPE Free(void *ptr) override { free(ptr); }
|
|
SIZE_T STDMETHODCALLTYPE GetSize(void *pv) override { return -1; }
|
|
int STDMETHODCALLTYPE DidAlloc(void *pv) override { return -1; }
|
|
void STDMETHODCALLTYPE HeapMinimize(void) override {}
|
|
|
|
private:
|
|
DXC_MICROCOM_REF_FIELD(m_dwRef)
|
|
};
|
|
|
|
HRESULT DxcCoGetMalloc(DWORD dwMemContext, IMalloc **ppMalloc) {
|
|
*ppMalloc = new DxcCoMalloc;
|
|
(*ppMalloc)->AddRef();
|
|
return S_OK;
|
|
}
|
|
#endif |