blob: bfdc0d86f7d12ee6c707cfce4deebf569622d918 [file] [log] [blame] [edit]
///////////////////////////////////////////////////////////////////////////////
// //
// dxctools.h //
// Copyright (C) Microsoft Corporation. All rights reserved. //
// This file is distributed under the University of Illinois Open Source //
// License. See LICENSE.TXT for details. //
// //
// Provides declarations for the DirectX Compiler tooling components. //
// //
///////////////////////////////////////////////////////////////////////////////
#ifndef __DXC_TOOLS__
#define __DXC_TOOLS__
#include <dxc/dxcapi.h>
enum RewriterOptionMask {
Default = 0,
SkipFunctionBody = 1,
SkipStatic = 2,
GlobalExternByDefault = 4,
KeepUserMacro = 8,
};
CROSS_PLATFORM_UUIDOF(IDxcRewriter, "c012115b-8893-4eb9-9c5a-111456ea1c45")
struct IDxcRewriter : public IUnknown {
virtual HRESULT STDMETHODCALLTYPE RemoveUnusedGlobals(
IDxcBlobEncoding *pSource, LPCWSTR entryPoint, DxcDefine *pDefines,
UINT32 defineCount, IDxcOperationResult **ppResult) = 0;
virtual HRESULT STDMETHODCALLTYPE
RewriteUnchanged(IDxcBlobEncoding *pSource, DxcDefine *pDefines,
UINT32 defineCount, IDxcOperationResult **ppResult) = 0;
virtual HRESULT STDMETHODCALLTYPE RewriteUnchangedWithInclude(
IDxcBlobEncoding *pSource,
// Optional file name for pSource. Used in errors and include handlers.
LPCWSTR pSourceName, DxcDefine *pDefines, UINT32 defineCount,
// user-provided interface to handle #include directives (optional)
IDxcIncludeHandler *pIncludeHandler, UINT32 rewriteOption,
IDxcOperationResult **ppResult) = 0;
};
#ifdef _MSC_VER
#define CLSID_SCOPE __declspec(selectany) extern
#else
#define CLSID_SCOPE
#endif
CLSID_SCOPE const CLSID
CLSID_DxcRewriter = {/* b489b951-e07f-40b3-968d-93e124734da4 */
0xb489b951,
0xe07f,
0x40b3,
{0x96, 0x8d, 0x93, 0xe1, 0x24, 0x73, 0x4d, 0xa4}};
CROSS_PLATFORM_UUIDOF(IDxcRewriter2, "261afca1-0609-4ec6-a77f-d98c7035194e")
struct IDxcRewriter2 : public IDxcRewriter {
virtual HRESULT STDMETHODCALLTYPE RewriteWithOptions(
IDxcBlobEncoding *pSource,
// Optional file name for pSource. Used in errors and include handlers.
LPCWSTR pSourceName,
// Compiler arguments
LPCWSTR *pArguments, UINT32 argCount,
// Defines
DxcDefine *pDefines, UINT32 defineCount,
// user-provided interface to handle #include directives (optional)
IDxcIncludeHandler *pIncludeHandler, IDxcOperationResult **ppResult) = 0;
};
#endif