Reference manual


Dynlist was designed to be easy to use and as efficient as possible. Whenever a choice betweem these had to be made, efficiency would be the main focus. Because of this, there are many options to improve the way you use the library, specific to what you want to use it for. Following is a list of functions in the library, and how they work

Function overview

List manipulation

Item manipulation

dynlist


#define dynlist(x, y) dynlist (x)=createlist(sizeof(y))
This macro function defines a dynlist object called x for items of type y (eg int)


createlist


dynlist createlist(int itemsize)
This function initializes and returns a dynlist object for items of size itemsize


clearlist


void clearlist(dynlist *list)
This function frees all memory used by *list


compile


void *compile(dynlist list)
This function "compiles" a list by converting it into a static array, after allocating sufficient space for it. A pointer to the array is returned.


decompile


dynlist decompile(void *data, int itemsize, int num)
This function "decompiles" a static array into a dynlist object. data specifies location of the array, itemsize the size of a single object in bytes, and num the amount of items in the array. The finished dynlist is passed as a return value


catlists


void catlists(dynlist *list1, dynlist *list2)
This function extends *list1 by *list2. If *list1 is empty, this function can be used to duplicate *list2. After using this function, *list2 still exists, so it should be cleaned up by clearlist() later


splitlist


dynlist splitlist(dynlist *list, int i)
This function splits *list at i, and returns a new dynlist object containing anything from index i onward


getsize


long getsize(dynlist list)
This function returns the number of bytes used by list and all its items


getlen


long getlen(dynlist list)
This function returns the number of items in list (useful to initialize for loops)


newitem


void *newitem(dynlist *list)
This function allocates space for a new item in *list and returns a pointer to it


additem


void additem(dynlist *list, void *item, int i)
This function adds a previously created item *item to *list at index i


appenditem


void appenditem(dynlist *list, void *item)
This function is very similar to additem, except that *item is appended to the end of *list


eraseitem


void eraseitem(dynlist *list, int i)
This function erases the item at index i from *list


getitem


void *getitem(dynlist *list, int i)
This function returns a pointer to the item at index i in *list


reverse


void reverse(dynlist *list)
This function reverses the order of all items in *list


swap


void swap(dynlist *list, int i, int j)

This function swaps the items at indices i and j


sortlist


void sortlist(dynlist *list, int (*func)(void*, void*))

This function sorts *list based on the item comparison in *func (See the quick guide for details)