/*** Autogenerated by WIDL 11.16 from include/vkd3d_d3d11shader.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __vkd3d_d3d11shader_h__
#define __vkd3d_d3d11shader_h__

/* Forward declarations */

#ifndef __ID3D11ShaderReflectionType_FWD_DEFINED__
#define __ID3D11ShaderReflectionType_FWD_DEFINED__
typedef interface ID3D11ShaderReflectionType ID3D11ShaderReflectionType;
#ifdef __cplusplus
interface ID3D11ShaderReflectionType;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11ShaderReflectionVariable_FWD_DEFINED__
#define __ID3D11ShaderReflectionVariable_FWD_DEFINED__
typedef interface ID3D11ShaderReflectionVariable ID3D11ShaderReflectionVariable;
#ifdef __cplusplus
interface ID3D11ShaderReflectionVariable;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11ShaderReflectionConstantBuffer_FWD_DEFINED__
#define __ID3D11ShaderReflectionConstantBuffer_FWD_DEFINED__
typedef interface ID3D11ShaderReflectionConstantBuffer ID3D11ShaderReflectionConstantBuffer;
#ifdef __cplusplus
interface ID3D11ShaderReflectionConstantBuffer;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11ShaderReflection_FWD_DEFINED__
#define __ID3D11ShaderReflection_FWD_DEFINED__
typedef interface ID3D11ShaderReflection ID3D11ShaderReflection;
#ifdef __cplusplus
interface ID3D11ShaderReflection;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11FunctionParameterReflection_FWD_DEFINED__
#define __ID3D11FunctionParameterReflection_FWD_DEFINED__
typedef interface ID3D11FunctionParameterReflection ID3D11FunctionParameterReflection;
#ifdef __cplusplus
interface ID3D11FunctionParameterReflection;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11FunctionReflection_FWD_DEFINED__
#define __ID3D11FunctionReflection_FWD_DEFINED__
typedef interface ID3D11FunctionReflection ID3D11FunctionReflection;
#ifdef __cplusplus
interface ID3D11FunctionReflection;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11LibraryReflection_FWD_DEFINED__
#define __ID3D11LibraryReflection_FWD_DEFINED__
typedef interface ID3D11LibraryReflection ID3D11LibraryReflection;
#ifdef __cplusplus
interface ID3D11LibraryReflection;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11ModuleInstance_FWD_DEFINED__
#define __ID3D11ModuleInstance_FWD_DEFINED__
typedef interface ID3D11ModuleInstance ID3D11ModuleInstance;
#ifdef __cplusplus
interface ID3D11ModuleInstance;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11Module_FWD_DEFINED__
#define __ID3D11Module_FWD_DEFINED__
typedef interface ID3D11Module ID3D11Module;
#ifdef __cplusplus
interface ID3D11Module;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11Linker_FWD_DEFINED__
#define __ID3D11Linker_FWD_DEFINED__
typedef interface ID3D11Linker ID3D11Linker;
#ifdef __cplusplus
interface ID3D11Linker;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11LinkingNode_FWD_DEFINED__
#define __ID3D11LinkingNode_FWD_DEFINED__
typedef interface ID3D11LinkingNode ID3D11LinkingNode;
#ifdef __cplusplus
interface ID3D11LinkingNode;
#endif /* __cplusplus */
#endif

#ifndef __ID3D11FunctionLinkingGraph_FWD_DEFINED__
#define __ID3D11FunctionLinkingGraph_FWD_DEFINED__
typedef interface ID3D11FunctionLinkingGraph ID3D11FunctionLinkingGraph;
#ifdef __cplusplus
interface ID3D11FunctionLinkingGraph;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <vkd3d_d3dcommon.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef D3D_COMPILER_VERSION
#define D3D_COMPILER_VERSION 47
#endif
#define D3D_SHADER_REQUIRES_DOUBLES (0x1u)

#define D3D_SHADER_REQUIRES_EARLY_DEPTH_STENCIL (0x2u)

#define D3D_SHADER_REQUIRES_UAVS_AT_EVERY_STAGE (0x4u)

#define D3D_SHADER_REQUIRES_64_UAVS (0x8u)

#define D3D_SHADER_REQUIRES_MINIMUM_PRECISION (0x10u)

#define D3D_SHADER_REQUIRES_11_1_DOUBLE_EXTENSIONS (0x20u)

#define D3D_SHADER_REQUIRES_11_1_SHADER_EXTENSIONS (0x40u)

#define D3D_SHADER_REQUIRES_LEVEL_9_COMPARISON_FILTERING (0x80u)

#define D3D_SHADER_REQUIRES_TILED_RESOURCES (0x100u)

typedef enum D3D11_SHADER_VERSION_TYPE {
    D3D11_SHVER_PIXEL_SHADER = 0x0,
    D3D11_SHVER_VERTEX_SHADER = 0x1,
    D3D11_SHVER_GEOMETRY_SHADER = 0x2,
    D3D11_SHVER_HULL_SHADER = 0x3,
    D3D11_SHVER_DOMAIN_SHADER = 0x4,
    D3D11_SHVER_COMPUTE_SHADER = 0x5,
    D3D11_SHVER_RESERVED0 = 0xfff0
} D3D11_SHADER_VERSION_TYPE;
typedef struct _D3D11_SHADER_DESC {
    UINT Version;
    const char *Creator;
    UINT Flags;
    UINT ConstantBuffers;
    UINT BoundResources;
    UINT InputParameters;
    UINT OutputParameters;
    UINT InstructionCount;
    UINT TempRegisterCount;
    UINT TempArrayCount;
    UINT DefCount;
    UINT DclCount;
    UINT TextureNormalInstructions;
    UINT TextureLoadInstructions;
    UINT TextureCompInstructions;
    UINT TextureBiasInstructions;
    UINT TextureGradientInstructions;
    UINT FloatInstructionCount;
    UINT IntInstructionCount;
    UINT UintInstructionCount;
    UINT StaticFlowControlCount;
    UINT DynamicFlowControlCount;
    UINT MacroInstructionCount;
    UINT ArrayInstructionCount;
    UINT CutInstructionCount;
    UINT EmitInstructionCount;
    D3D_PRIMITIVE_TOPOLOGY GSOutputTopology;
    UINT GSMaxOutputVertexCount;
    D3D_PRIMITIVE InputPrimitive;
    UINT PatchConstantParameters;
    UINT cGSInstanceCount;
    UINT cControlPoints;
    D3D_TESSELLATOR_OUTPUT_PRIMITIVE HSOutputPrimitive;
    D3D_TESSELLATOR_PARTITIONING HSPartitioning;
    D3D_TESSELLATOR_DOMAIN TessellatorDomain;
    UINT cBarrierInstructions;
    UINT cInterlockedInstructions;
    UINT cTextureStoreInstructions;
} D3D11_SHADER_DESC;
struct _D3D11_SHADER_VARIABLE_DESC_v40 {
    const char *Name;
    UINT StartOffset;
    UINT Size;
    UINT uFlags;
    void *DefaultValue;
};
struct _D3D11_SHADER_VARIABLE_DESC_v41 {
    const char *Name;
    UINT StartOffset;
    UINT Size;
    UINT uFlags;
    void *DefaultValue;
    UINT StartTexture;
    UINT TextureSize;
    UINT StartSampler;
    UINT SamplerSize;
};
#if D3D_COMPILER_VERSION >= 41
#define _D3D11_SHADER_VARIABLE_DESC _D3D11_SHADER_VARIABLE_DESC_v41
#else
#define _D3D11_SHADER_VARIABLE_DESC _D3D11_SHADER_VARIABLE_DESC_v40
#endif
typedef struct _D3D11_SHADER_VARIABLE_DESC D3D11_SHADER_VARIABLE_DESC;
typedef struct _D3D11_SHADER_TYPE_DESC {
    D3D_SHADER_VARIABLE_CLASS Class;
    D3D_SHADER_VARIABLE_TYPE Type;
    UINT Rows;
    UINT Columns;
    UINT Elements;
    UINT Members;
    UINT Offset;
    const char *Name;
} D3D11_SHADER_TYPE_DESC;
typedef struct _D3D11_SHADER_BUFFER_DESC {
    const char *Name;
    D3D_CBUFFER_TYPE Type;
    UINT Variables;
    UINT Size;
    UINT uFlags;
} D3D11_SHADER_BUFFER_DESC;
typedef struct _D3D11_SHADER_INPUT_BIND_DESC {
    const char *Name;
    D3D_SHADER_INPUT_TYPE Type;
    UINT BindPoint;
    UINT BindCount;
    UINT uFlags;
    D3D_RESOURCE_RETURN_TYPE ReturnType;
    D3D_SRV_DIMENSION Dimension;
    UINT NumSamples;
} D3D11_SHADER_INPUT_BIND_DESC;
struct _D3D11_SIGNATURE_PARAMETER_DESC_v40 {
    const char *SemanticName;
    UINT SemanticIndex;
    UINT Register;
    D3D_NAME SystemValueType;
    D3D_REGISTER_COMPONENT_TYPE ComponentType;
    BYTE Mask;
    BYTE ReadWriteMask;
    UINT Stream;
};
struct _D3D11_SIGNATURE_PARAMETER_DESC_v46 {
    const char *SemanticName;
    UINT SemanticIndex;
    UINT Register;
    D3D_NAME SystemValueType;
    D3D_REGISTER_COMPONENT_TYPE ComponentType;
    BYTE Mask;
    BYTE ReadWriteMask;
    UINT Stream;
    D3D_MIN_PRECISION MinPrecision;
};
#if D3D_COMPILER_VERSION >= 46
#define _D3D11_SIGNATURE_PARAMETER_DESC _D3D11_SIGNATURE_PARAMETER_DESC_v46
#else
#define _D3D11_SIGNATURE_PARAMETER_DESC _D3D11_SIGNATURE_PARAMETER_DESC_v40
#endif
typedef struct _D3D11_SIGNATURE_PARAMETER_DESC D3D11_SIGNATURE_PARAMETER_DESC;
typedef struct _D3D11_PARAMETER_DESC {
    const char *Name;
    const char *SemanticName;
    D3D_SHADER_VARIABLE_TYPE Type;
    D3D_SHADER_VARIABLE_CLASS Class;
    UINT Rows;
    UINT Columns;
    D3D_INTERPOLATION_MODE InterpolationMode;
    D3D_PARAMETER_FLAGS Flags;
    UINT FirstInRegister;
    UINT FirstInComponent;
    UINT FirstOutRegister;
    UINT FirstOutComponent;
} D3D11_PARAMETER_DESC;
typedef struct _D3D11_FUNCTION_DESC {
    UINT Version;
    const char *Creator;
    UINT Flags;
    UINT ConstantBuffers;
    UINT BoundResources;
    UINT InstructionCount;
    UINT TempRegisterCount;
    UINT TempArrayCount;
    UINT DefCount;
    UINT DclCount;
    UINT TextureNormalInstructions;
    UINT TextureLoadInstructions;
    UINT TextureCompInstructions;
    UINT TextureBiasInstructions;
    UINT TextureGradientInstructions;
    UINT FloatInstructionCount;
    UINT IntInstructionCount;
    UINT UintInstructionCount;
    UINT StaticFlowControlCount;
    UINT DynamicFlowControlCount;
    UINT MacroInstructionCount;
    UINT ArrayInstructionCount;
    UINT MovInstructionCount;
    UINT MovcInstructionCount;
    UINT ConversionInstructionCount;
    UINT BitwiseInstructionCount;
    D3D_FEATURE_LEVEL MinFeatureLevel;
    UINT64 RequiredFeatureFlags;
    const char *Name;
    INT FunctionParameterCount;
    BOOL HasReturn;
    BOOL Has10Level9VertexShader;
    BOOL Has10Level9PixelShader;
} D3D11_FUNCTION_DESC;
typedef struct _D3D11_LIBRARY_DESC {
    const char *Creator;
    UINT Flags;
    UINT FunctionCount;
} D3D11_LIBRARY_DESC;
typedef D3D_CBUFFER_TYPE D3D11_CBUFFER_TYPE;
typedef D3D_RESOURCE_RETURN_TYPE D3D11_RESOURCE_RETURN_TYPE;
typedef D3D_TESSELLATOR_DOMAIN D3D11_TESSELLATOR_DOMAIN;
typedef D3D_TESSELLATOR_PARTITIONING D3D11_TESSELLATOR_PARTITIONING;
typedef D3D_TESSELLATOR_OUTPUT_PRIMITIVE D3D11_TESSELLATOR_OUTPUT_PRIMITIVE;
#ifndef __ID3D11ShaderReflectionConstantBuffer_FWD_DEFINED__
#define __ID3D11ShaderReflectionConstantBuffer_FWD_DEFINED__
typedef interface ID3D11ShaderReflectionConstantBuffer ID3D11ShaderReflectionConstantBuffer;
#ifdef __cplusplus
interface ID3D11ShaderReflectionConstantBuffer;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * ID3D11ShaderReflectionType interface
 */
