Dokumentace k souboru util.c

Popis souboru | Funkce

Popis souboru (1)

ruzne funkce: prace s binarnimi vyhledavacimi stromy prace s tokeny + dalsi

Funkce (35)

ModifikátorJménoParametryDokumentace
char *b_strncpy(char *dest,const char *source, size_t count)jako strncpy, ale posledni znak vzdy nastavi na NULL
intchkerror(char *action,int retcode)pokud retcode je -1, vypise perror s parametrem action a ukonci program
typicke pouziti: chkerror("popis chyby",syscall_co_vraci_-1_pri_chybe(...));
intempty(const char *a)vrati 1 pokud je retezec NULL nebo prazdny
inteq(const char *a,const char *b)vrati 1 pokud se retezce rovnaji
inteqi(const char *a,const char *b)vrati 1 pokud se retezce rovnaji (case insensitive)
voidfatal(char *s)vyskoci s chybovou hlaskou. Dobre k debugovani
voidfatalf(char *fmt,...)jako fatal(), ale s formatovanym retezcem jako u printf
voidfreetoken(text_token *t)uvolni token z pameti, vcetne jeho vnitrku, tedy dat, ze kterych byl token vytvoren
intfsize(const char *f)vrati velikost souboru
intloadfile(void **out,const char *name)nahraje soubor do pameti, vrati velikost
void *malloc0(size_t t)naalokuje pamet. Pamet je vyplnena nulama
void *malloc1(size_t t)naalokuje pamet. Selhani neni povoleno (pri nedostatku pameti program konci s chybovou hlaskou)
intstr_beginwithi(const char *s1,const char *s2)vrati 1 pokud retezec s2 zacina retezcem s1 (case insensitive), jinak 0
voidstr_free(char *s)odalokace retezce s kontrolou na NULL pointery
text_tokentoken_create(void *source,int size)vytvori z danych dat parsovatelny token
inttoken_loadbinary(text_token *t,void *i,int s)nacte z tokenu kus binarnich dat
inttoken_readchar(text_token *t,char c)nacte znak z tokenu a odstrani ho. Vraci 1 pri uspechu, 0 pri chybe (je tam jiny znak, nebo tam neni zadny)
inttoken_readfloat(text_token *t,double *f)nacte z tokenu jeden float
inttoken_readint(text_token *t,int *f)nacte z tokenu jeden integer
inttoken_readkv_sep(text_token *t,char **key,char **value,char separator)ze zacatku tokenu nacte a odstrani zaznam ve formatu key=value.
Misto = lze pouzit i jiny separator
POZOR! dealokovat se musi jenom key, nikdy ne value, nebot to je jeden buffer
char *token_readline(text_token *t)nacte z tokenu jednu neprazdnou radku
char *token_readqstring(text_token *t)nacte retezec v uvozovkach z tokenu
char *token_readstring(text_token *t)nacte retezec z tokenu (znaky az do prvni whitespace nebo konce radky)
voidtoken_remove_rest_of_line(text_token *t)preskoci vse v tokenu az do konce radky
voidtoken_skip_trash(text_token *t)preskoci vsechny whitespacy a pokud narazi na komentar, tak i ten
voidtree_add(tree **t,const char *name,void *val1)prida do stromu polozku se jmenem name a hodnovou val1, pokud je jiz obsazena, neprida nic (a pokud je zapnuty debug tak rovnou fatalne spadne)
inttree_count(tree *t)vrati pocet prvku stromu
inttree_del(tree **t,const char *name)odstrani ze stormu polozku name
1 - polozka byla odstranena
0 - polozka tam nebyla
void *tree_delv(tree **t,const char *name)odstrani ze stormu polozku name a vrati ji (nebo NULL, pokud tam neni)
1 - polozka byla odstranena
0 - polozka tam nebyla
tree *tree_dup(const tree *t)zduplikuje dany strom - vytvori novou kopii
const tree *tree_element(const tree *t,int i)vytahne ze stromu ukazatel na list s prvek s cislem i (i je mezi 0 a (poctem prvku ve stromu -1)
Da se pouzit napr. pro prochazeni cleeho stropu, ackoliv tree_foreach / tree_foreach_p muze byt vhodnejsi
Pokud nastane chyba nebo je prvek mimo rozsah, vrati NULL
voidtree_foreach(tree *t,tree_func *f)zavola funkci na kazdy prvek stromu
voidtree_foreach_p(tree *t,tree_func_p *f,void *param)zavola funkci na kazdy prvek stromu (s extra parametrem)
voidtree_free(tree *t)odalokuje strom z pameti
void *tree_search(const tree *t,const char *name)prohleda strom jestli obsahuje polozku name a vrati ji, pokud neobsahuje, vraci 0

Dokumentace z 29.01.2004 01:50:02