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