/*** Autogenerated by WIDL 5.0 from d3dx10core.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 __d3dx10core_h__
#define __d3dx10core_h__

/* Forward declarations */

#ifndef __ID3DX10DataLoader_FWD_DEFINED__
#define __ID3DX10DataLoader_FWD_DEFINED__
typedef interface ID3DX10DataLoader ID3DX10DataLoader;
#ifdef __cplusplus
interface ID3DX10DataLoader;
#endif /* __cplusplus */
#endif

#ifndef __ID3DX10DataProcessor_FWD_DEFINED__
#define __ID3DX10DataProcessor_FWD_DEFINED__
typedef interface ID3DX10DataProcessor ID3DX10DataProcessor;
#ifdef __cplusplus
interface ID3DX10DataProcessor;
#endif /* __cplusplus */
#endif

#ifndef __ID3DX10ThreadPump_FWD_DEFINED__
#define __ID3DX10ThreadPump_FWD_DEFINED__
typedef interface ID3DX10ThreadPump ID3DX10ThreadPump;
#ifdef __cplusplus
interface ID3DX10ThreadPump;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <oaidl.h>
#include <ocidl.h>
#include <dxgi.h>
#include <d3dcommon.h>

#ifdef __cplusplus
extern "C" {
#endif

/*****************************************************************************
 * ID3DX10DataLoader interface
 */
#ifndef __ID3DX10DataLoader_INTERFACE_DEFINED__
#define __ID3DX10DataLoader_INTERFACE_DEFINED__

#if defined(__cplusplus) && !defined(CINTERFACE)
interface ID3DX10DataLoader
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE Load(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Decompress(
        void **data,
        SIZE_T *bytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE Destroy(
        ) = 0;

    END_INTERFACE

};
#else
typedef struct ID3DX10DataLoaderVtbl {
    BEGIN_INTERFACE

    /*** ID3DX10DataLoader methods ***/
    HRESULT (STDMETHODCALLTYPE *Load)(
        ID3DX10DataLoader *This);

    HRESULT (STDMETHODCALLTYPE *Decompress)(
        ID3DX10DataLoader *This,
        void **data,
        SIZE_T *bytes);

    HRESULT (STDMETHODCALLTYPE *Destroy)(
        ID3DX10DataLoader *This);

    END_INTERFACE
} ID3DX10DataLoaderVtbl;

interface ID3DX10DataLoader {
    CONST_VTBL ID3DX10DataLoaderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3DX10DataLoader methods ***/
#define ID3DX10DataLoader_Load(This) (This)->lpVtbl->Load(This)
#define ID3DX10DataLoader_Decompress(This,data,bytes) (This)->lpVtbl->Decompress(This,data,bytes)
#define ID3DX10DataLoader_Destroy(This) (This)->lpVtbl->Destroy(This)
#else
/*** ID3DX10DataLoader methods ***/
static FORCEINLINE HRESULT ID3DX10DataLoader_Load(ID3DX10DataLoader* This) {
    return This->lpVtbl->Load(This);
}
static FORCEINLINE HRESULT ID3DX10DataLoader_Decompress(ID3DX10DataLoader* This,void **data,SIZE_T *bytes) {
    return This->lpVtbl->Decompress(This,data,bytes);
}
static FORCEINLINE HRESULT ID3DX10DataLoader_Destroy(ID3DX10DataLoader* This) {
    return This->lpVtbl->Destroy(This);
}
#endif
#endif

#endif


#endif  /* __ID3DX10DataLoader_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3DX10DataProcessor interface
 */
#ifndef __ID3DX10DataProcessor_INTERFACE_DEFINED__
#define __ID3DX10DataProcessor_INTERFACE_DEFINED__

#if defined(__cplusplus) && !defined(CINTERFACE)
interface ID3DX10DataProcessor
{

    BEGIN_INTERFACE

    virtual HRESULT STDMETHODCALLTYPE Process(
        void *data,
        SIZE_T bytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateDeviceObject(
        void **dataobject) = 0;

    virtual HRESULT STDMETHODCALLTYPE Destroy(
        ) = 0;

    END_INTERFACE

};
#else
typedef struct ID3DX10DataProcessorVtbl {
    BEGIN_INTERFACE

    /*** ID3DX10DataProcessor methods ***/
    HRESULT (STDMETHODCALLTYPE *Process)(
        ID3DX10DataProcessor *This,
        void *data,
        SIZE_T bytes);

    HRESULT (STDMETHODCALLTYPE *CreateDeviceObject)(
        ID3DX10DataProcessor *This,
        void **dataobject);

    HRESULT (STDMETHODCALLTYPE *Destroy)(
        ID3DX10DataProcessor *This);

    END_INTERFACE
} ID3DX10DataProcessorVtbl;

interface ID3DX10DataProcessor {
    CONST_VTBL ID3DX10DataProcessorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** ID3DX10DataProcessor methods ***/
#define ID3DX10DataProcessor_Process(This,data,bytes) (This)->lpVtbl->Process(This,data,bytes)
#define ID3DX10DataProcessor_CreateDeviceObject(This,dataobject) (This)->lpVtbl->CreateDeviceObject(This,dataobject)
#define ID3DX10DataProcessor_Destroy(This) (This)->lpVtbl->Destroy(This)
#else
/*** ID3DX10DataProcessor methods ***/
static FORCEINLINE HRESULT ID3DX10DataProcessor_Process(ID3DX10DataProcessor* This,void *data,SIZE_T bytes) {
    return This->lpVtbl->Process(This,data,bytes);
}
static FORCEINLINE HRESULT ID3DX10DataProcessor_CreateDeviceObject(ID3DX10DataProcessor* This,void **dataobject) {
    return This->lpVtbl->CreateDeviceObject(This,dataobject);
}
static FORCEINLINE HRESULT ID3DX10DataProcessor_Destroy(ID3DX10DataProcessor* This) {
    return This->lpVtbl->Destroy(This);
}
#endif
#endif

#endif


#endif  /* __ID3DX10DataProcessor_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ID3DX10ThreadPump interface
 */
#ifndef __ID3DX10ThreadPump_INTERFACE_DEFINED__
#define __ID3DX10ThreadPump_INTERFACE_DEFINED__

DEFINE_GUID(IID_ID3DX10ThreadPump, 0xc93fecfa, 0x6967, 0x478a, 0xab,0xbc, 0x40,0x2d,0x90,0x62,0x1f,0xcb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c93fecfa-6967-478a-abbc-402d90621fcb")
ID3DX10ThreadPump : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddWorkItem(
        ID3DX10DataLoader *loader,
        ID3DX10DataProcessor *processor,
        HRESULT *result,
        void **object) = 0;

    virtual UINT STDMETHODCALLTYPE GetWorkItemCount(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WaitForAllItems(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProcessDeviceWorkItems(
        UINT count) = 0;

    virtual HRESULT STDMETHODCALLTYPE PurgeAllItems(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetQueueStatus(
        UINT *queue,
        UINT *processqueue,
        UINT *devicequeue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ID3DX10ThreadPump, 0xc93fecfa, 0x6967, 0x478a, 0xab,0xbc, 0x40,0x2d,0x90,0x62,0x1f,0xcb)
#endif
#else
typedef struct ID3DX10ThreadPumpVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ID3DX10ThreadPump *This,
        REFIID riid,
        void **ppvObject);

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

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

    /*** ID3DX10ThreadPump methods ***/
    HRESULT (STDMETHODCALLTYPE *AddWorkItem)(
        ID3DX10ThreadPump *This,
        ID3DX10DataLoader *loader,
        ID3DX10DataProcessor *processor,
        HRESULT *result,
        void **object);

    UINT (STDMETHODCALLTYPE *GetWorkItemCount)(
        ID3DX10ThreadPump *This);

    HRESULT (STDMETHODCALLTYPE *WaitForAllItems)(
        ID3DX10ThreadPump *This);

    HRESULT (STDMETHODCALLTYPE *ProcessDeviceWorkItems)(
        ID3DX10ThreadPump *This,
        UINT count);

    HRESULT (STDMETHODCALLTYPE *PurgeAllItems)(
        ID3DX10ThreadPump *This);

    HRESULT (STDMETHODCALLTYPE *GetQueueStatus)(
        ID3DX10ThreadPump *This,
        UINT *queue,
        UINT *processqueue,
        UINT *devicequeue);

    END_INTERFACE
} ID3DX10ThreadPumpVtbl;

interface ID3DX10ThreadPump {
    CONST_VTBL ID3DX10ThreadPumpVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ID3DX10ThreadPump_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ID3DX10ThreadPump_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ID3DX10ThreadPump_Release(This) (This)->lpVtbl->Release(This)
/*** ID3DX10ThreadPump methods ***/
#define ID3DX10ThreadPump_AddWorkItem(This,loader,processor,result,object) (This)->lpVtbl->AddWorkItem(This,loader,processor,result,object)
#define ID3DX10ThreadPump_GetWorkItemCount(This) (This)->lpVtbl->GetWorkItemCount(This)
#define ID3DX10ThreadPump_WaitForAllItems(This) (This)->lpVtbl->WaitForAllItems(This)
#define ID3DX10ThreadPump_ProcessDeviceWorkItems(This,count) (This)->lpVtbl->ProcessDeviceWorkItems(This,count)
#define ID3DX10ThreadPump_PurgeAllItems(This) (This)->lpVtbl->PurgeAllItems(This)
#define ID3DX10ThreadPump_GetQueueStatus(This,queue,processqueue,devicequeue) (This)->lpVtbl->GetQueueStatus(This,queue,processqueue,devicequeue)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ID3DX10ThreadPump_QueryInterface(ID3DX10ThreadPump* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ID3DX10ThreadPump_AddRef(ID3DX10ThreadPump* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ID3DX10ThreadPump_Release(ID3DX10ThreadPump* This) {
    return This->lpVtbl->Release(This);
}
/*** ID3DX10ThreadPump methods ***/
static FORCEINLINE HRESULT ID3DX10ThreadPump_AddWorkItem(ID3DX10ThreadPump* This,ID3DX10DataLoader *loader,ID3DX10DataProcessor *processor,HRESULT *result,void **object) {
    return This->lpVtbl->AddWorkItem(This,loader,processor,result,object);
}
static FORCEINLINE UINT ID3DX10ThreadPump_GetWorkItemCount(ID3DX10ThreadPump* This) {
    return This->lpVtbl->GetWorkItemCount(This);
}
static FORCEINLINE HRESULT ID3DX10ThreadPump_WaitForAllItems(ID3DX10ThreadPump* This) {
    return This->lpVtbl->WaitForAllItems(This);
}
static FORCEINLINE HRESULT ID3DX10ThreadPump_ProcessDeviceWorkItems(ID3DX10ThreadPump* This,UINT count) {
    return This->lpVtbl->ProcessDeviceWorkItems(This,count);
}
static FORCEINLINE HRESULT ID3DX10ThreadPump_PurgeAllItems(ID3DX10ThreadPump* This) {
    return This->lpVtbl->PurgeAllItems(This);
}
static FORCEINLINE HRESULT ID3DX10ThreadPump_GetQueueStatus(ID3DX10ThreadPump* This,UINT *queue,UINT *processqueue,UINT *devicequeue) {
    return This->lpVtbl->GetQueueStatus(This,queue,processqueue,devicequeue);
}
#endif
#endif

#endif


#endif  /* __ID3DX10ThreadPump_INTERFACE_DEFINED__ */

HRESULT WINAPI D3DX10UnsetAllDeviceObjects(ID3D10Device *device);
HRESULT WINAPI D3DX10CreateDevice(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
        HMODULE swrast, unsigned int flags, ID3D10Device **device);
HRESULT WINAPI D3DX10CreateDeviceAndSwapChain(IDXGIAdapter *adapter, D3D10_DRIVER_TYPE driver_type,
        HMODULE swrast, unsigned int flags, DXGI_SWAP_CHAIN_DESC *desc, IDXGISwapChain **swapchain,
        ID3D10Device **device);
HRESULT WINAPI D3DX10GetFeatureLevel1(ID3D10Device *device, ID3D10Device1 **device1);
/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __d3dx10core_h__ */
