| /*---------------------------------------------------------------------------* |
| * ArrayListImpl.h * |
| * * |
| * Copyright 2007, 2008 Nuance Communciations, Inc. * |
| * * |
| * Licensed under the Apache License, Version 2.0 (the 'License'); * |
| * you may not use this file except in compliance with the License. * |
| * * |
| * You may obtain a copy of the License at * |
| * http://www.apache.org/licenses/LICENSE-2.0 * |
| * * |
| * Unless required by applicable law or agreed to in writing, software * |
| * distributed under the License is distributed on an 'AS IS' BASIS, * |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * |
| * See the License for the specific language governing permissions and * |
| * limitations under the License. * |
| * * |
| *---------------------------------------------------------------------------*/ |
| |
| #ifndef __ARRAYLISTIMPL_H |
| #define __ARRAYLISTIMPL_H |
| |
| |
| |
| #include "ESR_ReturnCode.h" |
| #include "PortPrefix.h" |
| |
| /** |
| * ArrayList implementation. |
| */ |
| typedef struct ArrayListImpl_t |
| { |
| /** |
| * Interface functions that must be implemented. |
| */ |
| ArrayList Interface; |
| |
| /** |
| * ArrayList contents. |
| * |
| * Represents an array of void* elements. An element having a value of NULL denotes an |
| * empty slot. |
| */ |
| void** contents; |
| |
| /** |
| * number element in the array. |
| */ |
| size_t size; |
| |
| /** |
| * Actual capacity of the array. |
| */ |
| size_t capacity; |
| |
| /** |
| * Min capacity of the array. |
| **/ |
| size_t minCapacity; |
| |
| } |
| ArrayListImpl; |
| |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Add(ArrayList* self, void* element); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_InsertAt(ArrayList* self, size_t index, void* element); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Remove(ArrayList* self, const void* element); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_RemoveAtIndex(ArrayList* self, size_t index); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_RemoveAll(ArrayList* self); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Contains(ArrayList* self, const void* element, ESR_BOOL* exists); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Get(ArrayList* self, size_t index, void** element); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Set(ArrayList* self, size_t index, void* element); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_GetSize(ArrayList* self, size_t* size); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Clone(ArrayList* self, ArrayList* clone); |
| |
| /** |
| * Default implementation. |
| */ |
| PORTABLE_API ESR_ReturnCode ArrayList_Destroy(ArrayList* self); |
| |
| #endif /* __ARRAYLIST_H */ |