// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. use ctypes::{c_float, c_int, c_void}; use shared::guiddef::CLSID; use shared::minwindef::{BOOL, DWORD, ULONG}; use um::sapi::*; use um::unknwnbase::{IUnknown, IUnknownVtbl}; use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR}; pub use um::sapiddk51::{ SPRECOEXTENSION, SPALTERNATESCLSID, }; pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description"; pub use um::sapiddk51::{ ISpTokenUI, ISpTokenUIVtbl, ISpObjectTokenEnumBuilder, ISpObjectTokenEnumBuilderVtbl, SPWORDHANDLE, SPRULEHANDLE, SPGRAMMARHANDLE, SPRECOCONTEXTHANDLE, SPPHRASERULEHANDLE, SPPHRASEPROPERTYHANDLE, SPTRANSITIONID, ISpErrorLog, ISpErrorLogVtbl, ISpGrammarCompiler, ISpGrammarCompilerVtbl, ISpGramCompBackend, ISpGramCompBackendVtbl, ISpITNProcessor, ISpITNProcessorVtbl, ISpPhraseBuilder, ISpPhraseBuilderVtbl, ISpTask, ISpThreadTask, ISpThreadControl, ISpThreadControlVtbl, SPTMTHREADINFO, ISpTaskManager, ISpTaskManagerVtbl, SPVSKIPTYPE, SPVST_SENTENCE, SPVESACTIONS, SPVES_CONTINUE, SPVES_ABORT, SPVES_SKIP, SPVES_RATE, SPVES_VOLUME, ISpTTSEngineSite, ISpTTSEngineSiteVtbl, SPVTEXTFRAG, ISpTTSEngine, ISpTTSEngineVtbl, SPWORDENTRY, SPRULEENTRY, SPTRANSITIONTYPE, SPTRANSEPSILON, SPTRANSWORD, SPTRANSRULE, SPTRANSTEXTBUF, SPTRANSWILDCARD, SPTRANSDICTATION, SPTRANSITIONENTRY, SPTRANSITIONPROPERTY, SPSTATEINFO, SPPATHENTRY, ISpCFGInterpreterSite, ISpCFGInterpreterSiteVtbl, ISpCFGInterpreter, ISpCFGInterpreterVtbl, SPCFGNOTIFY, SPCFGN_ADD, SPCFGN_REMOVE, SPCFGN_INVALIDATE, SPCFGN_ACTIVATE, SPCFGN_DEACTIVATE, SPRESULTTYPE, SPRT_CFG, SPRT_SLM, SPRT_PROPRIETARY, SPRT_FALSE_RECOGNITION, }; pub const SPRT_TYPE_MASK: SPRESULTTYPE = 3; pub const SPRT_EMULATED: SPRESULTTYPE = 1 << 3; pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE = 1 << 4; pub use um::sapiddk51::{ SPPHRASEALT, SPRECORESULTINFO, }; STRUCT!{struct SPRECORESULTINFOEX { cbSize: ULONG, eResultType: SPRESULTTYPE, fHypothesis: BOOL, fProprietaryAutoPause: BOOL, ullStreamPosStart: ULONGLONG, ullStreamPosEnd: ULONGLONG, hGrammar: SPGRAMMARHANDLE, ulSizeEngineData: ULONG, pvEngineData: *mut c_void, pPhrase: *mut ISpPhraseBuilder, aPhraseAlts: *mut SPPHRASEALT, ulNumAlts: ULONG, ullStreamTimeStart: ULONGLONG, ullStreamTimeEnd: ULONGLONG, }} pub use um::sapiddk51::{ SPWORDINFOOPT, SPWIO_NONE, SPWIO_WANT_TEXT, SPRULEINFOOPT, SPRIO_NONE, SPPARSEINFO, ISpSREngineSite, ISpSREngineSiteVtbl, }; RIDL!{#[uuid(0x7bc6e012, 0x684a, 0x493e, 0xbd, 0xd4, 0x2b, 0xf5, 0xfb, 0xf4, 0x8c, 0xfe)] interface ISpSREngineSite2(ISpSREngineSite2Vtbl): ISpSREngineSite(ISpSREngineSiteVtbl) { fn AddEventEx( pEvent: *const SPEVENTEX, hSAPIRecoContext: SPRECOCONTEXTHANDLE, ) -> HRESULT, fn UpdateRecoPosEx( ullCurrentRecoPos: ULONGLONG, ullCurrentRecoTime: ULONGLONG, ) -> HRESULT, fn GetRuleTransition( ulGrammarID: ULONG, RuleIndex: ULONG, pTrans: *mut SPTRANSITIONENTRY, ) -> HRESULT, fn RecognitionEx( pResultInfo: *const SPRECORESULTINFOEX, ) -> HRESULT, }} pub use um::sapiddk51::{ SPPROPSRC, SPPROPSRC_RECO_INST, SPPROPSRC_RECO_CTX, SPPROPSRC_RECO_GRAMMAR, ISpSREngine, ISpSREngineVtbl, }; RIDL!{#[uuid(0x7ba627d8, 0x33f9, 0x4375, 0x90, 0xc5, 0x99, 0x85, 0xae, 0xe5, 0xed, 0xe5)] interface ISpSREngine2(ISpSREngine2Vtbl): ISpSREngine(ISpSREngineVtbl) { fn PrivateCallImmediate( pvEngineContext: *mut c_void, pInCallFrame: *const c_void, ulInCallFrameSize: ULONG, ppvCoMemResponse: *mut *mut c_void, pulResponseSize: *mut ULONG, ) -> HRESULT, fn SetAdaptationData2( pvEngineContext: *mut c_void, pAdaptationData: *const WCHAR, cch: ULONG, pTopicName: LPCWSTR, eSettings: SPADAPTATIONSETTINGS, eRelevance: SPADAPTATIONRELEVANCE, ) -> HRESULT, fn SetGrammarPrefix( pvEngineGrammar: *mut c_void, pszPrefix: LPCWSTR, fIsPrefixRequired: BOOL, ) -> HRESULT, fn SetRulePriority( hRule: SPRULEHANDLE, pvClientRuleContext: *mut c_void, nRulePriority: c_int, ) -> HRESULT, fn EmulateRecognition( pPhrase: *mut ISpPhrase, dwCompareFlags: DWORD, ) -> HRESULT, fn SetSLMWeight( pvEngineGrammar: *mut c_void, flWeight: c_float, ) -> HRESULT, fn SetRuleWeight( hRule: SPRULEHANDLE, pvClientRuleContext: *mut c_void, flWeight: c_float, ) -> HRESULT, fn SetTrainingState( fDoingTraining: BOOL, fAdaptFromTrainingData: BOOL, ) -> HRESULT, fn ResetAcousticModelAdaptation() -> HRESULT, fn OnLoadCFG( pvEngineGrammar: *mut c_void, pvGrammarData: *const SPBINARYGRAMMAR, ulGrammarID: ULONG, ) -> HRESULT, fn OnUnloadCFG( pvEngineGrammar: *mut c_void, ulGrammarID: ULONG, ) -> HRESULT, }} pub use um::sapiddk51::SPPHRASEALTREQUEST; RIDL!{#[uuid(0xfece8294, 0x2be1, 0x408f, 0x8e, 0x68, 0x2d, 0xe3, 0x77, 0x09, 0x2f, 0x0e)] interface ISpSRAlternates(ISpSRAlternatesVtbl): IUnknown(IUnknownVtbl) { fn GetAlternates( pAltRequest: *mut SPPHRASEALTREQUEST, ppAlts: *mut *mut SPPHRASEALT, pcAlts: *mut ULONG, ) -> HRESULT, fn Commit( pAltRequest: *mut SPPHRASEALTREQUEST, pAlt: *mut SPPHRASEALT, ppvResultExtra: *mut c_void, pcbResultExtra: *mut ULONG, ) -> HRESULT, }} RIDL!{#[uuid(0xf338f437, 0xcb33, 0x4020, 0x9c, 0xab, 0xc7, 0x1f, 0xf9, 0xce, 0x12, 0xd3)] interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) { fn CommitText( pAltRequest: *mut SPPHRASEALTREQUEST, pcszNewText: LPCWSTR, commitFlags: SPCOMMITFLAGS, ) -> HRESULT, }} pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl}; RIDL!{#[uuid(0xdefd682a, 0xfe0a, 0x42b9, 0xbf, 0xa1, 0x56, 0xd3, 0xd6, 0xce, 0xcf, 0xaf)] interface ISpPrivateEngineCallEx(ISpPrivateEngineCallExVtbl): IUnknown(IUnknownVtbl) { fn CallEngineSynchronize( pInFrame: *const c_void, ulInFrameSize: ULONG, ppCoMemOutFrame: *mut *mut c_void, pulOutFrameSize: *mut ULONG, ) -> HRESULT, fn CallEngineImmediate( pInFrame: *const c_void, ulInFrameSize: ULONG, ppCoMemOutFrame: *mut *mut c_void, pulOutFrameSize: *mut ULONG, ) -> HRESULT, }} pub use um::sapiddk51::{ LIBID_SpeechDDKLib, CLSID_SpDataKey, CLSID_SpObjectTokenEnum, CLSID_SpPhraseBuilder, CLSID_SpITNProcessor, CLSID_SpGrammarCompiler, }; extern { pub static CLSID_SpW3CGrammarCompiler: CLSID; } pub use um::sapiddk51::CLSID_SpGramCompBackend;