/code/CLM_LIBS
CLM_LIBS.h
is set of public domain libraries implemented as code-generating macros.
You can find the CLM_LIBS.h
file and all the documentation in the CLM_LIBS repository.
IMPORT_CLM_TIME: time and date related functions
doubletime_elapsed(clock_t crono)voidtime_pause(char* message)char *time_stamp(int format)
IMPORT_CLM_RAND: random related functions
intrand_int(int n)size_trand_size_t(size_t n)doublerand_double(double n)doublerand_halton(size_t base, size_t n)voidrand_color(int *r, int *g, int *b)
IMPORT_CLM_PRINTF: printf
helper functions
voidprintf_reset()voidprintf_delete()voidprintf_set_bold()voidprintf_set_light()voidprintf_set_strike()voidprintf_set_underline()voidprintf_move(int dx, int dy)voidprintf_set_text_grey(int grey)voidprintf_set_back_grey(int grey)voidprintf_set_text_color(int r, int g, int b)voidprintf_set_back_color(int r, int g, int b)
IMPORT_CLM_DAMM: checksum functions
chardamm_dec(char *txt)chardamm_hex(char *txt)
IMPORT_CLM_ARC4: unsafe cryptographic functions
char *arc4_hash(char *txt, size_t length, size_t drop)char *arc4_encrypt(char *txt, char *key, size_t drop)char *arc4_decrypt(char *txt, char *key, size_t drop)
IMPORT_CLM_ITER: combinatorial iterator functions
voiditer_rand_prod(size_t **prod, size_t length, size_t *base)voiditer_next_prod(size_t **prod, size_t length, size_t *base)voiditer_rand_perm(size_t **perm, size_t length, size_t base, bool rep)voiditer_next_perm(size_t **perm, size_t length, size_t base, bool rep)voiditer_rand_comb(size_t **comb, size_t length, size_t base, bool rep)voiditer_next_comb(size_t **comb, size_t length, size_t base, bool rep)
IMPORT_CLM_FRACTAL: spacefilling curves
size_tfractal_van_der_corput(size_t base, size_t digits, size_t n)voidfractal_lebesgue_coord(size_t dim, size_t bits, size_t *L)voidfractal_lebesgue_index(size_t dim, size_t bits, size_t *L)voidfractal_hilbert_coord(size_t dim, size_t bits, size_t *H)voidfractal_hilbert_index(size_t dim, size_t bits, size_t *H)
IMPORT_CLM_ARRAY: generic array functions
typedef type *arrayarrayarray_new(size_t length)voidarray_sort(array A, size_t length)voidarray_shuffle(array A, size_t length)typearray_select(array A, size_t length, size_t rank)size_tarray_bisect(array A, size_t length, type data)
IMPORT_CLM_CLIST: generic singly-linked circular list container
typedef struct clist_s *clistboolclist_push_front(clist *list, type data)boolclist_push_back(clist *list, type data)typeclist_pop_front(clist *list)typeclist_front(clist *list)typeclist_back(clist *list)
IMPORT_CLM_STREE: generic splay tree container
typedef struct stree_s *streetypestree_root(stree *tree)typestree_min(stree *tree)typestree_max(stree *tree)typestree_pop(stree *tree)boolstree_next(stree *tree)boolstree_prev(stree *tree)boolstree_find(stree *tree, type data)boolstree_insert(stree *tree, type data)
IMPORT_CLM_WTREE: generic weight-balanced tree container
typedef struct wtree_s *wtreesize_twtree_size(wtree *tree)size_twtree_find(wtree *tree, type data)size_twtree_insert(wtree *tree, type data)typewtree_select(wtree *tree, size_t rank)typewtree_remove(wtree *tree, size_t rank)