1 // Licensed under the Apache License, Version 2.0 2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license 3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option. 4 // All files in the project carrying such notice may not be copied, modified, or distributed 5 // except according to those terms. 6 use ctypes::{c_float, c_int, c_void}; 7 use shared::guiddef::CLSID; 8 use shared::minwindef::{BOOL, DWORD, ULONG}; 9 use um::sapi::*; 10 use um::unknwnbase::{IUnknown, IUnknownVtbl}; 11 use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR}; 12 pub use um::sapiddk51::{ 13 SPRECOEXTENSION, 14 SPALTERNATESCLSID, 15 }; 16 pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description"; 17 pub use um::sapiddk51::{ 18 ISpTokenUI, ISpTokenUIVtbl, 19 ISpObjectTokenEnumBuilder, ISpObjectTokenEnumBuilderVtbl, 20 SPWORDHANDLE, 21 SPRULEHANDLE, 22 SPGRAMMARHANDLE, 23 SPRECOCONTEXTHANDLE, 24 SPPHRASERULEHANDLE, 25 SPPHRASEPROPERTYHANDLE, 26 SPTRANSITIONID, 27 ISpErrorLog, ISpErrorLogVtbl, 28 ISpGrammarCompiler, ISpGrammarCompilerVtbl, 29 ISpGramCompBackend, ISpGramCompBackendVtbl, 30 ISpITNProcessor, ISpITNProcessorVtbl, 31 ISpPhraseBuilder, ISpPhraseBuilderVtbl, 32 ISpTask, 33 ISpThreadTask, 34 ISpThreadControl, ISpThreadControlVtbl, 35 SPTMTHREADINFO, 36 ISpTaskManager, ISpTaskManagerVtbl, 37 SPVSKIPTYPE, 38 SPVST_SENTENCE, 39 SPVESACTIONS, 40 SPVES_CONTINUE, 41 SPVES_ABORT, 42 SPVES_SKIP, 43 SPVES_RATE, 44 SPVES_VOLUME, 45 ISpTTSEngineSite, ISpTTSEngineSiteVtbl, 46 SPVTEXTFRAG, 47 ISpTTSEngine, ISpTTSEngineVtbl, 48 SPWORDENTRY, 49 SPRULEENTRY, 50 SPTRANSITIONTYPE, 51 SPTRANSEPSILON, 52 SPTRANSWORD, 53 SPTRANSRULE, 54 SPTRANSTEXTBUF, 55 SPTRANSWILDCARD, 56 SPTRANSDICTATION, 57 SPTRANSITIONENTRY, 58 SPTRANSITIONPROPERTY, 59 SPSTATEINFO, 60 SPPATHENTRY, 61 ISpCFGInterpreterSite, ISpCFGInterpreterSiteVtbl, 62 ISpCFGInterpreter, ISpCFGInterpreterVtbl, 63 SPCFGNOTIFY, 64 SPCFGN_ADD, 65 SPCFGN_REMOVE, 66 SPCFGN_INVALIDATE, 67 SPCFGN_ACTIVATE, 68 SPCFGN_DEACTIVATE, 69 SPRESULTTYPE, 70 SPRT_CFG, 71 SPRT_SLM, 72 SPRT_PROPRIETARY, 73 SPRT_FALSE_RECOGNITION, 74 }; 75 pub const SPRT_TYPE_MASK: SPRESULTTYPE = 3; 76 pub const SPRT_EMULATED: SPRESULTTYPE = 1 << 3; 77 pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE = 1 << 4; 78 pub use um::sapiddk51::{ 79 SPPHRASEALT, 80 SPRECORESULTINFO, 81 }; 82 STRUCT!{struct SPRECORESULTINFOEX { 83 cbSize: ULONG, 84 eResultType: SPRESULTTYPE, 85 fHypothesis: BOOL, 86 fProprietaryAutoPause: BOOL, 87 ullStreamPosStart: ULONGLONG, 88 ullStreamPosEnd: ULONGLONG, 89 hGrammar: SPGRAMMARHANDLE, 90 ulSizeEngineData: ULONG, 91 pvEngineData: *mut c_void, 92 pPhrase: *mut ISpPhraseBuilder, 93 aPhraseAlts: *mut SPPHRASEALT, 94 ulNumAlts: ULONG, 95 ullStreamTimeStart: ULONGLONG, 96 ullStreamTimeEnd: ULONGLONG, 97 }} 98 pub use um::sapiddk51::{ 99 SPWORDINFOOPT, 100 SPWIO_NONE, 101 SPWIO_WANT_TEXT, 102 SPRULEINFOOPT, 103 SPRIO_NONE, 104 SPPARSEINFO, 105 ISpSREngineSite, ISpSREngineSiteVtbl, 106 }; 107 RIDL!{#[uuid(0x7bc6e012, 0x684a, 0x493e, 0xbd, 0xd4, 0x2b, 0xf5, 0xfb, 0xf4, 0x8c, 0xfe)] 108 interface ISpSREngineSite2(ISpSREngineSite2Vtbl): ISpSREngineSite(ISpSREngineSiteVtbl) { 109 fn AddEventEx( 110 pEvent: *const SPEVENTEX, 111 hSAPIRecoContext: SPRECOCONTEXTHANDLE, 112 ) -> HRESULT, 113 fn UpdateRecoPosEx( 114 ullCurrentRecoPos: ULONGLONG, 115 ullCurrentRecoTime: ULONGLONG, 116 ) -> HRESULT, 117 fn GetRuleTransition( 118 ulGrammarID: ULONG, 119 RuleIndex: ULONG, 120 pTrans: *mut SPTRANSITIONENTRY, 121 ) -> HRESULT, 122 fn RecognitionEx( 123 pResultInfo: *const SPRECORESULTINFOEX, 124 ) -> HRESULT, 125 }} 126 pub use um::sapiddk51::{ 127 SPPROPSRC, 128 SPPROPSRC_RECO_INST, 129 SPPROPSRC_RECO_CTX, 130 SPPROPSRC_RECO_GRAMMAR, 131 ISpSREngine, ISpSREngineVtbl, 132 }; 133 RIDL!{#[uuid(0x7ba627d8, 0x33f9, 0x4375, 0x90, 0xc5, 0x99, 0x85, 0xae, 0xe5, 0xed, 0xe5)] 134 interface ISpSREngine2(ISpSREngine2Vtbl): ISpSREngine(ISpSREngineVtbl) { 135 fn PrivateCallImmediate( 136 pvEngineContext: *mut c_void, 137 pInCallFrame: *const c_void, 138 ulInCallFrameSize: ULONG, 139 ppvCoMemResponse: *mut *mut c_void, 140 pulResponseSize: *mut ULONG, 141 ) -> HRESULT, 142 fn SetAdaptationData2( 143 pvEngineContext: *mut c_void, 144 pAdaptationData: *const WCHAR, 145 cch: ULONG, 146 pTopicName: LPCWSTR, 147 eSettings: SPADAPTATIONSETTINGS, 148 eRelevance: SPADAPTATIONRELEVANCE, 149 ) -> HRESULT, 150 fn SetGrammarPrefix( 151 pvEngineGrammar: *mut c_void, 152 pszPrefix: LPCWSTR, 153 fIsPrefixRequired: BOOL, 154 ) -> HRESULT, 155 fn SetRulePriority( 156 hRule: SPRULEHANDLE, 157 pvClientRuleContext: *mut c_void, 158 nRulePriority: c_int, 159 ) -> HRESULT, 160 fn EmulateRecognition( 161 pPhrase: *mut ISpPhrase, 162 dwCompareFlags: DWORD, 163 ) -> HRESULT, 164 fn SetSLMWeight( 165 pvEngineGrammar: *mut c_void, 166 flWeight: c_float, 167 ) -> HRESULT, 168 fn SetRuleWeight( 169 hRule: SPRULEHANDLE, 170 pvClientRuleContext: *mut c_void, 171 flWeight: c_float, 172 ) -> HRESULT, 173 fn SetTrainingState( 174 fDoingTraining: BOOL, 175 fAdaptFromTrainingData: BOOL, 176 ) -> HRESULT, 177 fn ResetAcousticModelAdaptation() -> HRESULT, 178 fn OnLoadCFG( 179 pvEngineGrammar: *mut c_void, 180 pvGrammarData: *const SPBINARYGRAMMAR, 181 ulGrammarID: ULONG, 182 ) -> HRESULT, 183 fn OnUnloadCFG( 184 pvEngineGrammar: *mut c_void, 185 ulGrammarID: ULONG, 186 ) -> HRESULT, 187 }} 188 pub use um::sapiddk51::SPPHRASEALTREQUEST; 189 RIDL!{#[uuid(0xfece8294, 0x2be1, 0x408f, 0x8e, 0x68, 0x2d, 0xe3, 0x77, 0x09, 0x2f, 0x0e)] 190 interface ISpSRAlternates(ISpSRAlternatesVtbl): IUnknown(IUnknownVtbl) { 191 fn GetAlternates( 192 pAltRequest: *mut SPPHRASEALTREQUEST, 193 ppAlts: *mut *mut SPPHRASEALT, 194 pcAlts: *mut ULONG, 195 ) -> HRESULT, 196 fn Commit( 197 pAltRequest: *mut SPPHRASEALTREQUEST, 198 pAlt: *mut SPPHRASEALT, 199 ppvResultExtra: *mut c_void, 200 pcbResultExtra: *mut ULONG, 201 ) -> HRESULT, 202 }} 203 RIDL!{#[uuid(0xf338f437, 0xcb33, 0x4020, 0x9c, 0xab, 0xc7, 0x1f, 0xf9, 0xce, 0x12, 0xd3)] 204 interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) { 205 fn CommitText( 206 pAltRequest: *mut SPPHRASEALTREQUEST, 207 pcszNewText: LPCWSTR, 208 commitFlags: SPCOMMITFLAGS, 209 ) -> HRESULT, 210 }} 211 pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl}; 212 RIDL!{#[uuid(0xdefd682a, 0xfe0a, 0x42b9, 0xbf, 0xa1, 0x56, 0xd3, 0xd6, 0xce, 0xcf, 0xaf)] 213 interface ISpPrivateEngineCallEx(ISpPrivateEngineCallExVtbl): IUnknown(IUnknownVtbl) { 214 fn CallEngineSynchronize( 215 pInFrame: *const c_void, 216 ulInFrameSize: ULONG, 217 ppCoMemOutFrame: *mut *mut c_void, 218 pulOutFrameSize: *mut ULONG, 219 ) -> HRESULT, 220 fn CallEngineImmediate( 221 pInFrame: *const c_void, 222 ulInFrameSize: ULONG, 223 ppCoMemOutFrame: *mut *mut c_void, 224 pulOutFrameSize: *mut ULONG, 225 ) -> HRESULT, 226 }} 227 pub use um::sapiddk51::{ 228 LIBID_SpeechDDKLib, 229 CLSID_SpDataKey, 230 CLSID_SpObjectTokenEnum, 231 CLSID_SpPhraseBuilder, 232 CLSID_SpITNProcessor, 233 CLSID_SpGrammarCompiler, 234 }; 235 extern { 236 pub static CLSID_SpW3CGrammarCompiler: CLSID; 237 } 238 pub use um::sapiddk51::CLSID_SpGramCompBackend; 239