/*** Autogenerated by WIDL 11.15 from ../wine/include/ctffunc.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 __ctffunc_h__
#define __ctffunc_h__

/* Forward declarations */

#ifndef __ITfCandidateString_FWD_DEFINED__
#define __ITfCandidateString_FWD_DEFINED__
typedef interface ITfCandidateString ITfCandidateString;
#ifdef __cplusplus
interface ITfCandidateString;
#endif /* __cplusplus */
#endif

#ifndef __IEnumTfCandidates_FWD_DEFINED__
#define __IEnumTfCandidates_FWD_DEFINED__
typedef interface IEnumTfCandidates IEnumTfCandidates;
#ifdef __cplusplus
interface IEnumTfCandidates;
#endif /* __cplusplus */
#endif

#ifndef __ITfCandidateList_FWD_DEFINED__
#define __ITfCandidateList_FWD_DEFINED__
typedef interface ITfCandidateList ITfCandidateList;
#ifdef __cplusplus
interface ITfCandidateList;
#endif /* __cplusplus */
#endif

#ifndef __ITfFnReconversion_FWD_DEFINED__
#define __ITfFnReconversion_FWD_DEFINED__
typedef interface ITfFnReconversion ITfFnReconversion;
#ifdef __cplusplus
interface ITfFnReconversion;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <oaidl.h>
#include <msctf.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __IEnumTfCandidates_FWD_DEFINED__
#define __IEnumTfCandidates_FWD_DEFINED__
typedef interface IEnumTfCandidates IEnumTfCandidates;
#ifdef __cplusplus
interface IEnumTfCandidates;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * ITfCandidateString interface
 */
#ifndef __ITfCandidateString_INTERFACE_DEFINED__
#define __ITfCandidateString_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITfCandidateString, 0x581f317e, 0xfd9d, 0x443f, 0xb9,0x72, 0xed,0x00,0x46,0x7c,0x5d,0x40);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("581f317e-fd9d-443f-b972-ed00467c5d40")
ITfCandidateString : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetString(
        BSTR *bstr) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIndex(
        ULONG *index) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITfCandidateString, 0x581f317e, 0xfd9d, 0x443f, 0xb9,0x72, 0xed,0x00,0x46,0x7c,0x5d,0x40)
#endif
#else
typedef struct ITfCandidateStringVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITfCandidateString methods ***/
    HRESULT (STDMETHODCALLTYPE *GetString)(
        ITfCandidateString *This,
        BSTR *bstr);

    HRESULT (STDMETHODCALLTYPE *GetIndex)(
        ITfCandidateString *This,
        ULONG *index);

    END_INTERFACE
} ITfCandidateStringVtbl;

interface ITfCandidateString {
    CONST_VTBL ITfCandidateStringVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITfCandidateString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITfCandidateString_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITfCandidateString_Release(This) (This)->lpVtbl->Release(This)
/*** ITfCandidateString methods ***/
#define ITfCandidateString_GetString(This,bstr) (This)->lpVtbl->GetString(This,bstr)
#define ITfCandidateString_GetIndex(This,index) (This)->lpVtbl->GetIndex(This,index)
#else
/*** IUnknown methods ***/
static inline HRESULT ITfCandidateString_QueryInterface(ITfCandidateString* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITfCandidateString_AddRef(ITfCandidateString* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITfCandidateString_Release(ITfCandidateString* This) {
    return This->lpVtbl->Release(This);
}
/*** ITfCandidateString methods ***/
static inline HRESULT ITfCandidateString_GetString(ITfCandidateString* This,BSTR *bstr) {
    return This->lpVtbl->GetString(This,bstr);
}
static inline HRESULT ITfCandidateString_GetIndex(ITfCandidateString* This,ULONG *index) {
    return This->lpVtbl->GetIndex(This,index);
}
#endif
#endif

#endif


#endif  /* __ITfCandidateString_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumTfCandidates interface
 */
#ifndef __IEnumTfCandidates_INTERFACE_DEFINED__
#define __IEnumTfCandidates_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumTfCandidates, 0xdefb1926, 0x6c80, 0x4ce8, 0x87,0xd4, 0xd6,0xb7,0x2b,0x81,0x2b,0xde);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("defb1926-6c80-4ce8-87d4-d6b72b812bde")
IEnumTfCandidates : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumTfCandidates **ret_enum) = 0;

    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG count,
        ITfCandidateString **cand,
        ULONG *fetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG count) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumTfCandidates, 0xdefb1926, 0x6c80, 0x4ce8, 0x87,0xd4, 0xd6,0xb7,0x2b,0x81,0x2b,0xde)
