Home | History | Annotate | Download | only in include
      1 /*---------------------------------------------------------------------------*
      2  *  IntArrayList.h  *
      3  *                                                                           *
      4  *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
      5  *                                                                           *
      6  *  Licensed under the Apache License, Version 2.0 (the 'License');          *
      7  *  you may not use this file except in compliance with the License.         *
      8  *                                                                           *
      9  *  You may obtain a copy of the License at                                  *
     10  *      http://www.apache.org/licenses/LICENSE-2.0                           *
     11  *                                                                           *
     12  *  Unless required by applicable law or agreed to in writing, software      *
     13  *  distributed under the License is distributed on an 'AS IS' BASIS,        *
     14  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
     15  *  See the License for the specific language governing permissions and      *
     16  *  limitations under the License.                                           *
     17  *                                                                           *
     18  *---------------------------------------------------------------------------*/
     19 
     20 #ifndef __INTARRAYLIST_H
     21 #define __INTARRAYLIST_H
     22 
     23 
     24 
     25 #include "ESR_ReturnCode.h"
     26 #include "ESR_SharedPrefix.h"
     27 #include "ptypes.h"
     28 #include <stdlib.h>
     29 
     30 /**
     31  * @addtogroup IntArrayListModule IntArrayList API functions
     32  * List of elements.
     33  *
     34  * @{
     35  */
     36 
     37 /**
     38  * List of elements.
     39  */
     40 typedef struct IntArrayList_t
     41 {
     42   /**
     43    * Adds element to list.
     44    *
     45    * @param self IntArrayList handle
     46    * @param element Element to be added
     47    */
     48   ESR_ReturnCode(*add)(struct IntArrayList_t* self, int element);
     49 
     50   /**
     51   * Removes element from list.
     52   *
     53   * @param self IntArrayList handle
     54   * @param element Element to be removed
     55   */
     56   ESR_ReturnCode(*remove)(struct IntArrayList_t* self, int element);
     57 
     58   /**
     59   * Removes all elements from list.
     60   *
     61   * @param self IntArrayList handle
     62   */
     63   ESR_ReturnCode(*removeAll)(struct IntArrayList_t* self);
     64 
     65   /**
     66   * Indicates if element is contained within the list.
     67   *
     68   * @param self IntArrayList handle
     69   * @param element Element to check for
     70   * @param exists True if element was found
     71   */
     72   ESR_ReturnCode(*contains)(struct IntArrayList_t* self, int element, ESR_BOOL* exists);
     73 
     74   /**
     75   * Returns array size.
     76   *
     77   * @param self IntArrayList handle
     78   * @param size Returned size
     79   */
     80   ESR_ReturnCode(*getSize)(struct IntArrayList_t* self, size_t* size);
     81 
     82   /**
     83   * Returns the element at the specified index.
     84   *
     85   * @param self IntArrayList handle
     86   * @param index Element index
     87   * @param element Element being returned
     88   */
     89   ESR_ReturnCode(*get)(struct IntArrayList_t* self, size_t index, int* element);
     90 
     91   /**
     92   * Sets the element at the specified index.
     93   *
     94   * NOTE: Does *not* deallocate the element being overwritten.
     95   * @param self IntArrayList handle
     96   * @param index Element index
     97   * @param element Element's new value
     98   */
     99   ESR_ReturnCode(*set)(struct IntArrayList_t* self, size_t index, int element);
    100 
    101   /**
    102    * Converts the IntArrayList to a static array.
    103    * The use of the IntArrayList handle is undefined past this point.
    104    *
    105    * @param self IntArrayList handle
    106    * @param newArray Pointer to resulting array
    107    */
    108   ESR_ReturnCode(*toStaticArray)(struct IntArrayList_t* self, int** newArray);
    109 
    110   /**
    111   * Destroys the IntArrayList.
    112   * @param self IntArrayList handle
    113   */
    114   ESR_ReturnCode(*destroy)(struct IntArrayList_t* self);
    115 }
    116 IntArrayList;
    117 
    118 /**
    119  * Creates a new IntArrayList.
    120  *
    121  * @param self ArrayList handle
    122  */
    123 ESR_SHARED_API ESR_ReturnCode IntArrayListCreate(IntArrayList** self);
    124 
    125 /**
    126  * Creates a new IntArrayList from the supplied static array.
    127  * The static array may not be used past this point.
    128  *
    129  * @param value Initial value
    130  * @param self IntArrayList handle
    131  */
    132 ESR_SHARED_API ESR_ReturnCode IntArrayListImport(int* value, IntArrayList** self);
    133 
    134 /**
    135  * Adds element to list.
    136  *
    137  * @param self IntArrayList handle
    138  * @param element Element to be added
    139  */
    140 ESR_SHARED_API ESR_ReturnCode IntArrayListAdd(IntArrayList* self, int element);
    141 
    142 /**
    143  * Removes element from list.
    144  *
    145  * @param self IntArrayList handle
    146  * @param element Element to be removed
    147  */
    148 ESR_SHARED_API ESR_ReturnCode IntArrayListRemove(IntArrayList* self, int element);
    149 
    150 /**
    151  * Removes all elements from list.
    152  *
    153  * @param self IntArrayList handle
    154  */
    155 ESR_SHARED_API ESR_ReturnCode IntArrayListRemoveAll(IntArrayList* self);
    156 
    157 /**
    158  * Indicates if element is contained within the list.
    159  *
    160  * @param self IntArrayList handle
    161  * @param element Element to check for
    162  * @param exists True if element was found
    163  */
    164 ESR_SHARED_API ESR_ReturnCode IntArrayListContains(IntArrayList* self, int element, ESR_BOOL* exists);
    165 
    166 /**
    167  * Returns array size.
    168  *
    169  * @param self IntArrayList handle
    170  * @param size Returned size
    171  */
    172 ESR_SHARED_API ESR_ReturnCode IntArrayListGetSize(IntArrayList* self, size_t* size);
    173 
    174 /**
    175  * Returns the element at the specified index.
    176  *
    177  * @param self IntArrayList handle
    178  * @param index Element index
    179  * @param element Element being returned
    180  */
    181 ESR_SHARED_API ESR_ReturnCode IntArrayListGet(IntArrayList* self, size_t index, int* element);
    182 
    183 /**
    184  * Sets the element at the specified index.
    185  *
    186  * NOTE: Does *not* deallocate the element being overwritten.
    187  * @param self IntArrayList handle
    188  * @param index Element index
    189  * @param element Element's new value
    190  */
    191 ESR_SHARED_API ESR_ReturnCode IntArrayListSet(IntArrayList* self, size_t index, int element);
    192 
    193 /**
    194  * Converts the IntArrayList to a static array.
    195  * The IntArrayList handle may not be used past this point.
    196  *
    197  * @param self IntArrayList handle
    198  * @param newArray Pointer to resulting array
    199  */
    200 ESR_SHARED_API ESR_ReturnCode IntArrayListToStaticArray(IntArrayList* self, int** newArray);
    201 
    202 /**
    203  * Destroys an IntArrayList.
    204  *
    205  * @param self IntArrayList handle
    206  */
    207 ESR_SHARED_API ESR_ReturnCode IntArrayListDestroy(IntArrayList* self);
    208 
    209 /**
    210  * @}
    211  */
    212 
    213 
    214 #endif /* __INTARRAYLIST_H */
    215