|
|
| version 1.1.1.1, 2003/10/16 17:57:10 | version 1.5, 2005/02/09 20:11:34 |
|---|---|
| Line 6 LISTARRAY listarray_new(size_t listsize, | Line 6 LISTARRAY listarray_new(size_t listsize, |
| LISTARRAY laRet = NULL; | LISTARRAY laRet = NULL; |
| UINT dwSize; | UINT dwSize; |
| listsize = (listsize + 3) & (~3); | |
| dwSize = sizeof(_LISTARRAY); | dwSize = sizeof(_LISTARRAY); |
| dwSize += listsize * maxitems; | dwSize += listsize * maxitems; |
| Line 60 UINT listarray_getitems(LISTARRAY laHand | Line 61 UINT listarray_getitems(LISTARRAY laHand |
| void *listarray_append(LISTARRAY laHandle, const void *vpItem) { | void *listarray_append(LISTARRAY laHandle, const void *vpItem) { |
| LISTARRAY laNext; | LISTARRAY laNext; |
| char *p; | UINT8 *p; |
| if (laHandle == NULL) { | if (laHandle == NULL) { |
| goto laapp_err; | goto laapp_err; |
| Line 77 void *listarray_append(LISTARRAY laHandl | Line 78 void *listarray_append(LISTARRAY laHandl |
| } | } |
| laHandle = laNext; | laHandle = laNext; |
| } | } |
| p = (char *)(laHandle + 1); | p = (UINT8 *)(laHandle + 1); |
| p += laHandle->items * laHandle->listsize; | p += laHandle->items * laHandle->listsize; |
| if (vpItem) { | if (vpItem) { |
| CopyMemory(p, vpItem, laHandle->listsize); | CopyMemory(p, vpItem, laHandle->listsize); |
| Line 96 void *listarray_getitem(LISTARRAY laHand | Line 97 void *listarray_getitem(LISTARRAY laHand |
| while(laHandle) { | while(laHandle) { |
| if (num < laHandle->items) { | if (num < laHandle->items) { |
| return((char *)(laHandle + 1) + (laHandle->listsize * num)); | return((UINT8 *)(laHandle + 1) + (laHandle->listsize * num)); |
| } | } |
| num -= laHandle->items; | num -= laHandle->items; |
| laHandle = laHandle->laNext; | laHandle = laHandle->laNext; |
| Line 104 void *listarray_getitem(LISTARRAY laHand | Line 105 void *listarray_getitem(LISTARRAY laHand |
| return(NULL); | return(NULL); |
| } | } |
| UINT listarray_getpos(LISTARRAY laHandle, void *vpItem) { | |
| UINT pos; | |
| UINT i; | |
| pos = 0; | |
| while(laHandle) { | |
| UINT8 *p = (UINT8 *)(laHandle + 1); | |
| for (i=0; i<laHandle->items; i++) { | |
| if ((long)p == (long)vpItem) { | |
| return(pos + i); | |
| } | |
| p += laHandle->listsize; | |
| } | |
| pos += laHandle->items; | |
| laHandle = laHandle->laNext; | |
| } | |
| return((UINT)-1); | |
| } | |
| void *listarray_enum(LISTARRAY laHandle, | void *listarray_enum(LISTARRAY laHandle, |
| BOOL (*cbProc)(void *vpItem, void *vpArg), void *vpArg) { | BOOL (*cbProc)(void *vpItem, void *vpArg), void *vpArg) { |
| UINT i; | UINT i; |
| Line 114 void *listarray_enum(LISTARRAY laHandle, | Line 135 void *listarray_enum(LISTARRAY laHandle, |
| } | } |
| while(laHandle) { | while(laHandle) { |
| char *p = (char *)(laHandle + 1); | UINT8 *p = (UINT8 *)(laHandle + 1); |
| for (i=0; i<laHandle->items; i++) { | for (i=0; i<laHandle->items; i++) { |
| if (cbProc((void *)p, vpArg)) { | if (cbProc((void *)p, vpArg)) { |
| return((void *)p); | return((void *)p); |