1/*---------------------------------------------------------------------------*
2 *  SR_AcousticModelsImpl.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_ACOUSTICMODELSIMPL_H
21#define __SR_ACOUSTICMODELSIMPL_H
22
23
24
25#ifndef __vxworks
26#include <memory.h>
27#endif
28#include "SR_AcousticModels.h"
29#include "SR_RecognizerImpl.h"
30#include "ESR_ReturnCode.h"
31
32/* Legacy CREC headers */
33#include "simapi.h"
34
35/**
36 * AcousticModels implementation.
37 */
38typedef struct SR_AcousticModelsImpl_t
39{
40  /**
41   * Interface functions that must be implemented.
42   */
43  SR_AcousticModels Interface;
44
45  /**
46   * When AcousticModels are associated with a Recognizer, they initialize their
47   * Pattern objects using that Recognizer.
48   *
49   * @param self SR_AcousticModels handle
50   * @param recognizer The recognizer
51   */
52  ESR_ReturnCode(*setupPattern)(SR_AcousticModels* self, SR_Recognizer* recognizer);
53  /**
54   * When AcousticModels are deassociated with a Recognizer, they deinitialize their
55   * Pattern objects.
56   *
57   * @param self SR_AcousticModels handle
58   */
59  ESR_ReturnCode(*unsetupPattern)(SR_AcousticModels* self);
60  /**
61   * Generate legacy AcousticModels parameter structure from ESR_Session.
62   *
63   * @param params Resulting structure
64   */
65  ESR_ReturnCode(*getLegacyParameters)(CA_AcoustInputParams* params);
66
67  /**
68   * AcousticModels parameters.
69   */
70  HashMap* parameters;
71  /**
72   * Legacy CREC pattern.
73   */
74  CA_Pattern* pattern;
75  /**
76   * ArrayList of legacy CREC acoustic models.
77   */
78  ArrayList* acoustic;
79  /**
80   * Legacy Arbdata structure.
81   */
82  CA_Arbdata* arbdata;
83  /**
84   * Contents of AcousticModels.
85   */
86  void* contents;
87  /**
88   * Size of contents.
89   */
90  int size;
91}
92SR_AcousticModelsImpl;
93
94
95/**
96 * Default implementation.
97 */
98SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_Destroy(SR_AcousticModels* self);
99/**
100 * Default implementation.
101 */
102SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_Save(SR_AcousticModels* self,
103    const LCHAR* filename);
104/**
105 * Default implementation.
106 */
107SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_SetParameter(SR_AcousticModels* self,
108    const LCHAR* key,
109    LCHAR* value);
110/**
111 * Default implementation.
112 */
113SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_GetParameter(SR_AcousticModels* self,
114    const LCHAR* key,
115    LCHAR* value, size_t* len);
116/**
117 * Default implementation.
118 */
119SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_GetCount(SR_AcousticModels* self,
120    size_t* size);
121/**
122 * Default implementation.
123 */
124SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_GetID(SR_AcousticModels* self,
125    size_t index,
126    SR_AcousticModelID* id,
127    size_t* size);
128/**
129 * Default implementation.
130 */
131SREC_ACOUSTICMODELS_API ESR_ReturnCode SR_AcousticModels_SetID(SR_AcousticModels* self,
132    size_t index,
133    SR_AcousticModelID* id);
134/**
135 * Default implementation.
136 */
137SREC_ACOUSTICMODELS_API void* SR_AcousticModels_GetArbdata(SR_AcousticModels* self);
138
139/**
140 * When AcousticModels are associated with a Recognizer, they initialize their
141 * Pattern objects using that Recognizer.
142 *
143 * @param self SR_AcousticModels handle
144 * @param recognizer The recognizer
145 */
146ESR_ReturnCode SR_AcousticModels_SetupPattern(SR_AcousticModels* self, SR_Recognizer* recognizer);
147/**
148 * When AcousticModels are deassociated with a Recognizer, they deinitialize their
149 * Pattern objects.
150 *
151 * @param self SR_AcousticModels handle
152 */
153ESR_ReturnCode SR_AcousticModels_UnsetupPattern(SR_AcousticModels* self);
154/**
155 * Generate legacy AcousticModels parameter structure from ESR_Session.
156 *
157 * @param params Resulting structure
158 */
159ESR_ReturnCode SR_AcousticModels_GetLegacyParameters(CA_AcoustInputParams* params);
160
161
162#endif /* __SR_ACOUSTICMODELSIMPL_H */
163