--- np2/common/lstarray.c 2003/10/16 17:57:10 1.1.1.1 +++ np2/common/lstarray.c 2004/01/09 04:36:02 1.3 @@ -6,6 +6,7 @@ LISTARRAY listarray_new(size_t listsize, LISTARRAY laRet = NULL; UINT dwSize; + listsize = (listsize + 3) & (~3); dwSize = sizeof(_LISTARRAY); dwSize += listsize * maxitems; @@ -104,6 +105,26 @@ void *listarray_getitem(LISTARRAY laHand return(NULL); } +UINT listarray_getpos(LISTARRAY laHandle, void *vpItem) { + + UINT pos; + UINT i; + + pos = 0; + while(laHandle) { + char *p = (char *)(laHandle + 1); + for (i=0; iitems; 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, BOOL (*cbProc)(void *vpItem, void *vpArg), void *vpArg) {