Skip to content
/ Lists Public

A library that offers the utility of runtime variable length arrays that support items of variable type.

Notifications You must be signed in to change notification settings

Valen-H/Lists

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lists.h

This library offers the utility of runtime variable length arrays that support items of variable type.

AKA: an auto-resizable array that can hold many different types simultaneously!

Usage

List list = makelist(5); /* Initial size. */
/* makelist(register size_t iniSize) */
placelist(3, &list, sizeof("10"), (void*)"10"); /* Resizes the array pointer to fit the data. */
/* extern char placelist(register size_t index, List* list, register size_t size, void* data) */
/* The 'size' parameter is obsolete and can be used as ID for the user's convenience. */
int i = 10;
void* ip = &i;
pushlist(2, &list, sizeof(i), ip); /* Same as 'placelist' but instead of overriding the data, it pushes all items after the index one slot to the right. */
printf("%s", (char*)list.data[4]); /* 12 */
rmlist(3, &list); /* Removes item at specified index, shifts all items after the index one slot left and returns the removed item pointer. */
/* extern void* rmlist(register size_t index, List* list) */
scanindex(ip, &list); /* index of first occurence of 'ip'. */
/* extern size_t scanindex(const void * const data, const List * const list) */
printf("%s", printlist(&list)); /* print the list. */
/* extern char* printlist(const List* const list)  */

/**
	typedef struct List {
		size_t length;
		size_t* lengths; /* Size of each item */
		void** data; /* Each item... */
	} List;
*/

Make sure to always deallocate all outputs!

About

A library that offers the utility of runtime variable length arrays that support items of variable type.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published