Esempio n. 1
0
void * FindNode( nodearray *list, unsigned index )
/*******************************************************/
{
    index--;            // index is base 1
//#ifdef _INT_DEBUG
    if ( index > list->num ) {
		LnkMsg( ERR+MSG_INVALID_INDEX_IN_RELOC, "d", index+1 );
        //printf("objnode.FindNode(): index %d exceeds max index %d\n", index+1, list->num );
        return( NULL );
    }
//#endif
    return list->array[ARRAY_NUM(index)] + ELEMENT_NUM(index) * list->elsize;
}
Esempio n. 2
0
void IterateNodelist( nodearray *list, void (*fn)(void *, void *),
                             void *cookie )
/***********************************************************************/
{
    int index;
    int limit;

    if( list->num == 0 ) return;
    limit = ARRAY_NUM( list->num );
    for( index = 0; index < limit; index++ ) {
        IterateNodeArray( list->array[index], fn, list->elsize,
                                                  NODE_ARRAY_SIZE, cookie );
    }
    IterateNodeArray( list->array[limit], fn, list->elsize,
                                              ELEMENT_NUM(list->num), cookie );
}
Esempio n. 3
0
static void * IterateFindValue( nodearray *list, void *target,
                                   bool (*fn)(void *, void *) )
/***************************************************************/
{
    unsigned    index;
    void *      retval;
    unsigned    limit;

    if( list->num == 0 ) return NULL;
    limit = ARRAY_NUM( list->num );
    for( index = 0; index < limit; index++ ) {
        retval = ListFindValue( list->array[index], NODE_ARRAY_SIZE,
                                list->elsize, target, fn);
        if( retval ) return retval;
    }
    return ListFindValue( list->array[limit], ELEMENT_NUM(list->num),
                          list->elsize, target, fn );
}
Esempio n. 4
0
void * FindNode( nodearray *list, unsigned index )
/*******************************************************/
{
    index--;            // index is base 1
    return list->array[ARRAY_NUM(index)] + ELEMENT_NUM(index) * list->elsize;
}