14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * SessionTypeImpl.c * 34a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 44a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Copyright 2007, 2008 Nuance Communciations, Inc. * 54a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 64a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the 'License'); * 74a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * you may not use this file except in compliance with the License. * 84a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 94a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * You may obtain a copy of the License at * 104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 * 114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Unless required by applicable law or agreed to in writing, software * 134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * distributed under the License is distributed on an 'AS IS' BASIS, * 144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * 154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * See the License for the specific language governing permissions and * 164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * limitations under the License. * 174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * * 184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *---------------------------------------------------------------------------*/ 194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SessionType.h" 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SessionTypeImpl.h" 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "HashMap.h" 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "IntArrayList.h" 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "LCHAR.h" 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "lstring.h" 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "passert.h" 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pendian.h" 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PFile.h" 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "PFileSystem.h" 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "plog.h" 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pmemory.h" 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pstdio.h" 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "string.h" 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "ESR_SessionTypeListener.h" 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MTAG NULL 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeCreate(ESR_SessionType** self) 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionType* Interface; 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (self == NULL) 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface = NEW(ESR_SessionType, MTAG); 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (Interface == NULL) 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = NEW(ESR_SessionTypeData, MTAG); 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (data == NULL) 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->addListener = &ESR_SessionTypeAddListenerImpl; 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->contains = &ESR_SessionTypeContainsImpl; 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->convertToBool = &ESR_SessionTypeConvertToBoolImpl; 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->convertToFloat = &ESR_SessionTypeConvertToFloatImpl; 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->convertToInt = &ESR_SessionTypeConvertToIntImpl; 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->convertToUint16_t = &ESR_SessionTypeConvertToUint16_tImpl; 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->convertToSize_t = &ESR_SessionTypeConvertToSize_tImpl; 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->destroy = &ESR_SessionTypeDestroyImpl; 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getBool = &ESR_SessionTypeGetBoolImpl; 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getFloat = &ESR_SessionTypeGetFloatImpl; 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getInt = &ESR_SessionTypeGetIntImpl; 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getUint16_t = &ESR_SessionTypeGetUint16_tImpl; 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getKeyAtIndex = &ESR_SessionTypeGetKeyAtIndexImpl; 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getLCHAR = &ESR_SessionTypeGetLCHARImpl; 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getProperty = &ESR_SessionTypeGetPropertyImpl; 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getPropertyType = &ESR_SessionTypeGetPropertyTypeImpl; 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getSize = &ESR_SessionTypeGetSizeImpl; 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->getSize_t = &ESR_SessionTypeGetSize_tImpl; 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->importCommandLine = &ESR_SessionTypeImportCommandLineImpl; 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->importParFile = &ESR_SessionTypeImportParFileImpl; 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->removeProperty = &ESR_SessionTypeRemovePropertyImpl; 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->removeAndFreeProperty = &ESR_SessionTypeRemoveAndFreePropertyImpl; 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setBool = &ESR_SessionTypeSetBoolImpl; 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setBoolIfEmpty = &ESR_SessionTypeSetBoolIfEmptyImpl; 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setFloat = &ESR_SessionTypeSetFloatImpl; 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setFloatIfEmpty = &ESR_SessionTypeSetFloatIfEmptyImpl; 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setInt = &ESR_SessionTypeSetIntImpl; 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setIntIfEmpty = &ESR_SessionTypeSetIntIfEmptyImpl; 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setUint16_t = &ESR_SessionTypeSetUint16_tImpl; 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setUint16_tIfEmpty = &ESR_SessionTypeSetUint16_tIfEmptyImpl; 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setLCHAR = &ESR_SessionTypeSetLCHARImpl; 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setLCHARIfEmpty = &ESR_SessionTypeSetLCHARIfEmptyImpl; 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setProperty = &ESR_SessionTypeSetPropertyImpl; 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setSize_t = &ESR_SessionTypeSetSize_tImpl; 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->setSize_tIfEmpty = &ESR_SessionTypeSetSize_tIfEmptyImpl; 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->removeListener = &ESR_SessionTypeRemoveListenerImpl; 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->data = data; 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data->value = NULL; 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data->listeners = NULL; 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapCreate(&data->value)); 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, ArrayListCreate(&data->listeners)); 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *self = Interface; 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Interface->destroy(Interface); 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Because there are no functions to set and get int size_t parameters and because most if not 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * all int parameters should be size_t anyway, I am adding code to allow size_t and int parameters 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * to be considered equal. Besides, this check is kind of overkill anyway. SteveR 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetPropertyImpl(ESR_SessionType* self, 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, void** value, 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes type) 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ( pair->type != type) && ( ( ( pair->type != TYPES_INT ) && ( type != TYPES_SIZE_T ) ) || 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ( ( type != TYPES_INT ) && ( pair->type != TYPES_SIZE_T ) ) ) ) 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), type, pair->type); 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *value = pair->value; 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetIntImpl(ESR_SessionType* self, 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, int* value) 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ( pair->type != TYPES_INT ) && ( pair->type != TYPES_SIZE_T ) ) 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), TYPES_INT, pair->type); 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *value = *((int*) pair->value); 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetUint16_tImpl(ESR_SessionType* self, 1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, asr_uint16_t* value) 1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair->type != TYPES_UINT16_T) 1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), TYPES_UINT16_T, pair->type); 1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *value = *((asr_uint16_t*) pair->value); 1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetSize_tImpl(ESR_SessionType* self, 1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, 1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t* value) 1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapGet(data->value, name, (void **)&pair)); 1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( ( pair->type != TYPES_INT ) && ( pair->type != TYPES_SIZE_T ) ) 1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), TYPES_SIZE_T, pair->type); 1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *value = *((size_t*) pair->value); 1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetFloatImpl(ESR_SessionType* self, 2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, float* value) 2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 2114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair->type != TYPES_FLOAT) 2124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), TYPES_FLOAT, pair->type); 2144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 2154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *value = *((float*) pair->value); 2174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 2184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 2194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 2204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 2214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetBoolImpl(ESR_SessionType* self, 2234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, ESR_BOOL* value) 2244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 2254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 2264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 2274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 2284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 2304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 2314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair->type != TYPES_BOOL) 2324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), TYPES_BOOL, pair->type); 2344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 2354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *value = *((ESR_BOOL*) pair->value); 2374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 2384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 2394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 2404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 2414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetLCHARImpl(ESR_SessionType* self, 2434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, 2444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value, size_t* len) 2454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 2464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* lValue; 2474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 2484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 2494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 2504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (name == NULL || value == NULL || len == NULL) 2524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_ARGUMENT; 2534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 2544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 2564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair->type != TYPES_PLCHAR) 2574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_INVALID_RESULT_TYPE: [got=%d, expected=%d]"), TYPES_PLCHAR, pair->type); 2594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_RESULT_TYPE; 2604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project lValue = (LCHAR*) pair->value; 2624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (LSTRLEN(pair->value) + 1 > *len) 2634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *len = LSTRLEN(lValue) + 1; 2654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_BUFFER_OVERFLOW; 2664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCPY(value, lValue); 2684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 2694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 2704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 2714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 2724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeContainsImpl(ESR_SessionType* self, 2744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, ESR_BOOL* exists) 2754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 2764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 2774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return HashMapContainsKey(data->value, name, exists); 2794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 2804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic ESR_ReturnCode firePropertyChanged(ESR_SessionType* self, const LCHAR* name, 2824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const void* oldValue, const void* newValue, 2834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project enum VariableTypes_t type) 2844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 2854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 2864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ArrayList* list = data->listeners; 2874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t size, i; 2884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeListenerPair* listener; 2894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 2904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, list->getSize(list, &size)); 2924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (i = 0; i < size; ++i) 2934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 2944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, list->get(list, i, (void **)&listener)); 2954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, listener->listener->propertyChanged(listener->listener, name, oldValue, newValue, type, listener->data)); 2964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 2974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 2984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 2994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 3004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 3014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetPropertyImpl(ESR_SessionType* self, 3034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, void* value, 3044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes type) 3054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 3064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 3074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair = NULL; 3084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 3094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 3104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapContainsKey(data->value, name, &exists)); 3124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ( exists ) 3134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* We allow change of parameters through the recognizer and we rely on the recognizer to do 3154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * all of the needed validation. SteveR 3164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* Deleting the old entry seems stupid, but it's the only way to prevent a memory leak, 3184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * since the old data is not returned when you add the new data. SteveR 3194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG ( rc, ESR_SessionTypeRemoveAndFreePropertyImpl ( self, name ) ); 3214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pair = NEW(ESR_SessionPair, MTAG); 3234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair == NULL) 3244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 3264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 3274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pair->value = value; 3294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pair->type = type; 3304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, firePropertyChanged(self, name, NULL, value, type)); 3324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapPut(data->value, name, pair)); 3334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 3344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 3354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* The cleanup potentially leaks memory which could be cleard up with FREE ( pair->value ); 3364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * but you can't guarantee that the value was allocated. A leak is better than a crash. SteveR 3374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 3384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(pair); 3394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 3404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 3414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetIntImpl(ESR_SessionType* self, 3434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, int value) 3444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 3454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 3464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int* clone; 3474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 3494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clone = MALLOC(sizeof(int), MTAG); 3504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (clone == NULL) 3514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 3534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 3544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *clone = value; 3574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setProperty(self, name, clone, TYPES_INT); 3584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 3594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetUint16_tImpl(ESR_SessionType* self, 3614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, asr_uint16_t value) 3624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 3634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 3644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project asr_uint16_t* clone; 3654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 3674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clone = MALLOC(sizeof(asr_uint16_t), MTAG); 3684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (clone == NULL) 3694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 3714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 3724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *clone = value; 3754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setProperty(self, name, clone, TYPES_UINT16_T); 3764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 3774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetSize_tImpl(ESR_SessionType* self, 3794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, size_t value) 3804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 3814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 3824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int* clone; 3834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 3854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clone = MALLOC(sizeof(size_t), MTAG); 3864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (clone == NULL) 3874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 3884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 3894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 3904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 3914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *clone = value; 3934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setProperty(self, name, clone, TYPES_SIZE_T); 3944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 3954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 3964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetFloatImpl(ESR_SessionType* self, 3974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, float value) 3984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 3994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 4004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project float* clone; 4014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 4034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clone = MALLOC(sizeof(float), MTAG); 4044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (clone == NULL) 4054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 4074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 4084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *clone = value; 4114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setProperty(self, name, clone, TYPES_FLOAT); 4124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 4134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetBoolImpl(ESR_SessionType* self, 4154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, ESR_BOOL value) 4164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 4174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 4184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL* clone; 4194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 4214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clone = MALLOC(sizeof(ESR_BOOL), MTAG); 4224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (clone == NULL) 4234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 4254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 4264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *clone = value; 4294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setProperty(self, name, clone, TYPES_BOOL); 4304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 4314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetLCHARImpl(ESR_SessionType* self, 4334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, LCHAR* value) 4344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 4354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data; 4364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* clone; 4374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data = self->data; 4394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project clone = MALLOC(sizeof(LCHAR) * (LSTRLEN(value) + 1), MTAG); 4404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (clone == NULL) 4414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 4424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 4434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 4444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 4454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCPY(clone, value); 4474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setProperty(self, name, clone, TYPES_PLCHAR); 4484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 4494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetIntIfEmptyImpl(ESR_SessionType* self, 4514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, int value) 4524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 4534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 4544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->contains(self, name, &exists)); 4574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 4584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 4594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setInt(self, name, value); 4604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 4614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 4624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 4634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetUint16_tIfEmptyImpl(ESR_SessionType* self, 4654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, asr_uint16_t value) 4664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 4674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 4684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->contains(self, name, &exists)); 4714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 4724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 4734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setInt(self, name, value); 4744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 4754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 4764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 4774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetSize_tIfEmptyImpl(ESR_SessionType* self, 4794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, size_t value) 4804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 4814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 4824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->contains(self, name, &exists)); 4854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 4864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 4874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setSize_t(self, name, value); 4884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 4894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 4904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 4914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetFloatIfEmptyImpl(ESR_SessionType* self, 4934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, float value) 4944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 4954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 4964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 4974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 4984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->contains(self, name, &exists)); 4994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 5004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 5014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setFloat(self, name, value); 5024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 5034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 5044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 5054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetBoolIfEmptyImpl(ESR_SessionType* self, 5074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, ESR_BOOL value) 5084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 5094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 5104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 5114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->contains(self, name, &exists)); 5134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 5144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 5154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setBool(self, name, value); 5164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 5174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 5184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 5194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeSetLCHARIfEmptyImpl(ESR_SessionType* self, 5214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, LCHAR* value) 5224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 5234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 5244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 5254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->contains(self, name, &exists)); 5274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 5284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 5294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return self->setLCHAR(self, name, value); 5304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 5314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 5324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 5334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeRemovePropertyImpl(ESR_SessionType* self, 5354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name) 5364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 5374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 5384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 5394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 5404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 5424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, firePropertyChanged(self, name, pair->value, NULL, pair->type)); 5434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapRemove(data->value, name)); 5444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(pair); 5454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 5464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 5474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 5484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 5494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeRemoveAndFreePropertyImpl(ESR_SessionType* self, 5514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name) 5524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 5534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 5544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 5554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 5564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair temp; 5574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project IntArrayList* intList; 5584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, data->value->get(data->value, name, (void **)&pair)); 5604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project temp = *pair; 5614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->removeProperty(self, name)); 5624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (temp.value) 5634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (temp.type == TYPES_INTARRAYLIST) 5654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project intList = temp.value; 5674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project intList->destroy(intList); 5684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 5704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(temp.value); 5714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 5734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 5744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 5754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 5764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeImportCommandLineImpl(ESR_SessionType* self, 5784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int argc, LCHAR* argv[]) 5794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 5804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char* key = NULL; 5814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project char* value = NULL; 5824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes type; 5834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 5844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 5854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project while (--argc > 0 && **++argv) 5864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (**argv != '-') 5884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* got value */ 5904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (key == NULL) 5914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* but we don't have any key to associate it with */ 5934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pfprintf(PSTDERR, "Options must be prefixed by '-'%s\n", *argv); 5944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 5954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 5964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 5974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = self->getPropertyType(self, key, &type); 5984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc == ESR_SUCCESS) 5994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->getProperty(self, key, (void **)&value, type)); 6014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeProperty(self, key)); 6024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 6034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = NULL; 6044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (rc != ESR_NO_MATCH_ERROR) 6064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 6084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 6094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = MALLOC(sizeof(LCHAR) * (strlen(*argv) + 1), MTAG); 6114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value == NULL) 6124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 6144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 6154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 6164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCPY(value, *argv); 6184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, value, TYPES_PLCHAR)); 6194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(key); 6204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project key = NULL; 6214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = NULL; 6224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 6254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* got key */ 6274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (key != NULL) 6284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* But we already have a key without a value, so set the old key's value to "" */ 6304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = self->getPropertyType(self, key, &type); 6314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc == ESR_SUCCESS) 6324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->getProperty(self, key, (void **)&value, type)); 6344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeProperty(self, key)); 6354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 6364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = NULL; 6374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (rc != ESR_NO_MATCH_ERROR) 6394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 6414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 6424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = MALLOC(sizeof(LCHAR) + 1, MTAG); 6444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project strcpy(value, ""); 6454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, value, TYPES_PLCHAR)); 6464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(key); 6474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = NULL; 6484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project key = MALLOC(sizeof(LCHAR) * (LSTRLEN("cmdline.") + LSTRLEN(*argv) + 1), MTAG); 6504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (key == NULL) 6514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 6524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 6534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("ESR_OUT_OF_MEMORY")); 6544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 6554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCPY(key, "cmdline."); 6574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCAT(key, *argv + 1); 6584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 6604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 6614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 6624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (key != NULL) 6634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(key); 6644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value != NULL) 6654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 6664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 6674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 6684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 6694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetSizeImpl(ESR_SessionType* self, size_t* size) 6704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 6714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 6724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 6734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 6744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGetSize(data->value, size)); 6754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 6764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 6774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 6784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 6794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 6804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetKeyAtIndexImpl(ESR_SessionType* self, 6814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t index, LCHAR** key) 6824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 6834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 6844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 6854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 6864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGetKeyAtIndex(data->value, index, key)); 6874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 6884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 6894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 6904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 6914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 6924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeConvertToIntImpl(ESR_SessionType* self, 6934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* key) 6944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 6954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value; 6964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int *newValue = NULL; 6974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 6984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 6994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->getProperty(self, key, (void **)&value, TYPES_PLCHAR)); 7004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value == NULL) 7014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project newValue = MALLOC(sizeof(long), MTAG); 7034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue == NULL) 7044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 7054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 7064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 7074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 7084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtoi(value, newValue, 10)); 7094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, newValue, TYPES_INT)); 7104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 7114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 7134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue != NULL) 7144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 7154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 7164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 7174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeConvertToUint16_tImpl(ESR_SessionType* self, 7194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* key) 7204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 7214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value; 7224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int *newValue = NULL; 7234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 7244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->getProperty(self, key, (void **)&value, TYPES_PLCHAR)); 7264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value == NULL) 7274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project newValue = MALLOC(sizeof(long), MTAG); 7294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue == NULL) 7304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 7314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 7324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 7334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 7344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtoi(value, newValue, 10)); 7354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, newValue, TYPES_UINT16_T)); 7364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 7374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 7394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue != NULL) 7404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 7414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 7424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 7434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeConvertToSize_tImpl(ESR_SessionType* self, 7454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* key) 7464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 7474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value; 7484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t* newValue = NULL; 7494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 7504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->getProperty(self, key, (void **)&value, TYPES_PLCHAR)); 7524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value == NULL) 7534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project newValue = MALLOC(sizeof(size_t), MTAG); 7554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue == NULL) 7564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 7574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 7584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 7594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 760b3adea6f471d03c5bd728725adc7ca1cea89edfdMarcus Oakland CHKLOG(rc, lstrtosize_t(value, newValue, 10)); 7614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, newValue, TYPES_SIZE_T)); 7624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 7634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 7654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue != NULL) 7664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 7674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 7684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 7694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeConvertToFloatImpl(ESR_SessionType* self, 7714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* key) 7724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 7734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value; 7744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project float *newValue = NULL; 7754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 7764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->getProperty(self, key, (void **)&value, TYPES_PLCHAR)); 7784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value == NULL) 7794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project newValue = MALLOC(sizeof(double), MTAG); 7814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue == NULL) 7824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 7834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 7844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 7854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 7864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtof(value, newValue)); 7874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, newValue, TYPES_FLOAT)); 7884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 7894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 7904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 7914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue != NULL) 7924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 7934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 7944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 7954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 7964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeConvertToBoolImpl(ESR_SessionType* self, 7974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* key) 7984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 7994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value; 8004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL *newValue = NULL; 8014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 8024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->getProperty(self, key, (void **)&value, TYPES_PLCHAR)); 8044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value == NULL) 8054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 8064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project newValue = MALLOC(sizeof(ESR_BOOL), MTAG); 8074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue == NULL) 8084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OUT_OF_MEMORY; 8104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 8114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 8124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = lstrtob(value, newValue); 8134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 8144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 8164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 8174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 8184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = self->setProperty(self, key, newValue, TYPES_BOOL); 8194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 8204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 8224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 8234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 8244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 8254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 8264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 8274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (newValue != NULL) 8284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(newValue); 8294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 8304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 8314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 8334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Imports file containing [key, value] pairs into session. 8344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 8354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self ESR_SessionType handle 8364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param filename File to read session from 8374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param addMapping Function used to map keys to their type and add them to the session 8384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param data Data used by the mapping function 8394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 8404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic ESR_ReturnCode importKeyValueFile(ESR_SessionType* self, 8414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* filename, 8424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode(*addMapping)(ESR_SessionType* self, const LCHAR* key, LCHAR* value, void* data), 8434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project void* data) 8444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 8454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const size_t LINE_SIZE = 512; 8464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR key[512]; 8474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR buffer[512]; 8484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* value; 8494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* ending; 8504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* line; 8514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PFile* file = NULL; 8524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL lineSpan = ESR_FALSE; 8534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LString* valueBuffer = NULL; 8544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc = ESR_SUCCESS; 8554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (filename == NULL) 8574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_ARGUMENT; 8584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project file = pfopen ( filename, L("r") ); 8604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/* CHKLOG(rc, PFileSystemCreatePFile(filename, ESR_TRUE, &file)); 8614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, PFileOpen(file, L("r")));*/ 8624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (file == NULL) 8644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR msg[P_PATH_MAX + 30]; 8664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR cwd[P_PATH_MAX]; 8674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t len; 8684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project len = P_PATH_MAX; 8704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, pf_get_cwd (cwd, &len)); 8714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project psprintf(msg, L("ESR_OPEN_FILE_ERROR(filename=%s, cwd=%s)"), filename, cwd); 8724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_OPEN_ERROR; 8734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(msg); 8744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 8754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 8764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = LStringCreate(&valueBuffer); 8784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 8794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 8804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 8814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project line = buffer; 8824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project while (ESR_TRUE) 8834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project line = pfgets(line, LINE_SIZE, file); 8854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (line == NULL) 8864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pfeof(file)) 8884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 8894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_READ_ERROR; 8904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 8914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 8924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 8934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (LSTRLEN(line) == LINE_SIZE) 8944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 8954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(L("%s: line surpasses %d character limit: '%s'"), filename, line); 8964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project continue; 8974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 8984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project lstrtrim(line); 8994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (LSTRLEN(line) == 0 || line[0] == '#') 9004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project continue; 9014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 9024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (!lineSpan) 9034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) goto CLEANUP; 9054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 9064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* locate the key and value pair */ 9074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ending = LSTRCHR(line, '='); 9084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (ending == NULL) 9094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project fprintf(stderr, "Missing equal sign on line '%s'\n", line); 9114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project continue; 9124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *ending = L('\0'); 9144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = ending + 1; 9154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 9174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = line; 9184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 9194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Optionally use ';' to denote end of value */ 9204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ending = LSTRCHR(value, L(';')); 9214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (ending != NULL) 9224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *ending = L('\0'); 9234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 9244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ending = LSTRCHR(value, L('\n')); 9264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (ending != NULL) 9274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *ending = L('\0'); 9284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (!lineSpan) 9304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LSTRCPY(key, line); 9324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project lstrtrim(key); 9334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (LSTRLEN(value) == 0) 9354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pfprintf(PSTDERR, L("Missing value for '%s'\n"), key); 9374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project continue; 9384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project lstrtrim(value); 9404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if ((ending = LSTRCHR(value, '\\')) == (value + LSTRLEN(value) - 1)) 9414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* found '\\' at end of line which means data will span to the next line */ 9434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project lineSpan = ESR_TRUE; 9444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *ending = L('\0'); 9454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 9474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project lineSpan = ESR_FALSE; 9484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = LStringAppend(valueBuffer, value); 9494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 9504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 9524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 9534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (!lineSpan) 9554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = LStringToLCHAR(valueBuffer, &value); 9574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project valueBuffer = NULL; 9584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 9594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 9614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 9624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = addMapping(self, key, value, data); 9644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (value != NULL) 9654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(value); 9674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project value = NULL; 9684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 9704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 9724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 9734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = LStringCreate(&valueBuffer); 9754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 9764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 9784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 9794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 9834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pferror(file)) 9844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_READ_ERROR; 9864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 9874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 9884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pfclose(file) != 0) 9904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 9914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = ESR_CLOSE_ERROR; 9924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogError(ESR_rc2str(rc)); 9934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 9944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 9954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (valueBuffer != NULL) 9964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LStringDestroy(valueBuffer); 9974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 9984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 9994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (file != NULL) 10004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pfclose(file); 10014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (valueBuffer != NULL) 10024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LStringDestroy(valueBuffer); 10034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 10044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 10054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 10074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Appends a collection of integers stored in string format to an IntArrayList. 10084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 10094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self ESR_SessionType handle 10104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param text Text containing integers 10114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param list List to be populated 10124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 10134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic ESR_ReturnCode parseIntList(ESR_SessionType* self, 10144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project LCHAR* text, IntArrayList* list) 10154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 10164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t size, pos, beginning; 10174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int value; 10184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 10194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size = LSTRLEN(text); 10214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project pos = 0; 10224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project while (ESR_TRUE) 10234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 10244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Scan for beginning of next token */ 10254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (; pos < size && LISSPACE(text[pos]); ++pos); 10264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pos >= size) 10284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 10294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Reached end of string while looking for beginning of next token */ 10304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 10314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 10324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project beginning = pos; 10334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Scan for ending of current token */ 10354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (; pos < size && !LISSPACE(text[pos]); ++pos); 10364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project text[pos] = L('\0'); 10374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtoi(text + beginning, &value, 10)); 10384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, IntArrayListAdd(list, value)); 10394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ++pos; 10404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 10414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 10424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 10434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 10444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 10454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeGetPropertyTypeImpl(ESR_SessionType* self, 10474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* name, VariableTypes* type) 10484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 10494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 10504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 10514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 10524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, HashMapGet(data->value, name, (void **)&pair)); 10544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *type = pair->type; 10554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 10564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 10574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 10584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 10594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/** 10614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Maps key -> type for PAR files. 10624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * 10634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param self ESR_Session handle 10644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param key Key name 10654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * @param value The value 10664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project */ 10674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Projectstatic ESR_ReturnCode addParMapping(ESR_SessionType* self, 10684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* key, LCHAR* value, void* data) 10694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 10704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project IntArrayList* iList; 10714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 10724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project HashMap* map; 10734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes* type; 10744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project int iValue; 10754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t size_tValue; 10764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project float fValue; 10774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL bValue; 10784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_BOOL exists; 10794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 10804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project map = (HashMap*) data; 10814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = HashMapGet(data, key, (void **)&type); 10824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc == ESR_NO_MATCH_ERROR) 10834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 10844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* If type is unknown, assume LCHAR* */ 10854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project PLogMessage(L("Unknown parfile key '%s'"), key); 10864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setLCHAR(self, key, value)); 10874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 10884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else if (rc == ESR_SUCCESS) 10894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 10904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project switch (*type) 10914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 10924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_INT: 10934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtoi(value, &iValue, 10)); 10944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 10954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 10964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeAndFreeProperty(self, key)); 10974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setInt(self, key, iValue)); 10984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 10994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_UINT16_T: 1100b3adea6f471d03c5bd728725adc7ca1cea89edfdMarcus Oakland CHKLOG(rc, lstrtosize_t(value, &size_tValue, 10)); 11014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project passert(size_tValue >= UINT16_TMIN && size_tValue <= UINT16_TMAX); 11024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 11034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 11044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeAndFreeProperty(self, key)); 11054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setUint16_t(self, key, (asr_uint16_t) size_tValue)); 11064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 11074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_SIZE_T: 1108b3adea6f471d03c5bd728725adc7ca1cea89edfdMarcus Oakland CHKLOG(rc, lstrtosize_t(value, &size_tValue, 10)); 11094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 11104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 11114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeAndFreeProperty(self, key)); 11124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setSize_t(self, key, size_tValue)); 11134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 11144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_FLOAT: 11154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtof(value, &fValue)); 11164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 11174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 11184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeAndFreeProperty(self, key)); 11194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setFloat(self, key, fValue)); 11204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 11214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_BOOL: 11224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, lstrtob(value, &bValue)); 11234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 11244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 11254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeAndFreeProperty(self, key)); 11264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setBool(self, key, bValue)); 11274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 11284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_INTARRAYLIST: 11294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 11304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 11314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 11324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->getProperty(self, key, (void **)&iList, TYPES_INTARRAYLIST)); 11334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeProperty(self, key)); 11344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, iList->destroy(iList)); 11354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 11364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, IntArrayListCreate(&iList)); 11374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parseIntList(self, value, iList)); 11384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setProperty(self, key, iList, TYPES_INTARRAYLIST)); 11394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 11404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project default: 11414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project passert(0); /* Unknown variable type. Assuming LCHAR* */ 11424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project case TYPES_PLCHAR: 11434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->contains(self, key, &exists)); 11444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (exists) 11454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->removeAndFreeProperty(self, key)); 11464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, self->setLCHAR(self, key, value)); 11474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 11484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 11494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 11504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 11514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 11524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 11534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 11544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 11554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeImportParFileImpl(ESR_SessionType* self, 11564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project const LCHAR* filename) 11574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 11584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 11594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project HashMap* parameterList; 11604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes Int = TYPES_INT; 11614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes UInt16_t = TYPES_UINT16_T; 11624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes Float = TYPES_FLOAT; 11634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes Bool = TYPES_BOOL; 11644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes IntArrayList = TYPES_INTARRAYLIST; 11654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes PLChar = TYPES_PLCHAR; 11664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project VariableTypes Size_t = TYPES_SIZE_T; 11674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 11684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Create [key, type] lookup table */ 11694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapCreate(¶meterList)); 11704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 11714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.arbfile", &PLChar)); 11724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.bgsniff", &Size_t)); 11734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.channel", &PLChar)); 11744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.datapath", &PLChar)); 11754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.DataCaptureDirectory", &PLChar)); 11764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.detail_res", &PLChar)); 11774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.lda", &PLChar)); 11784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.modelfiles", &PLChar)); 11794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.modelfiles11", &PLChar)); 11804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.modelfiles8", &PLChar)); 11814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.lda11", &PLChar)); 11824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.lda8", &PLChar)); 11834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.results", &PLChar)); 11844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.rules", &PLChar)); 11854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.tcp", &PLChar)); 11864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.multable", &PLChar)); 11874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.parfile", &PLChar)); 11884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.vocabulary", &PLChar)); 11894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.use_image", &Int)); 11904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.semproc_verbose", &Bool)); 11914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.nametagPath", &PLChar)); 11924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 11934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Beginning of speech detection stuff */ 11944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.bgsniff_min", &Size_t)); 11954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.silence_duration_in_frames", &Size_t)); 11964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.end_of_utterance_hold_off_in_frames", &Size_t)); 11974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "cmdline.gatedmode", &Bool)); 11984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 11994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* new param from SREC that did not exist in CREC */ 12004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Recognizer.utterance_timeout", &Size_t)); 12014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Recognizer.osi_log_level", &Size_t)); 12024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.voice_enroll.bufsz_kB", &Size_t)); 12034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.voice_enroll.eos_comfort_frames", &Size_t)); 12044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.voice_enroll.bos_comfort_frames", &Size_t)); 12054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.gdiff.one_nbest", &PLChar)); 12074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.gdiff.many_nbest", &PLChar)); 12084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.sd.one_nbest", &PLChar)); 12094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.sd.many_nbest", &PLChar)); 12104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.sd13.one_nbest", &PLChar)); 12114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.sd13.many_nbest", &PLChar)); 12124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.spf.one_nbest", &PLChar)); 12134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.spf.many_nbest", &PLChar)); 12144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.abs.one_nbest", &PLChar)); 12154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.abs.many_nbest", &PLChar)); 12164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.gdiffpf.one_nbest", &PLChar)); 12174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "SREC.Confidence.sigmoid_param.gdiffpf.many_nbest", &PLChar)); 12184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.ParVersion", &Float)); 12204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.useCREClogger", &Int)); 12214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.dimen", &Int)); 12224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.skip", &Int)); 12234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.stay", &Int)); 12244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.durscale", &Int)); 12254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.minvar", &Int)); 12264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.maxvar", &Int)); 12274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.frame_period", &Int)); 12284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Acoustic.load_models", &PLChar)); 12294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.mel_dim", &Int)); 12304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.samplerate", &Size_t)); 12314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.premel", &Float)); 12324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.lowcut", &Int)); 12334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.highcut", &Int)); 12344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.window_factor", &Float)); 12354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.offset", &Float)); 12364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.ddmel", &Bool)); 12374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.peakdecayup", &Float)); 12384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.peakdecaydown", &Float)); 12394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.do_skip_even_frames", &Bool)); 12404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.do_smooth_c0", &Bool)); 12414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.melA", &IntArrayList)); 12424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.melB", &IntArrayList)); 12434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.dmelA", &IntArrayList)); 12444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.dmelB", &IntArrayList)); 12454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.ddmelA", &IntArrayList)); 12464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.ddmelB", &IntArrayList)); 12474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* new for S2G 3 (read from parfile instead of hardcoding) */ 12494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.cmn", &IntArrayList)); 12504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.cmn8", &IntArrayList)); 12514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.cmn11", &IntArrayList)); 12524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.tmn", &IntArrayList)); 12534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.adjust", &IntArrayList)); 12544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.debug", &Bool)); 12554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.sbindex", &IntArrayList)); 12564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.forget_factor", &IntArrayList)); 12574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.cache_resolution", &IntArrayList)); 12584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.inutt.forget_factor2", &IntArrayList)); 12594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.inutt.disable_after", &IntArrayList)); 12604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.inutt.enable_after", &IntArrayList)); 12614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* zwz */ 12644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.swicms.do_VN", &Bool)); 12654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.speech_detect", &Int)); 12674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.ambient_within", &Int)); 12684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.speech_above", &Int)); 12694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.start_windback", &Int)); 12704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Frontend.utterance_allowance", &Int)); 12714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 12734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.dimen", &Int)); 12744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.whole_dimen", &Int)); 12754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.mix_score_scale", &Float)); 12764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.start", &Int)); 12774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.chelt_imelda", &Bool)); 12784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.vfrlimit", &Bool)); 12794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.vfrthresh", &Bool)); 12804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.mix_score_scale", &Float)); 12814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.imelda_scale", &Float)); 12824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.uni_score_scale", &Float)); 12834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.uni_score_offset", &Float)); 12844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.forget_speech", &Int)); 12854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.forget_background", &Int)); 12864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.rel_low", &Int)); 12874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.rel_high", &Int)); 12884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.gap_period", &Int)); 12894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.click_period", &Int)); 12904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.breath_period", &Int)); 12914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.extend_annotation", &Int)); 12924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.min_initial_quiet_frames", &Int)); 12934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.min_annotation_frames", &Int)); 12944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.min_initial_quiet_frames", &Int)); 12954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.max_annotation_frames", &Int)); 12964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.delete_leading_segments", &Int)); 12974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.leading_segment_min_frames", &Int)); 12984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.leading_segment_max_frames", &Int)); 12994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.leading_segment_min_silence_gap_frames", &Int)); 13004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.leading_segment_accept_if_not_found", &Int)); 13014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.snr_holdoff", &Int)); 13024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.min_acceptable_snr", &Int)); 13034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.param", &Int)); 13044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.beep_size", &Int)); 13054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.beep_threshold", &Int)); 13064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.partial_distance_dim", &Int)); 13074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.partial_distance_threshold", &Int)); 13084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.partial_distance_offset", &Int)); 13094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Pattern.global_model_means", &IntArrayList)); 13104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.NBest", &Int)); 13124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.reject", &Int)); 13134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.often", &Int)); 13144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.partial_results", &Bool)); 13154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.wordpen", &Int)); 13164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.viterbi_prune_thresh", &Int)); 13174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_hmm_tokens", &Int)); 13184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_fsmnode_tokens", &Int)); 13194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_word_tokens", &Int)); 13204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_altword_tokens", &Int)); 13214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.num_wordends_per_frame", &Int)); 13224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_fsm_nodes", &Int)); 13234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_fsm_arcs", &Int)); 13244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_searches", &Int)); 13254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.terminal_timeout", &Int)); 13264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.optional_terminal_timeout", &Int)); 13274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.non_terminal_timeout", &Int)); 13284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.eou_threshold", &Int)); 13294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_frames", &Int)); 13304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "CREC.Recognizer.max_model_states", &Int)); 13314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "thread.priority", &UInt16_t)); 13324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* for G2P */ 13334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "G2P.Available", &Bool)); 13344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "G2P.Data", &PLChar)); 13354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "G2P.Dictionary", &PLChar)); 13364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* Enable Get Waveform */ 13374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, parameterList->put(parameterList, "enableGetWaveform", &Bool)); 13384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project rc = importKeyValueFile(self, filename, addParMapping, parameterList); 13404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (rc != ESR_SUCCESS) 13414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project goto CLEANUP; 13424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapDestroy(parameterList)); 13434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 13444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 13454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project HashMapDestroy(parameterList); 13464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 13474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 13484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeAddListenerImpl(ESR_SessionType* self, ESR_SessionTypeListenerPair* listener) 13504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 13514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 13524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ArrayList* listeners = data->listeners; 13534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 13544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, listeners->add(listeners, listener)); 13564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 13574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 13584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 13594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 13604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeRemoveListenerImpl(ESR_SessionType* self, ESR_SessionTypeListenerPair* listener) 13624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 13634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 13644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ArrayList* listeners = data->listeners; 13654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 13664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, listeners->remove(listeners, listener)); 13684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 13694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 13704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 13714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 13724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode ESR_SessionTypeDestroyImpl(ESR_SessionType* self) 13744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 13754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionTypeData* data = self->data; 13764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t hashSize; 13774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_SessionPair* pair; 13784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 13794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (data != NULL) 13814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 13824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (data->value != NULL) 13834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 13844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapGetSize(data->value, &hashSize)); 13854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project while (hashSize > 0) 13864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 13874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapGetValueAtIndex(data->value, 0, (void **)&pair)); 13884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 13894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair->value) 13904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 13914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (pair->type == TYPES_INTARRAYLIST) 13924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, IntArrayListDestroy((IntArrayList*) pair->value)); 13934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project else 13944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(pair->value); 13954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 13964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapRemoveAtIndex(data->value, 0)); 13974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project --hashSize; 13984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(pair); 13994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 14004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 14014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, HashMapDestroy(data->value)); 14024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data->value = NULL; 14034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 14044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (data->listeners != NULL) 14054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 14064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHKLOG(rc, data->listeners->destroy(data->listeners)); 14074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project data->listeners = NULL; 14084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 14094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(data); 14104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 14114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 14124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(self); 14134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 14144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 14154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 14164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1417