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