Skip to content

dinaraparanid/DynamicArray

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DynamicArray

Developer

Paranid5

About Library

Dynamic array implementation on C language.

Features

  • Object-Oriented style
  • Generic types
  • Variadic methods and constructors
  • Support of cloning and moving
  • Declarative interface with functional features (transformers, filteres, combinators)
  • Support of basic algorithms (quick sort, binary search, reverse, etc.)

How to use

Clone files dynamic_array.h and dynamic_array.c to your project folder.

Examples

// ----------------------------- vararg constructor -----------------------------

new_dyn_array_with_elems(gay_list, int, 4, 3, 2, 1, 0);

// ----------------------------- size -----------------------------

assert(gay_list->size(*gay_list) == 5);

// ----------------------------- push (move) -----------------------------------

int* push = malloc(sizeof(int));
*push = -1;
	
gay_list->push(gay_list, push);
assert(*get_last_casted(gay_list, int) == -1);
assert(*push != -1);

// ----------------------------- pop -----------------------------------

assert(*(int*)gay_list->pop(gay_list) == -2);
assert(*(int*)gay_list->pop(gay_list) == -1);

// ----------------------------- sort -----------------------------------

sort_dyn_array(gay_list, int32_t);

assert(*get_casted(gay_list, 0, int) == 0);
assert(*get_casted(gay_list, 1, int) == 1);
assert(*get_casted(gay_list, 2, int) == 2);
assert(*get_casted(gay_list, 3, int) == 3);
assert(*get_casted(gay_list, 4, int) == 4);

// ----------------------------- scan -----------------------------------

// [1, 2, 3, 4, 5, 3]

dynamic_array* scanned = gay_list->scan(*gay_list, start, sizeof(int), sum);

assert(*get_casted(scanned, 0, int) == 1);
assert(*get_casted(scanned, 1, int) == 3);
assert(*get_casted(scanned, 2, int) == 6);
assert(*get_casted(scanned, 3, int) == 10);
assert(*get_casted(scanned, 4, int) == 15);
assert(*get_casted(scanned, 5, int) == 18);

Full list with all examples is available in main.c

License

GNU Public License V 3.0

About

Dynamic Array implementation on C language

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages