1/*---------------------------------------------------------------------------*
2 *  ESR_SessionTypeImpl.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 __ESR_SESSIONTYPEIMPL_H
21#define __ESR_SESSIONTYPEIMPL_H
22
23
24
25#include "ArrayList.h"
26#include "ESR_ReturnCode.h"
27#include "ESR_SessionType.h"
28#include "ESR_SharedPrefix.h"
29#include "HashMap.h"
30#include "pstdio.h"
31
32
33/**
34 * ESR_SessionType implementation data.
35 */
36typedef struct ESR_SessionTypeData_t
37{
38  /**
39   * [key, value] pairs.
40   */
41  HashMap* value;
42
43  /**
44   * Event listeners.
45   */
46  ArrayList* listeners;
47}
48ESR_SessionTypeData;
49
50typedef struct ESR_SessionTypePair_t
51{
52  /**
53   * Pointer to value.
54   */
55  void* value;
56  /**
57   * Value type.
58   */
59  VariableTypes type;
60}
61ESR_SessionPair;
62
63/**
64 * Default implementation.
65 */
66ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetPropertyImpl(ESR_SessionType* self,
67    const LCHAR* name,
68    void** value,
69    VariableTypes type);
70/**
71 * Default implementation.
72 */
73ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetIntImpl(ESR_SessionType* self,
74    const LCHAR* name,
75    int* value);
76/**
77 * Default implementation.
78 */
79ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetUint16_tImpl(ESR_SessionType* self,
80    const LCHAR* name,
81    asr_uint16_t* value);
82/**
83 * Default implementation.
84 */
85ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetSize_tImpl(ESR_SessionType* self,
86    const LCHAR* name,
87    size_t* value);
88/**
89 * Default implementation.
90 */
91ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetFloatImpl(ESR_SessionType* self,
92    const LCHAR* name,
93    float* value);
94/**
95 * Default implementation.
96 */
97ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetBoolImpl(ESR_SessionType* self,
98    const LCHAR* name,
99    ESR_BOOL* value);
100/**
101 * Default implementation.
102 */
103ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetLCHARImpl(ESR_SessionType* self,
104    const LCHAR* name,
105    LCHAR* value, size_t* len);
106/**
107 * Default implementation.
108 */
109ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeContainsImpl(ESR_SessionType* self,
110    const LCHAR* name,
111    ESR_BOOL* exists);
112/**
113 * Default implementation.
114 */
115ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetPropertyImpl(ESR_SessionType* self,
116    const LCHAR* name,
117    void* value, VariableTypes type);
118/**
119 * Default implementation.
120 */
121ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetIntImpl(ESR_SessionType* self,
122    const LCHAR* name,
123    int value);
124/**
125 * Default implementation.
126 */
127ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetUint16_tImpl(ESR_SessionType* self,
128    const LCHAR* name,
129    asr_uint16_t value);
130/**
131 * Default implementation.
132 */
133ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetSize_tImpl(ESR_SessionType* self,
134    const LCHAR* name,
135    size_t value);
136/**
137 * Default implementation.
138 */
139ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetFloatImpl(ESR_SessionType* self,
140    const LCHAR* name,
141    float value);
142/**
143 * Default implementation.
144 */
145ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetBoolImpl(ESR_SessionType* self,
146    const LCHAR* name,
147    ESR_BOOL value);
148/**
149 * Default implementation.
150 */
151ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetLCHARImpl(ESR_SessionType* self,
152    const LCHAR* name,
153    LCHAR* value);
154/**
155 * Default implementation.
156 */
157ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetIntIfEmptyImpl(ESR_SessionType* self,
158    const LCHAR* name,
159    int value);
160/**
161 * Default implementation.
162 */
163ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetUint16_tIfEmptyImpl(ESR_SessionType* self,
164    const LCHAR* name,
165    asr_uint16_t value);
166/**
167 * Default implementation.
168 */
169ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetSize_tIfEmptyImpl(ESR_SessionType* self,
170    const LCHAR* name,
171    size_t value);
172/**
173 * Default implementation.
174 */
175ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetFloatIfEmptyImpl(ESR_SessionType* self,
176    const LCHAR* name,
177    float value);
178/**
179 * Default implementation.
180 */
181ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetBoolIfEmptyImpl(ESR_SessionType* self,
182    const LCHAR* name,
183    ESR_BOOL value);
184/**
185 * Default implementation.
186 */
187ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeSetLCHARIfEmptyImpl(ESR_SessionType* self,
188    const LCHAR* name,
189    LCHAR* value);
190/**
191 * Default implementation.
192 */
193ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeRemovePropertyImpl(ESR_SessionType* self,
194    const LCHAR* name);
195/**
196 * Default implementation.
197 */
198ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeRemoveAndFreePropertyImpl(ESR_SessionType* self,
199    const LCHAR* name);
200/**
201 * Default implementation.
202 */
203ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeImportCommandLineImpl(ESR_SessionType* self,
204    int argc,
205    LCHAR* argv[]);
206/**
207 * Default implementation.
208 */
209ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeImportSessionImpl(ESR_SessionType* self,
210    ESR_SessionType* source);
211/**
212 * Default implementation.
213 */
214ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetSizeImpl(ESR_SessionType* self,
215    size_t* size);
216/**
217 * Default implementation.
218 */
219ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetKeyAtIndexImpl(ESR_SessionType* self,
220    size_t index,
221    LCHAR** key);
222/**
223 * Default implementation.
224 */
225ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeDestroyImpl(ESR_SessionType* self);
226/**
227 * Default implementation.
228 */
229ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeConvertToIntImpl(ESR_SessionType* self,
230    const LCHAR* key);
231/**
232 * Default implementation.
233 */
234ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeConvertToUint16_tImpl(ESR_SessionType* self,
235    const LCHAR* key);
236/**
237 * Default implementation.
238 */
239ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeConvertToSize_tImpl(ESR_SessionType* self,
240    const LCHAR* key);
241/**
242 * Default implementation.
243 */
244ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeConvertToFloatImpl(ESR_SessionType* self,
245    const LCHAR* key);
246/**
247 * Default implementation.
248 */
249ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeConvertToBoolImpl(ESR_SessionType* self,
250    const LCHAR* key);
251/**
252 * Default implementation.
253 */
254ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeGetPropertyTypeImpl(ESR_SessionType* self,
255    const LCHAR* name,
256    VariableTypes* type);
257/**
258 * Default implementation.
259 */
260ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeImportParFileImpl(ESR_SessionType* self,
261    const LCHAR* filename);
262
263/**
264 * Default implementation.
265 */
266ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeAddListenerImpl(ESR_SessionType* self,
267    ESR_SessionTypeListenerPair* listener);
268
269/**
270 * Default implementation.
271 */
272ESR_SHARED_API ESR_ReturnCode ESR_SessionTypeRemoveListenerImpl(ESR_SessionType* self,
273    ESR_SessionTypeListenerPair* listener);
274
275#endif /* __ESR_SESSIONTYPEIMPL_H */
276