#ifndef __ID3D11ShaderReflectionType_INTERFACE_DEFINED__
#define __ID3D11ShaderReflectionType_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11ShaderReflectionType, 0x6e6ffa6a, 0x9bae, 0x4613, 0xa5,0x1e, 0x91,0x65,0x2d,0x50,0x8c,0x21);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6e6ffa6a-9bae-4613-a51e-91652d508c21")
ID3D11ShaderReflectionType
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_SHADER_TYPE_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionType * STDMETHODCALLTYPE GetMemberTypeByIndex(
        UINT index) = 0;

    virtual ID3D11ShaderReflectionType * STDMETHODCALLTYPE GetMemberTypeByName(
        const char *name) = 0;

    virtual const char * STDMETHODCALLTYPE GetMemberTypeName(
        UINT index) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsEqual(
        ID3D11ShaderReflectionType *type) = 0;

    virtual ID3D11ShaderReflectionType * STDMETHODCALLTYPE GetSubType(
        ) = 0;

    virtual ID3D11ShaderReflectionType * STDMETHODCALLTYPE GetBaseClass(
        ) = 0;

    virtual UINT STDMETHODCALLTYPE GetNumInterfaces(
        ) = 0;

    virtual ID3D11ShaderReflectionType * STDMETHODCALLTYPE GetInterfaceByIndex(
        UINT index) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsOfType(
        ID3D11ShaderReflectionType *type) = 0;

    virtual HRESULT STDMETHODCALLTYPE ImplementsInterface(
        ID3D11ShaderReflectionType *base) = 0;

    END_INTERFACE

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11ShaderReflectionType, 0x6e6ffa6a, 0x9bae, 0x4613, 0xa5,0x1e, 0x91,0x65,0x2d,0x50,0x8c,0x21)
#endif
#else
typedef struct ID3D11ShaderReflectionTypeVtbl {
    BEGIN_INTERFACE

    /*** ID3D11ShaderReflectionType methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11ShaderReflectionType *This,
        D3D11_SHADER_TYPE_DESC *desc);

    ID3D11ShaderReflectionType * (STDMETHODCALLTYPE *GetMemberTypeByIndex)(
        ID3D11ShaderReflectionType *This,
        UINT index);

    ID3D11ShaderReflectionType * (STDMETHODCALLTYPE *GetMemberTypeByName)(
        ID3D11ShaderReflectionType *This,
        const char *name);

    const char * (STDMETHODCALLTYPE *GetMemberTypeName)(
        ID3D11ShaderReflectionType *This,
        UINT index);

    HRESULT (STDMETHODCALLTYPE *IsEqual)(
        ID3D11ShaderReflectionType *This,
        ID3D11ShaderReflectionType *type);

    ID3D11ShaderReflectionType * (STDMETHODCALLTYPE *GetSubType)(
        ID3D11ShaderReflectionType *This);

    ID3D11ShaderReflectionType * (STDMETHODCALLTYPE *GetBaseClass)(
        ID3D11ShaderReflectionType *This);

    UINT (STDMETHODCALLTYPE *GetNumInterfaces)(
        ID3D11ShaderReflectionType *This);

    ID3D11ShaderReflectionType * (STDMETHODCALLTYPE *GetInterfaceByIndex)(
        ID3D11ShaderReflectionType *This,
        UINT index);

    HRESULT (STDMETHODCALLTYPE *IsOfType)(
        ID3D11ShaderReflectionType *This,
        ID3D11ShaderReflectionType *type);

    HRESULT (STDMETHODCALLTYPE *ImplementsInterface)(
        ID3D11ShaderReflectionType *This,
        ID3D11ShaderReflectionType *base);

    END_INTERFACE
} ID3D11ShaderReflectionTypeVtbl;

interface ID3D11ShaderReflectionType {
    CONST_VTBL ID3D11ShaderReflectionTypeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3D11ShaderReflectionType methods ***/
#define ID3D11ShaderReflectionType_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#define ID3D11ShaderReflectionType_GetMemberTypeByIndex(This,index) (This)->lpVtbl->GetMemberTypeByIndex(This,index)
#define ID3D11ShaderReflectionType_GetMemberTypeByName(This,name) (This)->lpVtbl->GetMemberTypeByName(This,name)
#define ID3D11ShaderReflectionType_GetMemberTypeName(This,index) (This)->lpVtbl->GetMemberTypeName(This,index)
#define ID3D11ShaderReflectionType_IsEqual(This,type) (This)->lpVtbl->IsEqual(This,type)
#define ID3D11ShaderReflectionType_GetSubType(This) (This)->lpVtbl->GetSubType(This)
#define ID3D11ShaderReflectionType_GetBaseClass(This) (This)->lpVtbl->GetBaseClass(This)
#define ID3D11ShaderReflectionType_GetNumInterfaces(This) (This)->lpVtbl->GetNumInterfaces(This)
#define ID3D11ShaderReflectionType_GetInterfaceByIndex(This,index) (This)->lpVtbl->GetInterfaceByIndex(This,index)
#define ID3D11ShaderReflectionType_IsOfType(This,type) (This)->lpVtbl->IsOfType(This,type)
#define ID3D11ShaderReflectionType_ImplementsInterface(This,base) (This)->lpVtbl->ImplementsInterface(This,base)
#else
/*** ID3D11ShaderReflectionType methods ***/
static inline HRESULT ID3D11ShaderReflectionType_GetDesc(ID3D11ShaderReflectionType* This,D3D11_SHADER_TYPE_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
static inline ID3D11ShaderReflectionType * ID3D11ShaderReflectionType_GetMemberTypeByIndex(ID3D11ShaderReflectionType* This,UINT index) {
    return This->lpVtbl->GetMemberTypeByIndex(This,index);
}
static inline ID3D11ShaderReflectionType * ID3D11ShaderReflectionType_GetMemberTypeByName(ID3D11ShaderReflectionType* This,const char *name) {
    return This->lpVtbl->GetMemberTypeByName(This,name);
}
static inline const char * ID3D11ShaderReflectionType_GetMemberTypeName(ID3D11ShaderReflectionType* This,UINT index) {
    return This->lpVtbl->GetMemberTypeName(This,index);
}
static inline HRESULT ID3D11ShaderReflectionType_IsEqual(ID3D11ShaderReflectionType* This,ID3D11ShaderReflectionType *type) {
    return This->lpVtbl->IsEqual(This,type);
}
static inline ID3D11ShaderReflectionType * ID3D11ShaderReflectionType_GetSubType(ID3D11ShaderReflectionType* This) {
    return This->lpVtbl->GetSubType(This);
}
static inline ID3D11ShaderReflectionType * ID3D11ShaderReflectionType_GetBaseClass(ID3D11ShaderReflectionType* This) {
    return This->lpVtbl->GetBaseClass(This);
}
static inline UINT ID3D11ShaderReflectionType_GetNumInterfaces(ID3D11ShaderReflectionType* This) {
    return This->lpVtbl->GetNumInterfaces(This);
}
static inline ID3D11ShaderReflectionType * ID3D11ShaderReflectionType_GetInterfaceByIndex(ID3D11ShaderReflectionType* This,UINT index) {
    return This->lpVtbl->GetInterfaceByIndex(This,index);
}
static inline HRESULT ID3D11ShaderReflectionType_IsOfType(ID3D11ShaderReflectionType* This,ID3D11ShaderReflectionType *type) {
    return This->lpVtbl->IsOfType(This,type);
}
static inline HRESULT ID3D11ShaderReflectionType_ImplementsInterface(ID3D11ShaderReflectionType* This,ID3D11ShaderReflectionType *base) {
    return This->lpVtbl->ImplementsInterface(This,base);
}
#endif
#endif

#endif


#endif  /* __ID3D11ShaderReflectionType_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11ShaderReflectionVariable interface
 */
#ifndef __ID3D11ShaderReflectionVariable_INTERFACE_DEFINED__
#define __ID3D11ShaderReflectionVariable_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11ShaderReflectionVariable, 0x51f23923, 0xf3e5, 0x4bd1, 0x91,0xcb, 0x60,0x61,0x77,0xd8,0xdb,0x4c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("51f23923-f3e5-4bd1-91cb-606177d8db4c")
ID3D11ShaderReflectionVariable
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_SHADER_VARIABLE_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionType * STDMETHODCALLTYPE GetType(
        ) = 0;

    virtual ID3D11ShaderReflectionConstantBuffer * STDMETHODCALLTYPE GetBuffer(
        ) = 0;

    virtual UINT STDMETHODCALLTYPE GetInterfaceSlot(
        UINT index) = 0;

    END_INTERFACE

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11ShaderReflectionVariable, 0x51f23923, 0xf3e5, 0x4bd1, 0x91,0xcb, 0x60,0x61,0x77,0xd8,0xdb,0x4c)
#endif
#else
typedef struct ID3D11ShaderReflectionVariableVtbl {
    BEGIN_INTERFACE

    /*** ID3D11ShaderReflectionVariable methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11ShaderReflectionVariable *This,
        D3D11_SHADER_VARIABLE_DESC *desc);

    ID3D11ShaderReflectionType * (STDMETHODCALLTYPE *GetType)(
        ID3D11ShaderReflectionVariable *This);

    ID3D11ShaderReflectionConstantBuffer * (STDMETHODCALLTYPE *GetBuffer)(
        ID3D11ShaderReflectionVariable *This);

    UINT (STDMETHODCALLTYPE *GetInterfaceSlot)(
        ID3D11ShaderReflectionVariable *This,
        UINT index);

    END_INTERFACE
} ID3D11ShaderReflectionVariableVtbl;

interface ID3D11ShaderReflectionVariable {
    CONST_VTBL ID3D11ShaderReflectionVariableVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3D11ShaderReflectionVariable methods ***/
#define ID3D11ShaderReflectionVariable_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#define ID3D11ShaderReflectionVariable_GetType(This) (This)->lpVtbl->GetType(This)
#define ID3D11ShaderReflectionVariable_GetBuffer(This) (This)->lpVtbl->GetBuffer(This)
#define ID3D11ShaderReflectionVariable_GetInterfaceSlot(This,index) (This)->lpVtbl->GetInterfaceSlot(This,index)
#else
/*** ID3D11ShaderReflectionVariable methods ***/
static inline HRESULT ID3D11ShaderReflectionVariable_GetDesc(ID3D11ShaderReflectionVariable* This,D3D11_SHADER_VARIABLE_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
static inline ID3D11ShaderReflectionType * ID3D11ShaderReflectionVariable_GetType(ID3D11ShaderReflectionVariable* This) {
    return This->lpVtbl->GetType(This);
}
static inline ID3D11ShaderReflectionConstantBuffer * ID3D11ShaderReflectionVariable_GetBuffer(ID3D11ShaderReflectionVariable* This) {
    return This->lpVtbl->GetBuffer(This);
}
static inline UINT ID3D11ShaderReflectionVariable_GetInterfaceSlot(ID3D11ShaderReflectionVariable* This,UINT index) {
    return This->lpVtbl->GetInterfaceSlot(This,index);
}
#endif
#endif

#endif


#endif  /* __ID3D11ShaderReflectionVariable_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11ShaderReflectionConstantBuffer interface
 */
#ifndef __ID3D11ShaderReflectionConstantBuffer_INTERFACE_DEFINED__
#define __ID3D11ShaderReflectionConstantBuffer_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11ShaderReflectionConstantBuffer, 0xeb62d63d, 0x93dd, 0x4318, 0x8a,0xe8, 0xc6,0xf8,0x3a,0xd3,0x71,0xb8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eb62d63d-93dd-4318-8ae8-c6f83ad371b8")
ID3D11ShaderReflectionConstantBuffer
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_SHADER_BUFFER_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionVariable * STDMETHODCALLTYPE GetVariableByIndex(
        UINT index) = 0;

    virtual ID3D11ShaderReflectionVariable * STDMETHODCALLTYPE GetVariableByName(
        const char *name) = 0;

    END_INTERFACE

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11ShaderReflectionConstantBuffer, 0xeb62d63d, 0x93dd, 0x4318, 0x8a,0xe8, 0xc6,0xf8,0x3a,0xd3,0x71,0xb8)
#endif
#else
typedef struct ID3D11ShaderReflectionConstantBufferVtbl {
    BEGIN_INTERFACE

    /*** ID3D11ShaderReflectionConstantBuffer methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11ShaderReflectionConstantBuffer *This,
        D3D11_SHADER_BUFFER_DESC *desc);

    ID3D11ShaderReflectionVariable * (STDMETHODCALLTYPE *GetVariableByIndex)(
        ID3D11ShaderReflectionConstantBuffer *This,
        UINT index);

    ID3D11ShaderReflectionVariable * (STDMETHODCALLTYPE *GetVariableByName)(
        ID3D11ShaderReflectionConstantBuffer *This,
        const char *name);

    END_INTERFACE
} ID3D11ShaderReflectionConstantBufferVtbl;

interface ID3D11ShaderReflectionConstantBuffer {
    CONST_VTBL ID3D11ShaderReflectionConstantBufferVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3D11ShaderReflectionConstantBuffer methods ***/
#define ID3D11ShaderReflectionConstantBuffer_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#define ID3D11ShaderReflectionConstantBuffer_GetVariableByIndex(This,index) (This)->lpVtbl->GetVariableByIndex(This,index)
#define ID3D11ShaderReflectionConstantBuffer_GetVariableByName(This,name) (This)->lpVtbl->GetVariableByName(This,name)
#else
/*** ID3D11ShaderReflectionConstantBuffer methods ***/
static inline HRESULT ID3D11ShaderReflectionConstantBuffer_GetDesc(ID3D11ShaderReflectionConstantBuffer* This,D3D11_SHADER_BUFFER_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
static inline ID3D11ShaderReflectionVariable * ID3D11ShaderReflectionConstantBuffer_GetVariableByIndex(ID3D11ShaderReflectionConstantBuffer* This,UINT index) {
    return This->lpVtbl->GetVariableByIndex(This,index);
}
static inline ID3D11ShaderReflectionVariable * ID3D11ShaderReflectionConstantBuffer_GetVariableByName(ID3D11ShaderReflectionConstantBuffer* This,const char *name) {
    return This->lpVtbl->GetVariableByName(This,name);
}
#endif
#endif

#endif


#endif  /* __ID3D11ShaderReflectionConstantBuffer_INTERFACE_DEFINED__ */

DEFINE_GUID(IID_ID3D11ShaderReflection_v40, 0x17f27486, 0xa342, 0x4d10, 0x88, 0x42, 0xab, 0x08, 0x74, 0xe7, 0xf6, 0x70);
DEFINE_GUID(IID_ID3D11ShaderReflection_v43, 0x0a233719, 0x3960, 0x4578, 0x9d, 0x7c, 0x20, 0x3b, 0x8b, 0x1d, 0x9c, 0xc1);
DEFINE_GUID(IID_ID3D11ShaderReflection_v46, 0x8d536ca1, 0x0cca, 0x4956, 0xa8, 0x37, 0x78, 0x69, 0x63, 0x75, 0x55, 0x84);
#if D3D_COMPILER_VERSION <= 42
# define IID_ID3D11ShaderReflection IID_ID3D11ShaderReflection_v40
#elif D3D_COMPILER_VERSION == 43
# define IID_ID3D11ShaderReflection IID_ID3D11ShaderReflection_v43
#else
# define IID_ID3D11ShaderReflection IID_ID3D11ShaderReflection_v46
#endif
/*****************************************************************************
 * ID3D11ShaderReflection interface
 */
#ifndef __ID3D11ShaderReflection_INTERFACE_DEFINED__
#define __ID3D11ShaderReflection_INTERFACE_DEFINED__

#if defined(__cplusplus) && !defined(CINTERFACE)
interface ID3D11ShaderReflection : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_SHADER_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionConstantBuffer * STDMETHODCALLTYPE GetConstantBufferByIndex(
        UINT index) = 0;

    virtual ID3D11ShaderReflectionConstantBuffer * STDMETHODCALLTYPE GetConstantBufferByName(
        const char *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResourceBindingDesc(
        UINT index,
        D3D11_SHADER_INPUT_BIND_DESC *desc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInputParameterDesc(
        UINT index,
        D3D11_SIGNATURE_PARAMETER_DESC *desc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOutputParameterDesc(
        UINT index,
        D3D11_SIGNATURE_PARAMETER_DESC *desc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPatchConstantParameterDesc(
        UINT index,
        D3D11_SIGNATURE_PARAMETER_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionVariable * STDMETHODCALLTYPE GetVariableByName(
        const char *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResourceBindingDescByName(
        const char *name,
        D3D11_SHADER_INPUT_BIND_DESC *desc) = 0;

    virtual UINT STDMETHODCALLTYPE GetMovInstructionCount(
        ) = 0;

    virtual UINT STDMETHODCALLTYPE GetMovcInstructionCount(
        ) = 0;

    virtual UINT STDMETHODCALLTYPE GetConversionInstructionCount(
        ) = 0;

    virtual UINT STDMETHODCALLTYPE GetBitwiseInstructionCount(
        ) = 0;

    virtual D3D_PRIMITIVE STDMETHODCALLTYPE GetGSInputPrimitive(
        ) = 0;

    virtual BOOL STDMETHODCALLTYPE IsSampleFrequencyShader(
        ) = 0;

    virtual UINT STDMETHODCALLTYPE GetNumInterfaceSlots(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMinFeatureLevel(
        D3D_FEATURE_LEVEL *level) = 0;

    virtual UINT STDMETHODCALLTYPE GetThreadGroupSize(
        UINT *size_x,
        UINT *size_y,
        UINT *size_z) = 0;

    virtual UINT64 STDMETHODCALLTYPE GetRequiresFlags(
        ) = 0;

};
#else
typedef struct ID3D11ShaderReflectionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11ShaderReflection *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11ShaderReflection *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11ShaderReflection *This);

    /*** ID3D11ShaderReflection methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11ShaderReflection *This,
        D3D11_SHADER_DESC *desc);

    ID3D11ShaderReflectionConstantBuffer * (STDMETHODCALLTYPE *GetConstantBufferByIndex)(
        ID3D11ShaderReflection *This,
        UINT index);

    ID3D11ShaderReflectionConstantBuffer * (STDMETHODCALLTYPE *GetConstantBufferByName)(
        ID3D11ShaderReflection *This,
        const char *name);

    HRESULT (STDMETHODCALLTYPE *GetResourceBindingDesc)(
        ID3D11ShaderReflection *This,
        UINT index,
        D3D11_SHADER_INPUT_BIND_DESC *desc);

    HRESULT (STDMETHODCALLTYPE *GetInputParameterDesc)(
        ID3D11ShaderReflection *This,
        UINT index,
        D3D11_SIGNATURE_PARAMETER_DESC *desc);

    HRESULT (STDMETHODCALLTYPE *GetOutputParameterDesc)(
        ID3D11ShaderReflection *This,
        UINT index,
        D3D11_SIGNATURE_PARAMETER_DESC *desc);

    HRESULT (STDMETHODCALLTYPE *GetPatchConstantParameterDesc)(
        ID3D11ShaderReflection *This,
        UINT index,
        D3D11_SIGNATURE_PARAMETER_DESC *desc);

    ID3D11ShaderReflectionVariable * (STDMETHODCALLTYPE *GetVariableByName)(
        ID3D11ShaderReflection *This,
        const char *name);

    HRESULT (STDMETHODCALLTYPE *GetResourceBindingDescByName)(
        ID3D11ShaderReflection *This,
        const char *name,
        D3D11_SHADER_INPUT_BIND_DESC *desc);

    UINT (STDMETHODCALLTYPE *GetMovInstructionCount)(
        ID3D11ShaderReflection *This);

    UINT (STDMETHODCALLTYPE *GetMovcInstructionCount)(
        ID3D11ShaderReflection *This);

    UINT (STDMETHODCALLTYPE *GetConversionInstructionCount)(
        ID3D11ShaderReflection *This);

    UINT (STDMETHODCALLTYPE *GetBitwiseInstructionCount)(
        ID3D11ShaderReflection *This);

    D3D_PRIMITIVE (STDMETHODCALLTYPE *GetGSInputPrimitive)(
        ID3D11ShaderReflection *This);

    BOOL (STDMETHODCALLTYPE *IsSampleFrequencyShader)(
        ID3D11ShaderReflection *This);

    UINT (STDMETHODCALLTYPE *GetNumInterfaceSlots)(
        ID3D11ShaderReflection *This);

    HRESULT (STDMETHODCALLTYPE *GetMinFeatureLevel)(
        ID3D11ShaderReflection *This,
        D3D_FEATURE_LEVEL *level);

    UINT (STDMETHODCALLTYPE *GetThreadGroupSize)(
        ID3D11ShaderReflection *This,
        UINT *size_x,
        UINT *size_y,
        UINT *size_z);

    UINT64 (STDMETHODCALLTYPE *GetRequiresFlags)(
        ID3D11ShaderReflection *This);

    END_INTERFACE
} ID3D11ShaderReflectionVtbl;

interface ID3D11ShaderReflection {
    CONST_VTBL ID3D11ShaderReflectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11ShaderReflection_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11ShaderReflection_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11ShaderReflection_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D11ShaderReflection methods ***/
#define ID3D11ShaderReflection_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#define ID3D11ShaderReflection_GetConstantBufferByIndex(This,index) (This)->lpVtbl->GetConstantBufferByIndex(This,index)
#define ID3D11ShaderReflection_GetConstantBufferByName(This,name) (This)->lpVtbl->GetConstantBufferByName(This,name)
#define ID3D11ShaderReflection_GetResourceBindingDesc(This,index,desc) (This)->lpVtbl->GetResourceBindingDesc(This,index,desc)
#define ID3D11ShaderReflection_GetInputParameterDesc(This,index,desc) (This)->lpVtbl->GetInputParameterDesc(This,index,desc)
#define ID3D11ShaderReflection_GetOutputParameterDesc(This,index,desc) (This)->lpVtbl->GetOutputParameterDesc(This,index,desc)
#define ID3D11ShaderReflection_GetPatchConstantParameterDesc(This,index,desc) (This)->lpVtbl->GetPatchConstantParameterDesc(This,index,desc)
#define ID3D11ShaderReflection_GetVariableByName(This,name) (This)->lpVtbl->GetVariableByName(This,name)
#define ID3D11ShaderReflection_GetResourceBindingDescByName(This,name,desc) (This)->lpVtbl->GetResourceBindingDescByName(This,name,desc)
#define ID3D11ShaderReflection_GetMovInstructionCount(This) (This)->lpVtbl->GetMovInstructionCount(This)
#define ID3D11ShaderReflection_GetMovcInstructionCount(This) (This)->lpVtbl->GetMovcInstructionCount(This)
#define ID3D11ShaderReflection_GetConversionInstructionCount(This) (This)->lpVtbl->GetConversionInstructionCount(This)
#define ID3D11ShaderReflection_GetBitwiseInstructionCount(This) (This)->lpVtbl->GetBitwiseInstructionCount(This)
#define ID3D11ShaderReflection_GetGSInputPrimitive(This) (This)->lpVtbl->GetGSInputPrimitive(This)
#define ID3D11ShaderReflection_IsSampleFrequencyShader(This) (This)->lpVtbl->IsSampleFrequencyShader(This)
#define ID3D11ShaderReflection_GetNumInterfaceSlots(This) (This)->lpVtbl->GetNumInterfaceSlots(This)
#define ID3D11ShaderReflection_GetMinFeatureLevel(This,level) (This)->lpVtbl->GetMinFeatureLevel(This,level)
#define ID3D11ShaderReflection_GetThreadGroupSize(This,size_x,size_y,size_z) (This)->lpVtbl->GetThreadGroupSize(This,size_x,size_y,size_z)
#define ID3D11ShaderReflection_GetRequiresFlags(This) (This)->lpVtbl->GetRequiresFlags(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11ShaderReflection_QueryInterface(ID3D11ShaderReflection* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11ShaderReflection_AddRef(ID3D11ShaderReflection* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11ShaderReflection_Release(ID3D11ShaderReflection* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D11ShaderReflection methods ***/
static inline HRESULT ID3D11ShaderReflection_GetDesc(ID3D11ShaderReflection* This,D3D11_SHADER_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
static inline ID3D11ShaderReflectionConstantBuffer * ID3D11ShaderReflection_GetConstantBufferByIndex(ID3D11ShaderReflection* This,UINT index) {
    return This->lpVtbl->GetConstantBufferByIndex(This,index);
}
static inline ID3D11ShaderReflectionConstantBuffer * ID3D11ShaderReflection_GetConstantBufferByName(ID3D11ShaderReflection* This,const char *name) {
    return This->lpVtbl->GetConstantBufferByName(This,name);
}
static inline HRESULT ID3D11ShaderReflection_GetResourceBindingDesc(ID3D11ShaderReflection* This,UINT index,D3D11_SHADER_INPUT_BIND_DESC *desc) {
    return This->lpVtbl->GetResourceBindingDesc(This,index,desc);
}
static inline HRESULT ID3D11ShaderReflection_GetInputParameterDesc(ID3D11ShaderReflection* This,UINT index,D3D11_SIGNATURE_PARAMETER_DESC *desc) {
    return This->lpVtbl->GetInputParameterDesc(This,index,desc);
}
static inline HRESULT ID3D11ShaderReflection_GetOutputParameterDesc(ID3D11ShaderReflection* This,UINT index,D3D11_SIGNATURE_PARAMETER_DESC *desc) {
    return This->lpVtbl->GetOutputParameterDesc(This,index,desc);
}
static inline HRESULT ID3D11ShaderReflection_GetPatchConstantParameterDesc(ID3D11ShaderReflection* This,UINT index,D3D11_SIGNATURE_PARAMETER_DESC *desc) {
    return This->lpVtbl->GetPatchConstantParameterDesc(This,index,desc);
}
static inline ID3D11ShaderReflectionVariable * ID3D11ShaderReflection_GetVariableByName(ID3D11ShaderReflection* This,const char *name) {
    return This->lpVtbl->GetVariableByName(This,name);
}
static inline HRESULT ID3D11ShaderReflection_GetResourceBindingDescByName(ID3D11ShaderReflection* This,const char *name,D3D11_SHADER_INPUT_BIND_DESC *desc) {
    return This->lpVtbl->GetResourceBindingDescByName(This,name,desc);
}
static inline UINT ID3D11ShaderReflection_GetMovInstructionCount(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetMovInstructionCount(This);
}
static inline UINT ID3D11ShaderReflection_GetMovcInstructionCount(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetMovcInstructionCount(This);
}
static inline UINT ID3D11ShaderReflection_GetConversionInstructionCount(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetConversionInstructionCount(This);
}
static inline UINT ID3D11ShaderReflection_GetBitwiseInstructionCount(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetBitwiseInstructionCount(This);
}
static inline D3D_PRIMITIVE ID3D11ShaderReflection_GetGSInputPrimitive(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetGSInputPrimitive(This);
}
static inline BOOL ID3D11ShaderReflection_IsSampleFrequencyShader(ID3D11ShaderReflection* This) {
    return This->lpVtbl->IsSampleFrequencyShader(This);
}
static inline UINT ID3D11ShaderReflection_GetNumInterfaceSlots(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetNumInterfaceSlots(This);
}
static inline HRESULT ID3D11ShaderReflection_GetMinFeatureLevel(ID3D11ShaderReflection* This,D3D_FEATURE_LEVEL *level) {
    return This->lpVtbl->GetMinFeatureLevel(This,level);
}
static inline UINT ID3D11ShaderReflection_GetThreadGroupSize(ID3D11ShaderReflection* This,UINT *size_x,UINT *size_y,UINT *size_z) {
    return This->lpVtbl->GetThreadGroupSize(This,size_x,size_y,size_z);
}
static inline UINT64 ID3D11ShaderReflection_GetRequiresFlags(ID3D11ShaderReflection* This) {
    return This->lpVtbl->GetRequiresFlags(This);
}
#endif
#endif

#endif


#endif  /* __ID3D11ShaderReflection_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11FunctionParameterReflection interface
 */
#ifndef __ID3D11FunctionParameterReflection_INTERFACE_DEFINED__
#define __ID3D11FunctionParameterReflection_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11FunctionParameterReflection, 0x42757488, 0x334f, 0x47fe, 0x98,0x2e, 0x1a,0x65,0xd0,0x8c,0xc4,0x62);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("42757488-334f-47fe-982e-1a65d08cc462")
ID3D11FunctionParameterReflection
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_PARAMETER_DESC *desc) = 0;

    END_INTERFACE

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11FunctionParameterReflection, 0x42757488, 0x334f, 0x47fe, 0x98,0x2e, 0x1a,0x65,0xd0,0x8c,0xc4,0x62)
#endif
#else
typedef struct ID3D11FunctionParameterReflectionVtbl {
    BEGIN_INTERFACE

    /*** ID3D11FunctionParameterReflection methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11FunctionParameterReflection *This,
        D3D11_PARAMETER_DESC *desc);

    END_INTERFACE
} ID3D11FunctionParameterReflectionVtbl;

interface ID3D11FunctionParameterReflection {
    CONST_VTBL ID3D11FunctionParameterReflectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3D11FunctionParameterReflection methods ***/
#define ID3D11FunctionParameterReflection_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#else
/*** ID3D11FunctionParameterReflection methods ***/
static inline HRESULT ID3D11FunctionParameterReflection_GetDesc(ID3D11FunctionParameterReflection* This,D3D11_PARAMETER_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
#endif
#endif

#endif


#endif  /* __ID3D11FunctionParameterReflection_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11FunctionReflection interface
 */
#ifndef __ID3D11FunctionReflection_INTERFACE_DEFINED__
#define __ID3D11FunctionReflection_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11FunctionReflection, 0x207bcecb, 0xd683, 0x4a06, 0xa8,0xa3, 0x9b,0x14,0x9b,0x9f,0x73,0xa4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("207bcecb-d683-4a06-a8a3-9b149b9f73a4")
ID3D11FunctionReflection
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_FUNCTION_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionConstantBuffer * STDMETHODCALLTYPE GetConstantBufferByIndex(
        UINT index) = 0;

    virtual ID3D11ShaderReflectionConstantBuffer * STDMETHODCALLTYPE GetConstantBufferByName(
        const char *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResourceBindingDesc(
        UINT index,
        D3D11_SHADER_INPUT_BIND_DESC *desc) = 0;

    virtual ID3D11ShaderReflectionVariable * STDMETHODCALLTYPE GetVariableByName(
        const char *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResourceBindingDescByName(
        const char *name,
        D3D11_SHADER_INPUT_BIND_DESC *desc) = 0;

    virtual ID3D11FunctionParameterReflection * STDMETHODCALLTYPE GetFunctionParameter(
        INT index) = 0;

    END_INTERFACE

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11FunctionReflection, 0x207bcecb, 0xd683, 0x4a06, 0xa8,0xa3, 0x9b,0x14,0x9b,0x9f,0x73,0xa4)
#endif
#else
typedef struct ID3D11FunctionReflectionVtbl {
    BEGIN_INTERFACE

    /*** ID3D11FunctionReflection methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11FunctionReflection *This,
        D3D11_FUNCTION_DESC *desc);

    ID3D11ShaderReflectionConstantBuffer * (STDMETHODCALLTYPE *GetConstantBufferByIndex)(
        ID3D11FunctionReflection *This,
        UINT index);

    ID3D11ShaderReflectionConstantBuffer * (STDMETHODCALLTYPE *GetConstantBufferByName)(
        ID3D11FunctionReflection *This,
        const char *name);

    HRESULT (STDMETHODCALLTYPE *GetResourceBindingDesc)(
        ID3D11FunctionReflection *This,
        UINT index,
        D3D11_SHADER_INPUT_BIND_DESC *desc);

    ID3D11ShaderReflectionVariable * (STDMETHODCALLTYPE *GetVariableByName)(
        ID3D11FunctionReflection *This,
        const char *name);

    HRESULT (STDMETHODCALLTYPE *GetResourceBindingDescByName)(
        ID3D11FunctionReflection *This,
        const char *name,
        D3D11_SHADER_INPUT_BIND_DESC *desc);

    ID3D11FunctionParameterReflection * (STDMETHODCALLTYPE *GetFunctionParameter)(
        ID3D11FunctionReflection *This,
        INT index);

    END_INTERFACE
} ID3D11FunctionReflectionVtbl;

interface ID3D11FunctionReflection {
    CONST_VTBL ID3D11FunctionReflectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3D11FunctionReflection methods ***/
#define ID3D11FunctionReflection_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#define ID3D11FunctionReflection_GetConstantBufferByIndex(This,index) (This)->lpVtbl->GetConstantBufferByIndex(This,index)
#define ID3D11FunctionReflection_GetConstantBufferByName(This,name) (This)->lpVtbl->GetConstantBufferByName(This,name)
#define ID3D11FunctionReflection_GetResourceBindingDesc(This,index,desc) (This)->lpVtbl->GetResourceBindingDesc(This,index,desc)
#define ID3D11FunctionReflection_GetVariableByName(This,name) (This)->lpVtbl->GetVariableByName(This,name)
#define ID3D11FunctionReflection_GetResourceBindingDescByName(This,name,desc) (This)->lpVtbl->GetResourceBindingDescByName(This,name,desc)
#define ID3D11FunctionReflection_GetFunctionParameter(This,index) (This)->lpVtbl->GetFunctionParameter(This,index)
#else
/*** ID3D11FunctionReflection methods ***/
static inline HRESULT ID3D11FunctionReflection_GetDesc(ID3D11FunctionReflection* This,D3D11_FUNCTION_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
static inline ID3D11ShaderReflectionConstantBuffer * ID3D11FunctionReflection_GetConstantBufferByIndex(ID3D11FunctionReflection* This,UINT index) {
    return This->lpVtbl->GetConstantBufferByIndex(This,index);
}
static inline ID3D11ShaderReflectionConstantBuffer * ID3D11FunctionReflection_GetConstantBufferByName(ID3D11FunctionReflection* This,const char *name) {
    return This->lpVtbl->GetConstantBufferByName(This,name);
}
static inline HRESULT ID3D11FunctionReflection_GetResourceBindingDesc(ID3D11FunctionReflection* This,UINT index,D3D11_SHADER_INPUT_BIND_DESC *desc) {
    return This->lpVtbl->GetResourceBindingDesc(This,index,desc);
}
static inline ID3D11ShaderReflectionVariable * ID3D11FunctionReflection_GetVariableByName(ID3D11FunctionReflection* This,const char *name) {
    return This->lpVtbl->GetVariableByName(This,name);
}
static inline HRESULT ID3D11FunctionReflection_GetResourceBindingDescByName(ID3D11FunctionReflection* This,const char *name,D3D11_SHADER_INPUT_BIND_DESC *desc) {
    return This->lpVtbl->GetResourceBindingDescByName(This,name,desc);
}
static inline ID3D11FunctionParameterReflection * ID3D11FunctionReflection_GetFunctionParameter(ID3D11FunctionReflection* This,INT index) {
    return This->lpVtbl->GetFunctionParameter(This,index);
}
#endif
#endif

#endif


#endif  /* __ID3D11FunctionReflection_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11LibraryReflection interface
 */
#ifndef __ID3D11LibraryReflection_INTERFACE_DEFINED__
#define __ID3D11LibraryReflection_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11LibraryReflection, 0x54384f1b, 0x5b3e, 0x4bb7, 0xae,0x01, 0x60,0xba,0x30,0x97,0xcb,0xb6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("54384f1b-5b3e-4bb7-ae01-60ba3097cbb6")
ID3D11LibraryReflection : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDesc(
        D3D11_LIBRARY_DESC *desc) = 0;

    virtual ID3D11FunctionReflection * STDMETHODCALLTYPE GetFunctionByIndex(
        INT index) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11LibraryReflection, 0x54384f1b, 0x5b3e, 0x4bb7, 0xae,0x01, 0x60,0xba,0x30,0x97,0xcb,0xb6)
#endif
#else
typedef struct ID3D11LibraryReflectionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11LibraryReflection *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11LibraryReflection *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11LibraryReflection *This);

    /*** ID3D11LibraryReflection methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDesc)(
        ID3D11LibraryReflection *This,
        D3D11_LIBRARY_DESC *desc);

    ID3D11FunctionReflection * (STDMETHODCALLTYPE *GetFunctionByIndex)(
        ID3D11LibraryReflection *This,
        INT index);

    END_INTERFACE
} ID3D11LibraryReflectionVtbl;

interface ID3D11LibraryReflection {
    CONST_VTBL ID3D11LibraryReflectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11LibraryReflection_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11LibraryReflection_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11LibraryReflection_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D11LibraryReflection methods ***/
#define ID3D11LibraryReflection_GetDesc(This,desc) (This)->lpVtbl->GetDesc(This,desc)
#define ID3D11LibraryReflection_GetFunctionByIndex(This,index) (This)->lpVtbl->GetFunctionByIndex(This,index)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11LibraryReflection_QueryInterface(ID3D11LibraryReflection* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11LibraryReflection_AddRef(ID3D11LibraryReflection* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11LibraryReflection_Release(ID3D11LibraryReflection* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D11LibraryReflection methods ***/
static inline HRESULT ID3D11LibraryReflection_GetDesc(ID3D11LibraryReflection* This,D3D11_LIBRARY_DESC *desc) {
    return This->lpVtbl->GetDesc(This,desc);
}
static inline ID3D11FunctionReflection * ID3D11LibraryReflection_GetFunctionByIndex(ID3D11LibraryReflection* This,INT index) {
    return This->lpVtbl->GetFunctionByIndex(This,index);
}
#endif
#endif

#endif


#endif  /* __ID3D11LibraryReflection_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11ModuleInstance interface
 */
#ifndef __ID3D11ModuleInstance_INTERFACE_DEFINED__
#define __ID3D11ModuleInstance_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11ModuleInstance, 0x469e07f7, 0x045a, 0x48d5, 0xaa,0x12, 0x68,0xa4,0x78,0xcd,0xf7,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("469e07f7-045a-48d5-aa12-68a478cdf75d")
ID3D11ModuleInstance : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE BindConstantBuffer(
        UINT src_slot,
        UINT dst_slot,
        UINT dst_offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindConstantBufferByName(
        const char *name,
        UINT dst_slot,
        UINT dst_offset) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindResource(
        UINT src_slot,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindResourceByName(
        const char *name,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindSampler(
        UINT src_slot,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindSamplerByName(
        const char *name,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindUnorderedAccessView(
        UINT src_slot,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindUnorderedAccessViewByName(
        const char *name,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindResourceAsUnorderedAccessView(
        UINT src_slot,
        UINT dst_slot,
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindResourceAsUnorderedAccessViewByName(
        const char *name,
        UINT dst_slot,
        UINT count) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11ModuleInstance, 0x469e07f7, 0x045a, 0x48d5, 0xaa,0x12, 0x68,0xa4,0x78,0xcd,0xf7,0x5d)
#endif
#else
typedef struct ID3D11ModuleInstanceVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11ModuleInstance *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11ModuleInstance *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11ModuleInstance *This);

    /*** ID3D11ModuleInstance methods ***/
    HRESULT (STDMETHODCALLTYPE *BindConstantBuffer)(
        ID3D11ModuleInstance *This,
        UINT src_slot,
        UINT dst_slot,
        UINT dst_offset);

    HRESULT (STDMETHODCALLTYPE *BindConstantBufferByName)(
        ID3D11ModuleInstance *This,
        const char *name,
        UINT dst_slot,
        UINT dst_offset);

    HRESULT (STDMETHODCALLTYPE *BindResource)(
        ID3D11ModuleInstance *This,
        UINT src_slot,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindResourceByName)(
        ID3D11ModuleInstance *This,
        const char *name,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindSampler)(
        ID3D11ModuleInstance *This,
        UINT src_slot,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindSamplerByName)(
        ID3D11ModuleInstance *This,
        const char *name,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindUnorderedAccessView)(
        ID3D11ModuleInstance *This,
        UINT src_slot,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindUnorderedAccessViewByName)(
        ID3D11ModuleInstance *This,
        const char *name,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindResourceAsUnorderedAccessView)(
        ID3D11ModuleInstance *This,
        UINT src_slot,
        UINT dst_slot,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *BindResourceAsUnorderedAccessViewByName)(
        ID3D11ModuleInstance *This,
        const char *name,
        UINT dst_slot,
        UINT count);

    END_INTERFACE
} ID3D11ModuleInstanceVtbl;

interface ID3D11ModuleInstance {
    CONST_VTBL ID3D11ModuleInstanceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11ModuleInstance_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11ModuleInstance_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11ModuleInstance_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D11ModuleInstance methods ***/
#define ID3D11ModuleInstance_BindConstantBuffer(This,src_slot,dst_slot,dst_offset) (This)->lpVtbl->BindConstantBuffer(This,src_slot,dst_slot,dst_offset)
#define ID3D11ModuleInstance_BindConstantBufferByName(This,name,dst_slot,dst_offset) (This)->lpVtbl->BindConstantBufferByName(This,name,dst_slot,dst_offset)
#define ID3D11ModuleInstance_BindResource(This,src_slot,dst_slot,count) (This)->lpVtbl->BindResource(This,src_slot,dst_slot,count)
#define ID3D11ModuleInstance_BindResourceByName(This,name,dst_slot,count) (This)->lpVtbl->BindResourceByName(This,name,dst_slot,count)
#define ID3D11ModuleInstance_BindSampler(This,src_slot,dst_slot,count) (This)->lpVtbl->BindSampler(This,src_slot,dst_slot,count)
#define ID3D11ModuleInstance_BindSamplerByName(This,name,dst_slot,count) (This)->lpVtbl->BindSamplerByName(This,name,dst_slot,count)
#define ID3D11ModuleInstance_BindUnorderedAccessView(This,src_slot,dst_slot,count) (This)->lpVtbl->BindUnorderedAccessView(This,src_slot,dst_slot,count)
#define ID3D11ModuleInstance_BindUnorderedAccessViewByName(This,name,dst_slot,count) (This)->lpVtbl->BindUnorderedAccessViewByName(This,name,dst_slot,count)
#define ID3D11ModuleInstance_BindResourceAsUnorderedAccessView(This,src_slot,dst_slot,count) (This)->lpVtbl->BindResourceAsUnorderedAccessView(This,src_slot,dst_slot,count)
#define ID3D11ModuleInstance_BindResourceAsUnorderedAccessViewByName(This,name,dst_slot,count) (This)->lpVtbl->BindResourceAsUnorderedAccessViewByName(This,name,dst_slot,count)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11ModuleInstance_QueryInterface(ID3D11ModuleInstance* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11ModuleInstance_AddRef(ID3D11ModuleInstance* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11ModuleInstance_Release(ID3D11ModuleInstance* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D11ModuleInstance methods ***/
static inline HRESULT ID3D11ModuleInstance_BindConstantBuffer(ID3D11ModuleInstance* This,UINT src_slot,UINT dst_slot,UINT dst_offset) {
    return This->lpVtbl->BindConstantBuffer(This,src_slot,dst_slot,dst_offset);
}
static inline HRESULT ID3D11ModuleInstance_BindConstantBufferByName(ID3D11ModuleInstance* This,const char *name,UINT dst_slot,UINT dst_offset) {
    return This->lpVtbl->BindConstantBufferByName(This,name,dst_slot,dst_offset);
}
static inline HRESULT ID3D11ModuleInstance_BindResource(ID3D11ModuleInstance* This,UINT src_slot,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindResource(This,src_slot,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindResourceByName(ID3D11ModuleInstance* This,const char *name,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindResourceByName(This,name,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindSampler(ID3D11ModuleInstance* This,UINT src_slot,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindSampler(This,src_slot,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindSamplerByName(ID3D11ModuleInstance* This,const char *name,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindSamplerByName(This,name,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindUnorderedAccessView(ID3D11ModuleInstance* This,UINT src_slot,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindUnorderedAccessView(This,src_slot,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindUnorderedAccessViewByName(ID3D11ModuleInstance* This,const char *name,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindUnorderedAccessViewByName(This,name,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindResourceAsUnorderedAccessView(ID3D11ModuleInstance* This,UINT src_slot,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindResourceAsUnorderedAccessView(This,src_slot,dst_slot,count);
}
static inline HRESULT ID3D11ModuleInstance_BindResourceAsUnorderedAccessViewByName(ID3D11ModuleInstance* This,const char *name,UINT dst_slot,UINT count) {
    return This->lpVtbl->BindResourceAsUnorderedAccessViewByName(This,name,dst_slot,count);
}
#endif
#endif

#endif


#endif  /* __ID3D11ModuleInstance_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11Module interface
 */
#ifndef __ID3D11Module_INTERFACE_DEFINED__
#define __ID3D11Module_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11Module, 0xcac701ee, 0x80fc, 0x4122, 0x82,0x42, 0x10,0xb3,0x9c,0x8c,0xec,0x34);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cac701ee-80fc-4122-8242-10b39c8cec34")
ID3D11Module : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateInstance(
        const char *instance_namespace,
        ID3D11ModuleInstance **instance) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11Module, 0xcac701ee, 0x80fc, 0x4122, 0x82,0x42, 0x10,0xb3,0x9c,0x8c,0xec,0x34)
#endif
#else
typedef struct ID3D11ModuleVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11Module *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11Module *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11Module *This);

    /*** ID3D11Module methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateInstance)(
        ID3D11Module *This,
        const char *instance_namespace,
        ID3D11ModuleInstance **instance);

    END_INTERFACE
} ID3D11ModuleVtbl;

interface ID3D11Module {
    CONST_VTBL ID3D11ModuleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11Module_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11Module_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11Module_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D11Module methods ***/
#define ID3D11Module_CreateInstance(This,instance_namespace,instance) (This)->lpVtbl->CreateInstance(This,instance_namespace,instance)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11Module_QueryInterface(ID3D11Module* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11Module_AddRef(ID3D11Module* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11Module_Release(ID3D11Module* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D11Module methods ***/
static inline HRESULT ID3D11Module_CreateInstance(ID3D11Module* This,const char *instance_namespace,ID3D11ModuleInstance **instance) {
    return This->lpVtbl->CreateInstance(This,instance_namespace,instance);
}
#endif
#endif

#endif


#endif  /* __ID3D11Module_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11Linker interface
 */
#ifndef __ID3D11Linker_INTERFACE_DEFINED__
#define __ID3D11Linker_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11Linker, 0x59a6cd0e, 0xe10d, 0x4c1f, 0x88,0xc0, 0x63,0xab,0xa1,0xda,0xf3,0x0e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("59a6cd0e-e10d-4c1f-88c0-63aba1daf30e")
ID3D11Linker : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Link(
        ID3D11ModuleInstance *instance,
        const char *instance_name,
        const char *target_name,
        UINT flags,
        ID3DBlob **shader,
        ID3DBlob **messages) = 0;

    virtual HRESULT STDMETHODCALLTYPE UseLibrary(
        ID3D11ModuleInstance *instance) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddClipPlaneFromCBuffer(
        UINT slot,
        UINT entry) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11Linker, 0x59a6cd0e, 0xe10d, 0x4c1f, 0x88,0xc0, 0x63,0xab,0xa1,0xda,0xf3,0x0e)
#endif
#else
typedef struct ID3D11LinkerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11Linker *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11Linker *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11Linker *This);

    /*** ID3D11Linker methods ***/
    HRESULT (STDMETHODCALLTYPE *Link)(
        ID3D11Linker *This,
        ID3D11ModuleInstance *instance,
        const char *instance_name,
        const char *target_name,
        UINT flags,
        ID3DBlob **shader,
        ID3DBlob **messages);

    HRESULT (STDMETHODCALLTYPE *UseLibrary)(
        ID3D11Linker *This,
        ID3D11ModuleInstance *instance);

    HRESULT (STDMETHODCALLTYPE *AddClipPlaneFromCBuffer)(
        ID3D11Linker *This,
        UINT slot,
        UINT entry);

    END_INTERFACE
} ID3D11LinkerVtbl;

interface ID3D11Linker {
    CONST_VTBL ID3D11LinkerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11Linker_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11Linker_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11Linker_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D11Linker methods ***/
#define ID3D11Linker_Link(This,instance,instance_name,target_name,flags,shader,messages) (This)->lpVtbl->Link(This,instance,instance_name,target_name,flags,shader,messages)
#define ID3D11Linker_UseLibrary(This,instance) (This)->lpVtbl->UseLibrary(This,instance)
#define ID3D11Linker_AddClipPlaneFromCBuffer(This,slot,entry) (This)->lpVtbl->AddClipPlaneFromCBuffer(This,slot,entry)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11Linker_QueryInterface(ID3D11Linker* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11Linker_AddRef(ID3D11Linker* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11Linker_Release(ID3D11Linker* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D11Linker methods ***/
static inline HRESULT ID3D11Linker_Link(ID3D11Linker* This,ID3D11ModuleInstance *instance,const char *instance_name,const char *target_name,UINT flags,ID3DBlob **shader,ID3DBlob **messages) {
    return This->lpVtbl->Link(This,instance,instance_name,target_name,flags,shader,messages);
}
static inline HRESULT ID3D11Linker_UseLibrary(ID3D11Linker* This,ID3D11ModuleInstance *instance) {
    return This->lpVtbl->UseLibrary(This,instance);
}
static inline HRESULT ID3D11Linker_AddClipPlaneFromCBuffer(ID3D11Linker* This,UINT slot,UINT entry) {
    return This->lpVtbl->AddClipPlaneFromCBuffer(This,slot,entry);
}
#endif
#endif

#endif


#endif  /* __ID3D11Linker_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11LinkingNode interface
 */
#ifndef __ID3D11LinkingNode_INTERFACE_DEFINED__
#define __ID3D11LinkingNode_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11LinkingNode, 0xd80dd70c, 0x8d2f, 0x4751, 0x94,0xa1, 0x03,0xc7,0x9b,0x35,0x56,0xdb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d80dd70c-8d2f-4751-94a1-03c79b3556db")
ID3D11LinkingNode : public IUnknown
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11LinkingNode, 0xd80dd70c, 0x8d2f, 0x4751, 0x94,0xa1, 0x03,0xc7,0x9b,0x35,0x56,0xdb)
#endif
#else
typedef struct ID3D11LinkingNodeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11LinkingNode *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11LinkingNode *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11LinkingNode *This);

    END_INTERFACE
} ID3D11LinkingNodeVtbl;

interface ID3D11LinkingNode {
    CONST_VTBL ID3D11LinkingNodeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11LinkingNode_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11LinkingNode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11LinkingNode_Release(This) (This)->lpVtbl->Release(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11LinkingNode_QueryInterface(ID3D11LinkingNode* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11LinkingNode_AddRef(ID3D11LinkingNode* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11LinkingNode_Release(ID3D11LinkingNode* This) {
    return This->lpVtbl->Release(This);
}
#endif
#endif

#endif


#endif  /* __ID3D11LinkingNode_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3D11FunctionLinkingGraph interface
 */
#ifndef __ID3D11FunctionLinkingGraph_INTERFACE_DEFINED__
#define __ID3D11FunctionLinkingGraph_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3D11FunctionLinkingGraph, 0x54133220, 0x1ce8, 0x43d3, 0x82,0x36, 0x98,0x55,0xc5,0xce,0xec,0xff);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("54133220-1ce8-43d3-8236-9855c5ceecff")
ID3D11FunctionLinkingGraph : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateModuleInstance(
        ID3D11ModuleInstance **instance,
        ID3DBlob **messages) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInputSignature(
        const D3D11_PARAMETER_DESC *parameter_desc,
        UINT parameter_count,
        ID3D11LinkingNode **input_node) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOutputSignature(
        const D3D11_PARAMETER_DESC *parameter_desc,
        UINT parameter_count,
        ID3D11LinkingNode **output_node) = 0;

    virtual HRESULT STDMETHODCALLTYPE CallFunction(
        const char *instance_namespace,
        ID3D11Module *function_module,
        const char *function_name,
        ID3D11LinkingNode **call_node) = 0;

    virtual HRESULT STDMETHODCALLTYPE PassValue(
        ID3D11LinkingNode *src_node,
        INT src_parameter_index,
        ID3D11LinkingNode *dst_node,
        INT dst_parameter_index) = 0;

    virtual HRESULT STDMETHODCALLTYPE PassValueWithSwizzle(
        ID3D11LinkingNode *src_node,
        INT src_parameter_index,
        const char *src_swizzle,
        ID3D11LinkingNode *dst_node,
        INT dst_parameter_index,
        const char *dst_swizzle) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLastError(
        ID3DBlob **error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GenerateHlsl(
        UINT flags,
        ID3DBlob **hlsl) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3D11FunctionLinkingGraph, 0x54133220, 0x1ce8, 0x43d3, 0x82,0x36, 0x98,0x55,0xc5,0xce,0xec,0xff)
#endif
#else
typedef struct ID3D11FunctionLinkingGraphVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3D11FunctionLinkingGraph *This,
        REFIID riid,
        void **object);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ID3D11FunctionLinkingGraph *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ID3D11FunctionLinkingGraph *This);

    /*** ID3D11FunctionLinkingGraph methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateModuleInstance)(
        ID3D11FunctionLinkingGraph *This,
        ID3D11ModuleInstance **instance,
        ID3DBlob **messages);

    HRESULT (STDMETHODCALLTYPE *SetInputSignature)(
        ID3D11FunctionLinkingGraph *This,
        const D3D11_PARAMETER_DESC *parameter_desc,
        UINT parameter_count,
        ID3D11LinkingNode **input_node);

    HRESULT (STDMETHODCALLTYPE *SetOutputSignature)(
        ID3D11FunctionLinkingGraph *This,
        const D3D11_PARAMETER_DESC *parameter_desc,
        UINT parameter_count,
        ID3D11LinkingNode **output_node);

    HRESULT (STDMETHODCALLTYPE *CallFunction)(
        ID3D11FunctionLinkingGraph *This,
        const char *instance_namespace,
        ID3D11Module *function_module,
        const char *function_name,
        ID3D11LinkingNode **call_node);

    HRESULT (STDMETHODCALLTYPE *PassValue)(
        ID3D11FunctionLinkingGraph *This,
        ID3D11LinkingNode *src_node,
        INT src_parameter_index,
        ID3D11LinkingNode *dst_node,
        INT dst_parameter_index);

    HRESULT (STDMETHODCALLTYPE *PassValueWithSwizzle)(
        ID3D11FunctionLinkingGraph *This,
        ID3D11LinkingNode *src_node,
        INT src_parameter_index,
        const char *src_swizzle,
        ID3D11LinkingNode *dst_node,
        INT dst_parameter_index,
        const char *dst_swizzle);

    HRESULT (STDMETHODCALLTYPE *GetLastError)(
        ID3D11FunctionLinkingGraph *This,
        ID3DBlob **error);

    HRESULT (STDMETHODCALLTYPE *GenerateHlsl)(
        ID3D11FunctionLinkingGraph *This,
        UINT flags,
        ID3DBlob **hlsl);

    END_INTERFACE
} ID3D11FunctionLinkingGraphVtbl;

interface ID3D11FunctionLinkingGraph {
    CONST_VTBL ID3D11FunctionLinkingGraphVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3D11FunctionLinkingGraph_QueryInterface(This,riid,object) (This)->lpVtbl->QueryInterface(This,riid,object)
#define ID3D11FunctionLinkingGraph_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3D11FunctionLinkingGraph_Release(This) (This)->lpVtbl->Release(This)
/*** ID3D11FunctionLinkingGraph methods ***/
#define ID3D11FunctionLinkingGraph_CreateModuleInstance(This,instance,messages) (This)->lpVtbl->CreateModuleInstance(This,instance,messages)
#define ID3D11FunctionLinkingGraph_SetInputSignature(This,parameter_desc,parameter_count,input_node) (This)->lpVtbl->SetInputSignature(This,parameter_desc,parameter_count,input_node)
#define ID3D11FunctionLinkingGraph_SetOutputSignature(This,parameter_desc,parameter_count,output_node) (This)->lpVtbl->SetOutputSignature(This,parameter_desc,parameter_count,output_node)
#define ID3D11FunctionLinkingGraph_CallFunction(This,instance_namespace,function_module,function_name,call_node) (This)->lpVtbl->CallFunction(This,instance_namespace,function_module,function_name,call_node)
#define ID3D11FunctionLinkingGraph_PassValue(This,src_node,src_parameter_index,dst_node,dst_parameter_index) (This)->lpVtbl->PassValue(This,src_node,src_parameter_index,dst_node,dst_parameter_index)
#define ID3D11FunctionLinkingGraph_PassValueWithSwizzle(This,src_node,src_parameter_index,src_swizzle,dst_node,dst_parameter_index,dst_swizzle) (This)->lpVtbl->PassValueWithSwizzle(This,src_node,src_parameter_index,src_swizzle,dst_node,dst_parameter_index,dst_swizzle)
#define ID3D11FunctionLinkingGraph_GetLastError(This,error) (This)->lpVtbl->GetLastError(This,error)
#define ID3D11FunctionLinkingGraph_GenerateHlsl(This,flags,hlsl) (This)->lpVtbl->GenerateHlsl(This,flags,hlsl)
#else
/*** IUnknown methods ***/
static inline HRESULT ID3D11FunctionLinkingGraph_QueryInterface(ID3D11FunctionLinkingGraph* This,REFIID riid,void **object) {
    return This->lpVtbl->QueryInterface(This,riid,object);
}
static inline ULONG ID3D11FunctionLinkingGraph_AddRef(ID3D11FunctionLinkingGraph* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ID3D11FunctionLinkingGraph_Release(ID3D11FunctionLinkingGraph* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3D11FunctionLinkingGraph methods ***/
static inline HRESULT ID3D11FunctionLinkingGraph_CreateModuleInstance(ID3D11FunctionLinkingGraph* This,ID3D11ModuleInstance **instance,ID3DBlob **messages) {
    return This->lpVtbl->CreateModuleInstance(This,instance,messages);
}
static inline HRESULT ID3D11FunctionLinkingGraph_SetInputSignature(ID3D11FunctionLinkingGraph* This,const D3D11_PARAMETER_DESC *parameter_desc,UINT parameter_count,ID3D11LinkingNode **input_node) {
    return This->lpVtbl->SetInputSignature(This,parameter_desc,parameter_count,input_node);
}
static inline HRESULT ID3D11FunctionLinkingGraph_SetOutputSignature(ID3D11FunctionLinkingGraph* This,const D3D11_PARAMETER_DESC *parameter_desc,UINT parameter_count,ID3D11LinkingNode **output_node) {
    return This->lpVtbl->SetOutputSignature(This,parameter_desc,parameter_count,output_node);
}
static inline HRESULT ID3D11FunctionLinkingGraph_CallFunction(ID3D11FunctionLinkingGraph* This,const char *instance_namespace,ID3D11Module *function_module,const char *function_name,ID3D11LinkingNode **call_node) {
    return This->lpVtbl->CallFunction(This,instance_namespace,function_module,function_name,call_node);
}
static inline HRESULT ID3D11FunctionLinkingGraph_PassValue(ID3D11FunctionLinkingGraph* This,ID3D11LinkingNode *src_node,INT src_parameter_index,ID3D11LinkingNode *dst_node,INT dst_parameter_index) {
    return This->lpVtbl->PassValue(This,src_node,src_parameter_index,dst_node,dst_parameter_index);
}
static inline HRESULT ID3D11FunctionLinkingGraph_PassValueWithSwizzle(ID3D11FunctionLinkingGraph* This,ID3D11LinkingNode *src_node,INT src_parameter_index,const char *src_swizzle,ID3D11LinkingNode *dst_node,INT dst_parameter_index,const char *dst_swizzle) {
    return This->lpVtbl->PassValueWithSwizzle(This,src_node,src_parameter_index,src_swizzle,dst_node,dst_parameter_index,dst_swizzle);
}
static inline HRESULT ID3D11FunctionLinkingGraph_GetLastError(ID3D11FunctionLinkingGraph* This,ID3DBlob **error) {
    return This->lpVtbl->GetLastError(This,error);
}
static inline HRESULT ID3D11FunctionLinkingGraph_GenerateHlsl(ID3D11FunctionLinkingGraph* This,UINT flags,ID3DBlob **hlsl) {
    return This->lpVtbl->GenerateHlsl(This,flags,hlsl);
}
#endif
#endif

#endif


#endif  /* __ID3D11FunctionLinkingGraph_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __vkd3d_d3d11shader_h__ */
