00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00028 #ifndef _RTXARRAYLIST_H_
00029 #define _RTXARRAYLIST_H_
00030
00031 #include "rtxsrc/rtxContext.h"
00032
00033 #define OSRT_ARRAYLIST_CAPACITY 10
00034
00035 typedef struct _OSRTArrayList {
00036 OSRTDList segments;
00037 OSSIZE segmentSize;
00038 OSSIZE size;
00039 OSSIZE dataSize;
00040 OSBOOL (*equalsFunc)(void*,void*,OSSIZE);
00041 } OSRTArrayList;
00042
00043 typedef struct _OSRTArrayListIter {
00044 const OSRTArrayList* pArrayList;
00045 OSRTDListNode* pSegment;
00046 OSSIZE index;
00047 } OSRTArrayListIter;
00048
00049
00050
00051
00052
00053
00054
00055 #ifdef __cplusplus
00056 extern "C" {
00057 #endif
00058
00065 EXTERNRT void rtxArrayListInit
00066 (OSRTArrayList* pArrayList, OSSIZE capacity);
00067
00077 EXTERNRT OSRTArrayList* rtxNewArrayList (OSCTXT* pctxt, OSSIZE capacity);
00078
00086 EXTERNRT void rtxFreeArrayList (OSCTXT* pctxt, OSRTArrayList* pArrayList);
00087
00099 EXTERNRT int rtxArrayListAdd
00100 (OSCTXT* pctxt, OSRTArrayList* pArrayList, void* pdata, OSSIZE* pindex);
00101
00109 EXTERNRT void rtxArrayListRemove
00110 (OSCTXT* pctxt, OSRTArrayList* pArrayList, void* pdata);
00111
00120 EXTERNRT void rtxArrayListRemoveIndexed
00121 (OSCTXT* pctxt, OSRTArrayList* pArrayList, OSSIZE idx);
00122
00133 EXTERNRT int rtxArrayListInsert
00134 (OSCTXT* pctxt, OSRTArrayList* pArrayList, void* pdata, OSSIZE idx);
00135
00146 EXTERNRT int rtxArrayListReplace
00147 (OSRTArrayList* pArrayList, void* pdata, OSSIZE idx);
00148
00157 EXTERNRT void* rtxArrayListGetIndexed
00158 (const OSRTArrayList* pArrayList, OSSIZE idx);
00159
00168 EXTERNRT int rtxArrayListIndexOf (OSRTArrayList* pArrayList, void* pdata);
00169
00170
00171
00183 EXTERNRT int rtxArrayListInitIter (OSRTArrayListIter* piter,
00184 const OSRTArrayList* pArrayList, OSSIZE startIndex);
00185
00193 EXTERNRT OSBOOL rtxArrayListHasNextItem (OSRTArrayListIter* piter);
00194
00202 EXTERNRT void* rtxArrayListNextItem (OSRTArrayListIter* piter);
00203
00204 #ifdef __cplusplus
00205 }
00206 #endif
00207
00208 #endif