1/*---------------------------------------------------------------------------*
2 *  SR_GrammarImpl.h  *
3 *                                                                           *
4 *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
5 *                                                                           *
6 *  Licensed under the Apache License, Version 2.0 (the 'License');          *
7 *  you may not use this file except in compliance with the License.         *
8 *                                                                           *
9 *  You may obtain a copy of the License at                                  *
10 *      http://www.apache.org/licenses/LICENSE-2.0                           *
11 *                                                                           *
12 *  Unless required by applicable law or agreed to in writing, software      *
13 *  distributed under the License is distributed on an 'AS IS' BASIS,        *
14 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
15 *  See the License for the specific language governing permissions and      *
16 *  limitations under the License.                                           *
17 *                                                                           *
18 *---------------------------------------------------------------------------*/
19
20#ifndef __SR_GRAMMARIMPL_H
21#define __SR_GRAMMARIMPL_H
22
23
24
25#include "ArrayList.h"
26#include "HashMap.h"
27#include "SR_Grammar.h"
28#include "SR_Nametags.h"
29#include "ESR_ReturnCode.h"
30#include "ESR_SessionType.h"
31#include "SR_EventLog.h"
32#include "SR_Recognizer.h"
33
34/* Semproc stuff */
35#include "SR_SemanticGraph.h"
36#include "SR_SemanticProcessor.h"
37
38
39
40#include "simapi.h"
41
42/**
43 * SR_Grammar implementation.
44 */
45typedef struct SR_GrammarImpl_t
46{
47  /**
48   * Interface functions that must be implemented.
49   */
50  SR_Grammar Interface;
51
52  /**
53   * Associates a grammar with a Recognizer.
54   *
55   * @param self SR_Grammar handle
56   * @param recognizer The recognizer
57   */
58  // ESR_ReturnCode(*setupAcousticModels)(SR_Grammar* self, SR_AcousticModels* models);
59  ESR_ReturnCode(*setupRecognizer)(SR_Grammar* self, SR_Recognizer* recognizer);
60  /**
61   * Dissociates a grammar from a Recognizer.
62   *
63   * @param self SR_Grammar handle
64   */
65  ESR_ReturnCode(*unsetupRecognizer)(SR_Grammar* self);
66
67  /**
68   * Legacy CREC syntax.
69   */
70  CA_Syntax* syntax;
71  /**
72   * Recognizer associated with SR_Grammar.
73   */
74  // SR_AcousticModels* models;
75  SR_Recognizer* recognizer;
76
77  /**
78   * Vocabulary.
79   */
80  SR_Vocabulary* vocabulary;
81
82  /**
83   * Semantic Graph
84   */
85  SR_SemanticGraph* semgraph;
86
87  /**
88   * Semantic Processor
89   */
90  SR_SemanticProcessor* semproc;
91
92  /**
93   * Grammar-specific parameters.
94   */
95  ESR_SessionType* parameters;
96
97  /**
98   * Event Log reference set internally by regognizer during its association with this grammar
99   */
100  SR_EventLog* eventLog;
101
102  /**
103   * Event log, logging level.
104   */
105  size_t logLevel;
106
107  /**
108   * Indicates if the grammar has been activated.
109   */
110  ESR_BOOL isActivated;
111}
112SR_GrammarImpl;
113
114
115/**
116 * Default implementation.
117 */
118SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_CompileRule(SR_Grammar* self, const LCHAR* name);
119/**
120 * Default implementation.
121 */
122SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_AddRuleFromList(SR_Grammar* self, SR_Vocabulary* vocabulary, const LCHAR* name);
123/**
124 * Default implementation.
125 */
126SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_Compile(SR_Grammar* self);
127/**
128 * Default implementation.
129 */
130SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_AddRule(SR_Grammar* self, const LCHAR* name, const LCHAR* value);
131/**
132 * Default implementation.
133 */
134SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_DeleteRule(SR_Grammar* self, const LCHAR* name);
135/**
136 * Default implementation.
137 */
138SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_ContainsRule(SR_Grammar* self, const LCHAR* name, ESR_BOOL* result);
139/**
140 * Default implementation.
141 */
142SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_AddWordToSlot(SR_Grammar* self, const LCHAR* slot,
143																												 const LCHAR* word, const LCHAR* pronunciation,
144																												 int weight, const LCHAR* tag);
145/**
146 * Default implementation.
147 */
148SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_ResetAllSlots(SR_Grammar* self);
149/**
150 * Default implementation.
151 */
152SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_AddNametagToSlot(SR_Grammar* self, const LCHAR* slot,
153																														const SR_Nametag* nametag, int weight,
154																														const LCHAR* tag);
155/**
156 * Default implementation.
157 */
158SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_Create(SR_Grammar** self);
159/**
160 * Default implementation.
161 */
162SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_Destroy(SR_Grammar* self);
163/**
164 * Default implementation.
165 */
166SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_Save(SR_Grammar* self, const LCHAR* filename);
167/**
168 * Default implementation.
169 */
170SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_CheckParse(SR_Grammar* self, const LCHAR* transcription, SR_SemanticResult** result, size_t* resultCount);
171/**
172 * Default implementation.
173 */
174SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_SetDispatchFunction(SR_Grammar* self, const LCHAR* name, void* userData, SR_GrammarDispatchFunction function);
175/**
176 * Default implementation.
177 */
178SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_SetParameter(SR_Grammar* self, const LCHAR* key, void* value);
179/**
180 * Default implementation.
181 */
182SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_SetSize_tParameter(SR_Grammar* self, const LCHAR* key, size_t value);
183/**
184 * Default implementation.
185 */
186SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_GetParameter(SR_Grammar* self, const LCHAR* key, void** value);
187/**
188 * Default implementation.
189 */
190SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_GetSize_tParameter(SR_Grammar* self, const LCHAR* key, size_t* value);
191/**
192 * Default implementation.
193 */
194// SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_SetupModels(SR_Grammar* self, SR_AcousticModels* models);
195SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_SetupRecognizer(SR_Grammar* self, SR_Recognizer* recognizer);
196/**
197 * Default implementation.
198 */
199SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_UnsetupRecognizer(SR_Grammar* self);
200/**
201 * Default implementation.
202 */
203SREC_GRAMMAR_API ESR_ReturnCode SR_Grammar_SetupVocabulary(SR_Grammar *self, SR_Vocabulary *vocabulary);
204
205
206#endif /* __SR_GRAMMARIMPL_H */
207