index.c File Reference

#include "nsd.h"

Functions

void Ns_IndexInit (Ns_Index *indexPtr, int inc, int(*CmpEls)(const void *, const void *), int(*CmpKeyWithEl)(const void *, const void *))
void Ns_IndexTrunc (Ns_Index *indexPtr)
void Ns_IndexDestroy (Ns_Index *indexPtr)
Ns_Index * Ns_IndexDup (Ns_Index *indexPtr)
void * Ns_IndexFind (Ns_Index *indexPtr, void *key)
void * Ns_IndexFindInf (Ns_Index *indexPtr, void *key)
void ** Ns_IndexFindMultiple (Ns_Index *indexPtr, void *key)
void Ns_IndexAdd (Ns_Index *indexPtr, void *el)
void Ns_IndexDel (Ns_Index *indexPtr, void *el)
void * Ns_IndexEl (Ns_Index *indexPtr, int i)
void Ns_IndexStringInit (Ns_Index *indexPtr, int inc)
Ns_Index * Ns_IndexStringDup (Ns_Index *indexPtr)
void Ns_IndexStringAppend (Ns_Index *addtoPtr, Ns_Index *addfromPtr)
void Ns_IndexStringDestroy (Ns_Index *indexPtr)
void Ns_IndexStringTrunc (Ns_Index *indexPtr)
void Ns_IndexIntInit (Ns_Index *indexPtr, int inc)

Function Documentation

void Ns_IndexAdd ( Ns_Index *  indexPtr,
void *  el 
)

----------------------------------------------------------------------

Ns_IndexAdd --

Add an element to an index.

Results: None.

Side effects: May allocate extra element memory.

----------------------------------------------------------------------

void Ns_IndexDel ( Ns_Index *  indexPtr,
void *  el 
)

----------------------------------------------------------------------

Ns_IndexDel --

Remove an element from an index.

Results: None.

Side effects: None.

----------------------------------------------------------------------

void Ns_IndexDestroy ( Ns_Index *  indexPtr  ) 

----------------------------------------------------------------------

Ns_IndexDestroy --

Release all of an index's memory.

Results: None.

Side effects: Frees elements.

----------------------------------------------------------------------

Ns_Index* Ns_IndexDup ( Ns_Index *  indexPtr  ) 

----------------------------------------------------------------------

Ns_IndexDup --

Make a copy of an index.

Results: A pointer to a copy of the index.

Side effects: Mallocs memory for index and elements.

----------------------------------------------------------------------

void* Ns_IndexEl ( Ns_Index *  indexPtr,
int  i 
)

----------------------------------------------------------------------

Ns_IndexEl --

Find the i'th element of an index.

Results: Element.

Side effects: None.

----------------------------------------------------------------------

void* Ns_IndexFind ( Ns_Index *  indexPtr,
void *  key 
)

----------------------------------------------------------------------

Ns_IndexFind --

Find a key in an index.

Results: A pointer to the element, or NULL if none found.

Side effects: None.

----------------------------------------------------------------------

void* Ns_IndexFindInf ( Ns_Index *  indexPtr,
void *  key 
)

----------------------------------------------------------------------

Ns_IndexFindInf --

Find the elment with the key, or if none exists, the element before which the key would appear.

Results: An element, or NULL if the key is not there AND would be the last element in the list.

Side effects: None.

----------------------------------------------------------------------

void** Ns_IndexFindMultiple ( Ns_Index *  indexPtr,
void *  key 
)

----------------------------------------------------------------------

Ns_IndexFindMultiple --

Find all elements that match key.

Results: An array of pointers to matching elements, termianted with a null poitner.

Side effects: Will allocate memory for the return result.

----------------------------------------------------------------------

Find a place in the array that matches the key

Search linearly back to make sure we've got the first one

Search linearly forward to find out how many there are

Build array of values to return

void Ns_IndexInit ( Ns_Index *  indexPtr,
int  inc,
int(*)(const void *, const void *)  CmpEls,
int(*)(const void *, const void *)  CmpKeyWithEl 
)

----------------------------------------------------------------------

Ns_IndexInit --

Initialize a new index.

Results: None.

Side effects: Will allocate space for the index elements from the heap.

----------------------------------------------------------------------

void Ns_IndexIntInit ( Ns_Index *  indexPtr,
int  inc 
)

----------------------------------------------------------------------

Ns_IndexIntInit --

Initialize an index whose elements will be integers.

Results: None.

Side effects: See Ns_IndexInit.

----------------------------------------------------------------------

void Ns_IndexStringAppend ( Ns_Index *  addtoPtr,
Ns_Index *  addfromPtr 
)

----------------------------------------------------------------------

Ns_IndexStringAppend --

Append one index of strings to another.

Results: None.

Side effects: Will append to the first index.

----------------------------------------------------------------------

void Ns_IndexStringDestroy ( Ns_Index *  indexPtr  ) 

----------------------------------------------------------------------

Ns_IndexStringDestroy --

Free an index of strings.

Results: None.

Side effects: See Ns_IndexDestroy.

----------------------------------------------------------------------

Ns_Index* Ns_IndexStringDup ( Ns_Index *  indexPtr  ) 

----------------------------------------------------------------------

Ns_IndexStringDup --

Make a copy of an index, using ns_strdup to duplicate the keys.

Results: A new index.

Side effects: Wil make memory copies of the elements.

----------------------------------------------------------------------

void Ns_IndexStringInit ( Ns_Index *  indexPtr,
int  inc 
)

----------------------------------------------------------------------

Ns_IndexStringInit --

Initialize an index where the elements themselves are strings.

Results: None.

Side effects: See Ns_IndexInit.

----------------------------------------------------------------------

void Ns_IndexStringTrunc ( Ns_Index *  indexPtr  ) 

----------------------------------------------------------------------

Ns_IndexStringTrunc --

Remove all elements from an index of strings.

Results: None.

Side effects: See Ns_IndexTrunc.

----------------------------------------------------------------------

void Ns_IndexTrunc ( Ns_Index *  indexPtr  ) 

----------------------------------------------------------------------

Ns_IndexTrunc --

Remove all elements from an index.

Results: None.

Side effects: Frees and mallocs element memory.

----------------------------------------------------------------------


Generated on Tue Sep 4 19:58:56 2007 by  doxygen 1.5.1