1use ctypes::{c_float, c_int, c_void};
7use shared::guiddef::CLSID;
8use shared::minwindef::{BOOL, DWORD, ULONG};
9use um::sapi::*;
10use um::unknwnbase::{IUnknown, IUnknownVtbl};
11use um::winnt::{HRESULT, LPCWSTR, ULONGLONG, WCHAR};
12pub use um::sapiddk51::{
13 SPRECOEXTENSION,
14 SPALTERNATESCLSID,
15};
16pub const SR_LOCALIZED_DESCRIPTION: &'static str = "Description";
17pub 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};
75pub const SPRT_TYPE_MASK: SPRESULTTYPE = 3;
76pub const SPRT_EMULATED: SPRESULTTYPE = 1 << 3;
77pub const SPRT_EXTENDABLE_PARSE: SPRESULTTYPE = 1 << 4;
78pub use um::sapiddk51::{
79 SPPHRASEALT,
80 SPRECORESULTINFO,
81};
82STRUCT!{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}}
98pub use um::sapiddk51::{
99 SPWORDINFOOPT,
100 SPWIO_NONE,
101 SPWIO_WANT_TEXT,
102 SPRULEINFOOPT,
103 SPRIO_NONE,
104 SPPARSEINFO,
105 ISpSREngineSite, ISpSREngineSiteVtbl,
106};
107RIDL!{#[uuid(0x7bc6e012, 0x684a, 0x493e, 0xbd, 0xd4, 0x2b, 0xf5, 0xfb, 0xf4, 0x8c, 0xfe)]
108interface 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}}
126pub use um::sapiddk51::{
127 SPPROPSRC,
128 SPPROPSRC_RECO_INST,
129 SPPROPSRC_RECO_CTX,
130 SPPROPSRC_RECO_GRAMMAR,
131 ISpSREngine, ISpSREngineVtbl,
132};
133RIDL!{#[uuid(0x7ba627d8, 0x33f9, 0x4375, 0x90, 0xc5, 0x99, 0x85, 0xae, 0xe5, 0xed, 0xe5)]
134interface 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}}
188pub use um::sapiddk51::SPPHRASEALTREQUEST;
189RIDL!{#[uuid(0xfece8294, 0x2be1, 0x408f, 0x8e, 0x68, 0x2d, 0xe3, 0x77, 0x09, 0x2f, 0x0e)]
190interface 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}}
203RIDL!{#[uuid(0xf338f437, 0xcb33, 0x4020, 0x9c, 0xab, 0xc7, 0x1f, 0xf9, 0xce, 0x12, 0xd3)]
204interface ISpSRAlternates2(ISpSRAlternates2Vtbl): ISpSRAlternates(ISpSRAlternatesVtbl) {
205 fn CommitText(
206 pAltRequest: *mut SPPHRASEALTREQUEST,
207 pcszNewText: LPCWSTR,
208 commitFlags: SPCOMMITFLAGS,
209 ) -> HRESULT,
210}}
211pub use um::sapiddk51::{_ISpPrivateEngineCall, _ISpPrivateEngineCallVtbl};
212RIDL!{#[uuid(0xdefd682a, 0xfe0a, 0x42b9, 0xbf, 0xa1, 0x56, 0xd3, 0xd6, 0xce, 0xcf, 0xaf)]
213interface 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}}
227pub use um::sapiddk51::{
228 LIBID_SpeechDDKLib,
229 CLSID_SpDataKey,
230 CLSID_SpObjectTokenEnum,
231 CLSID_SpPhraseBuilder,
232 CLSID_SpITNProcessor,
233 CLSID_SpGrammarCompiler,
234};
235extern {
236 pub static CLSID_SpW3CGrammarCompiler: CLSID;
237}
238pub use um::sapiddk51::CLSID_SpGramCompBackend;