#endif
#else
typedef struct IEnumTfCandidatesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumTfCandidates methods ***/
    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumTfCandidates *This,
        IEnumTfCandidates **ret_enum);

    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumTfCandidates *This,
        ULONG count,
        ITfCandidateString **cand,
        ULONG *fetched);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumTfCandidates *This);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumTfCandidates *This,
        ULONG count);

    END_INTERFACE
} IEnumTfCandidatesVtbl;

interface IEnumTfCandidates {
    CONST_VTBL IEnumTfCandidatesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumTfCandidates_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumTfCandidates_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumTfCandidates_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumTfCandidates methods ***/
#define IEnumTfCandidates_Clone(This,ret_enum) (This)->lpVtbl->Clone(This,ret_enum)
#define IEnumTfCandidates_Next(This,count,cand,fetched) (This)->lpVtbl->Next(This,count,cand,fetched)
#define IEnumTfCandidates_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumTfCandidates_Skip(This,count) (This)->lpVtbl->Skip(This,count)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumTfCandidates_QueryInterface(IEnumTfCandidates* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumTfCandidates_AddRef(IEnumTfCandidates* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumTfCandidates_Release(IEnumTfCandidates* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumTfCandidates methods ***/
static inline HRESULT IEnumTfCandidates_Clone(IEnumTfCandidates* This,IEnumTfCandidates **ret_enum) {
    return This->lpVtbl->Clone(This,ret_enum);
}
static inline HRESULT IEnumTfCandidates_Next(IEnumTfCandidates* This,ULONG count,ITfCandidateString **cand,ULONG *fetched) {
    return This->lpVtbl->Next(This,count,cand,fetched);
}
static inline HRESULT IEnumTfCandidates_Reset(IEnumTfCandidates* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumTfCandidates_Skip(IEnumTfCandidates* This,ULONG count) {
    return This->lpVtbl->Skip(This,count);
}
#endif
#endif

#endif


#endif  /* __IEnumTfCandidates_INTERFACE_DEFINED__ */

typedef enum __WIDL_ctffunc_generated_name_00000018 {
    CAND_FINALIZED = 0x0,
    CAND_SELECTED = 0x1,
    CAND_CANCELED = 0x2
} TfCandidateResult;
/*****************************************************************************
 * ITfCandidateList interface
 */
#ifndef __ITfCandidateList_INTERFACE_DEFINED__
#define __ITfCandidateList_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITfCandidateList, 0xa3ad50fb, 0x9bdb, 0x49e3, 0xa8,0x43, 0x6c,0x76,0x52,0x0f,0xbf,0x5d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a3ad50fb-9bdb-49e3-a843-6c76520fbf5d")
ITfCandidateList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE EnumCandidates(
        IEnumTfCandidates **ret_enum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidate(
        ULONG index,
        ITfCandidateString **cand) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCandidateNum(
        ULONG *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetResult(
        ULONG nIndex,
        TfCandidateResult imcr) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITfCandidateList, 0xa3ad50fb, 0x9bdb, 0x49e3, 0xa8,0x43, 0x6c,0x76,0x52,0x0f,0xbf,0x5d)
#endif
#else
typedef struct ITfCandidateListVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITfCandidateList methods ***/
    HRESULT (STDMETHODCALLTYPE *EnumCandidates)(
        ITfCandidateList *This,
        IEnumTfCandidates **ret_enum);

    HRESULT (STDMETHODCALLTYPE *GetCandidate)(
        ITfCandidateList *This,
        ULONG index,
        ITfCandidateString **cand);

    HRESULT (STDMETHODCALLTYPE *GetCandidateNum)(
        ITfCandidateList *This,
        ULONG *count);

    HRESULT (STDMETHODCALLTYPE *SetResult)(
        ITfCandidateList *This,
        ULONG nIndex,
        TfCandidateResult imcr);

    END_INTERFACE
} ITfCandidateListVtbl;

interface ITfCandidateList {
    CONST_VTBL ITfCandidateListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITfCandidateList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITfCandidateList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITfCandidateList_Release(This) (This)->lpVtbl->Release(This)
/*** ITfCandidateList methods ***/
#define ITfCandidateList_EnumCandidates(This,ret_enum) (This)->lpVtbl->EnumCandidates(This,ret_enum)
#define ITfCandidateList_GetCandidate(This,index,cand) (This)->lpVtbl->GetCandidate(This,index,cand)
#define ITfCandidateList_GetCandidateNum(This,count) (This)->lpVtbl->GetCandidateNum(This,count)
#define ITfCandidateList_SetResult(This,nIndex,imcr) (This)->lpVtbl->SetResult(This,nIndex,imcr)
#else
/*** IUnknown methods ***/
static inline HRESULT ITfCandidateList_QueryInterface(ITfCandidateList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITfCandidateList_AddRef(ITfCandidateList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITfCandidateList_Release(ITfCandidateList* This) {
    return This->lpVtbl->Release(This);
}
/*** ITfCandidateList methods ***/
static inline HRESULT ITfCandidateList_EnumCandidates(ITfCandidateList* This,IEnumTfCandidates **ret_enum) {
    return This->lpVtbl->EnumCandidates(This,ret_enum);
}
static inline HRESULT ITfCandidateList_GetCandidate(ITfCandidateList* This,ULONG index,ITfCandidateString **cand) {
    return This->lpVtbl->GetCandidate(This,index,cand);
}
static inline HRESULT ITfCandidateList_GetCandidateNum(ITfCandidateList* This,ULONG *count) {
    return This->lpVtbl->GetCandidateNum(This,count);
}
static inline HRESULT ITfCandidateList_SetResult(ITfCandidateList* This,ULONG nIndex,TfCandidateResult imcr) {
    return This->lpVtbl->SetResult(This,nIndex,imcr);
}
#endif
#endif

#endif


#endif  /* __ITfCandidateList_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITfFnReconversion interface
 */
#ifndef __ITfFnReconversion_INTERFACE_DEFINED__
#define __ITfFnReconversion_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITfFnReconversion, 0x4cea93c0, 0x0a58, 0x11d3, 0x8d,0xf0, 0x00,0x10,0x5a,0x27,0x99,0xb5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4cea93c0-0a58-11d3-8df0-00105a2799b5")
ITfFnReconversion : public ITfFunction
{
    virtual HRESULT STDMETHODCALLTYPE QueryRange(
        ITfRange *range,
        ITfRange **new_range,
        BOOL *convertable) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReconversion(
        ITfRange *range,
        ITfCandidateList **cand_list) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reconvert(
        ITfRange *range) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITfFnReconversion, 0x4cea93c0, 0x0a58, 0x11d3, 0x8d,0xf0, 0x00,0x10,0x5a,0x27,0x99,0xb5)
#endif
#else
typedef struct ITfFnReconversionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITfFunction methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        ITfFnReconversion *This,
        BSTR *name);

    /*** ITfFnReconversion methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryRange)(
        ITfFnReconversion *This,
        ITfRange *range,
        ITfRange **new_range,
        BOOL *convertable);

    HRESULT (STDMETHODCALLTYPE *GetReconversion)(
        ITfFnReconversion *This,
        ITfRange *range,
        ITfCandidateList **cand_list);

    HRESULT (STDMETHODCALLTYPE *Reconvert)(
        ITfFnReconversion *This,
        ITfRange *range);

    END_INTERFACE
} ITfFnReconversionVtbl;

interface ITfFnReconversion {
    CONST_VTBL ITfFnReconversionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITfFnReconversion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITfFnReconversion_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITfFnReconversion_Release(This) (This)->lpVtbl->Release(This)
/*** ITfFunction methods ***/
#define ITfFnReconversion_GetDisplayName(This,name) (This)->lpVtbl->GetDisplayName(This,name)
/*** ITfFnReconversion methods ***/
#define ITfFnReconversion_QueryRange(This,range,new_range,convertable) (This)->lpVtbl->QueryRange(This,range,new_range,convertable)
#define ITfFnReconversion_GetReconversion(This,range,cand_list) (This)->lpVtbl->GetReconversion(This,range,cand_list)
#define ITfFnReconversion_Reconvert(This,range) (This)->lpVtbl->Reconvert(This,range)
#else
/*** IUnknown methods ***/
static inline HRESULT ITfFnReconversion_QueryInterface(ITfFnReconversion* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITfFnReconversion_AddRef(ITfFnReconversion* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITfFnReconversion_Release(ITfFnReconversion* This) {
    return This->lpVtbl->Release(This);
}
/*** ITfFunction methods ***/
static inline HRESULT ITfFnReconversion_GetDisplayName(ITfFnReconversion* This,BSTR *name) {
    return This->lpVtbl->GetDisplayName(This,name);
}
/*** ITfFnReconversion methods ***/
static inline HRESULT ITfFnReconversion_QueryRange(ITfFnReconversion* This,ITfRange *range,ITfRange **new_range,BOOL *convertable) {
    return This->lpVtbl->QueryRange(This,range,new_range,convertable);
}
static inline HRESULT ITfFnReconversion_GetReconversion(ITfFnReconversion* This,ITfRange *range,ITfCandidateList **cand_list) {
    return This->lpVtbl->GetReconversion(This,range,cand_list);
}
static inline HRESULT ITfFnReconversion_Reconvert(ITfFnReconversion* This,ITfRange *range) {
    return This->lpVtbl->Reconvert(This,range);
}
#endif
#endif

#endif


#endif  /* __ITfFnReconversion_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __ctffunc_h__ */
