14a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project/*---------------------------------------------------------------------------* 24a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project * Int8ArrayListImpl.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#include "Int8ArrayList.h" 214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "Int8ArrayListImpl.h" 224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "pmemory.h" 234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#include "passert.h" 244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define MTAG NULL 264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project#define INITIAL_SIZE 32 274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayListCreate(Int8ArrayList** self) 304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl; 324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (self == NULL) 344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_ARGUMENT; 354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl = NEW(Int8ArrayListImpl, MTAG); 364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (impl == NULL) 374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.add = &Int8ArrayList_Add; 394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.contains = &Int8ArrayList_Contains; 404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.destroy = &Int8ArrayList_Destroy; 414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.get = &Int8ArrayList_Get; 424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.getSize = &Int8ArrayList_GetSize; 434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.remove = &Int8ArrayList_Remove; 444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.removeAll = &Int8ArrayList_RemoveAll; 454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.set = &Int8ArrayList_Set; 464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.toStaticArray = &Int8ArrayList_ToStaticArray; 474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->Interface.clone = &Int8ArrayList_Clone; 484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents = MALLOC((INITIAL_SIZE + 1) * sizeof(asr_int8_t), MTAG); 494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (impl->contents == NULL) 504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(impl); 524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->actualSize = INITIAL_SIZE; 554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->virtualSize = 0; 564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *self = (Int8ArrayList*) impl; 574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayListImport(asr_int8_t* value, Int8ArrayList** self) 614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl; 644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (self == NULL) 664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_INVALID_ARGUMENT; 674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, Int8ArrayListCreate(self)); 684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl = (Int8ArrayListImpl*) self; 694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents = value; 704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Add(Int8ArrayList* self, const asr_int8_t element) 764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (impl->virtualSize >= impl->actualSize) 804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* enlarge buffer */ 824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project asr_int8_t* temp = REALLOC(impl->contents, (impl->actualSize * 2 + 1) * sizeof(asr_int8_t)); 834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (temp == NULL) 844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_OUT_OF_MEMORY; 854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents = temp; 864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->actualSize *= 2; 874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents[impl->virtualSize] = element; 894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ++impl->virtualSize; 904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Remove(Int8ArrayList* self, const asr_int8_t element) 944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project asr_int8_t* contents = impl->contents; /* cache pointer */ 974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t virtualSize = impl->virtualSize; /* cache value */ 984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t i; 994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (i = 0; i < virtualSize; ++i) 1014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (contents[i] == element) 1034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project --virtualSize; 1054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project break; 1064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* shift remaining elements back */ 1094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (; i < virtualSize; ++i) 1104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project contents[i] = contents[i+1]; 1114a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1124a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->virtualSize = virtualSize; /* flush cache */ 1134a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (virtualSize <= impl->actualSize / 4) 1144a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1154a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project /* shrink buffer */ 1164a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents = REALLOC(contents, (impl->actualSize / 2 + 1) * sizeof(asr_int8_t)); 1174a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project passert(impl->contents != NULL); /* should never fail */ 1184a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->actualSize /= 2; 1194a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1204a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1214a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1224a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1234a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_RemoveAll(Int8ArrayList* self) 1244a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1254a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 1264a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1274a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->virtualSize = 0; 1284a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1294a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1304a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1314a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Contains(Int8ArrayList* self, const asr_int8_t element, ESR_BOOL* exists) 1324a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1334a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 1344a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t i; 1354a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t virtualSize = impl->virtualSize; /* cache value */ 1364a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project asr_int8_t* contents = impl->contents; /* cache value */ 1374a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1384a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (i = 0; i < virtualSize; ++i) 1394a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1404a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project if (contents[i] == element) 1414a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1424a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *exists = ESR_TRUE; 1434a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1444a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1454a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1464a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *exists = ESR_FALSE; 1474a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1484a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1494a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1504a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Get(Int8ArrayList* self, size_t index, asr_int8_t* element) 1514a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1524a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 1534a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1544a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project passert(index >= 0 && index <= impl->virtualSize); 1554a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *element = impl->contents[index]; 1564a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1574a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1584a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1594a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Set(Int8ArrayList* self, size_t index, const asr_int8_t element) 1604a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1614a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 1624a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1634a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project passert(index >= 0 && index <= impl->virtualSize); 1644a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents[index] = element; 1654a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1664a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1674a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1684a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_GetSize(Int8ArrayList* self, size_t* size) 1694a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1704a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 1714a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1724a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *size = impl->virtualSize; 1734a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1744a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1754a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1764a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_ToStaticArray(Int8ArrayList* self, asr_int8_t** newArray) 1774a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1784a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 1794a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1804a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project *newArray = impl->contents; 1814a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project impl->contents = NULL; /* prevent free() from deallocating buffer */ 1824a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return Int8ArrayList_Destroy(self); 1834a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 1844a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1854a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Clone(Int8ArrayList* self, Int8ArrayList* clone) 1864a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 1874a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project size_t size, i; 1884a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project asr_int8_t element; 1894a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project ESR_ReturnCode rc; 1904a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 1914a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, clone->removeAll(clone)); 1924a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->getSize(self, &size)); 1934a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project for (i = 0; i < size; ++i) 1944a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project { 1954a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, self->get(self, i, &element)); 1964a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project CHK(rc, clone->add(clone, element)); 1974a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project } 1984a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 1994a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectCLEANUP: 2004a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return rc; 2014a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 2024a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2034a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source ProjectESR_ReturnCode Int8ArrayList_Destroy(Int8ArrayList* self) 2044a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project{ 2054a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project Int8ArrayListImpl* impl = (Int8ArrayListImpl*) self; 2064a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project 2074a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(impl->contents); 2084a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project FREE(impl); 2094a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project return ESR_SUCCESS; 2104a68b3365c8c50aa93505e99ead2565ab73dcdb0The Android Open Source Project} 211