/** ****************************************************************************** @file /common/xml/strda.h @brief Dalsi funkce pro praci s char* resp. DA @author Vta @version 1.0 ******************************************************************************/ #ifndef _STRDA_ #define _STRDA_ #include "common/da.h" /** @brief Prevede Da na retezec @param output ukazatel na pole do nehoz se prekopiruje obsah input. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param input vstupni data @param size velikost output v case volani funkce */ size_t datostr(char **output, DA *input,size_t size); /** @brief Prevede Da na retezec z wchar_t @param output ukazatel na pole do nehoz se prekopiruje obsah input. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param input vstupni data @param size velikost output v case volani funkce */ size_t datowcs(wchar_t **output, DA *input,size_t size); /** @brief Prida nakonec big retezec small a vlozi 0 pokud terminate @param big je ukazatel na pole, ke kteremu se prida smallstr. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param smallstr pridavany retezec @param terminate Pokud je terminate rovno jedne, nakonec big se pripise 0 (ale jen pokud smallstr 0 neobsahuje) */ void addtostr(char **big, const char *smallstr,int terminate); // terminate, zdali nakonec big zapsat 0 /** @brief Prida nakonec big retezec small a vlozi 0 pokud terminate @param big je ukazatel na pole, ke kteremu se prida smallstr. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param smallstr pridavany retezec @param terminate Pokud je terminate rovno jedne, nakonec big se pripise 0 (ale jen pokud smallstr 0 neobsahuje) */ void addtoda(DA *big,const char *smallstr,int terminate); /** @brief Prida nakonec big count znaku z retezece small a vlozi 0 pokud terminate @param big je ukazatel na pole, ke kteremu se prida smallstr. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param smallstr pridavany retezec @param terminate Pokud je terminate rovno jedne, nakonec big se pripise 0 (ale jen pokud smallstr 0 neobsahuje) @param count kolik znaku se ma vlozit do retezce big */ void addtodanum(DA *big,const char *smallstr,int terminate,size_t count); /** @brief Prida nakonec big retezec z wchar_t small a vlozi 0 pokud terminate @param big je ukazatel na pole, ke kteremu se prida smallstr. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param smallstr pridavany retezec @param terminate Pokud je terminate rovno jedne, nakonec big se pripise 0 (ale jen pokud smallstr 0 neobsahuje) */ void addtodawcs(DA *big,const wchar_t *smallstr,int terminate); /** @brief Prida nakonec big retezec small a vlozi 0 pokud terminate @param big je ukazatel na pole, ke kteremu se prida smallstr. Toto pole se muze zvetsit, kdyby jeho velikost nebyla dostacujici. @param smallstr pridavany retezec @param terminate Pokud je terminate rovno jedne, nakonec big se pripise 0 (ale jen pokud smallstr 0 neobsahuje) */ void addtodastr(DA *big,const char *smallstr,int terminate); /** @brief Naalokuje retezec potrebne delky a prekopiruje do nej input @param output ukazatel na vysledne naalokovane pole @param input obsahuje zdroj ktery se kopiruje */ size_t newandstrcpy(char ** output, const char * input); /** @brief Naalokuje retezec z wchar_t potrebne delky a prekopiruje do nej input @param output ukazatel na vysledne naalokovane pole, pri volani teto funkce pole jeste neni naalokovane @param input obsahuje zdroj ktery se kopiruje */ size_t newandwcscpy(wchar_t ** output, const wchar_t * input); /** @brief Funkce podobna newandstrcpy, avsak pole na nez odkazuje output jiz muze byt naalokovane. Doje k realokaci, pokud by velikost nestacila. @param output ukazatel na pole s vystupem @param input obsahuje zdroj ktery se kopiruje @param size velikost pole na nez ukazuje output v dobe volani funkce */ size_t delandnewandstrcpy(char ** output, const char * input, size_t size); /** @brief Funkce podobna newandstrcpy, avsak pole na nez odkazuje output jiz muze byt naalokovane. Doje k realokaci, pokud by velikost nestacila. @param output ukazatel na pole z wchar_t s vystupem @param input obsahuje zdroj ktery se kopiruje @param size velikost pole na nez ukazuje output v dobe volani funkce */ size_t delandnewandwcscpy(wchar_t ** output, const wchar_t * input, size_t size); /** @brief Vrati cestu tzn. (*output) k xml souborum pouzitych v programu, jmeno file je zadano v poli wchar_t @param output bude obsahovat vyslednou cestu @param path1 adresa k slozce res @param k8pack adresa k aktualnimu balicku @param path2 adresa k adresari se souborem @param input vlastni soubor @param sizeinput velikost output @param suffix obsahuje priponu souboru nebo prazdny retezec */ char * wcspath(char ** output, const char *path1, const char *k8pack, const char *path2, wchar_t *input, int & sizeoutput, char *suffix); /** @brief Vrati cestu tzn. (*output) k xml souborum pouzitych v programu @param output bude obsahovat vyslednou cestu @param path1 adresa k slozce res @param k8pack adresa k aktualnimu balicku @param path2 adresa k adresari se souborem @param input vlastni soubor @param sizeoutput velikost output @param suffix obsahuje priponu souboru nebo prazdny retezec */ char * strpath(char ** output, const char *path1, const char *k8pack, const char *path2, char *input, size_t & sizeoutput, char *suffix); /** @brief Sestavi cestu, ale jen do velikosti sizeinput @param output bude obsahovat vyslednou cestu @param path1 adresa k slozce res @param k8pack adresa k aktualnimu balicku @param path2 adresa k adresari se souborem @param input vlastni soubor @param sizeoutput velikost output @param suffix obsahuje priponu souboru nebo prazdny retezec */ char * strpartpath(char * output, const char *path1, const char *k8pack, const char *path2, char *input, size_t sizeoutput, char *suffix); /** @brief Transformuje NULL-terminated retezce z wchar_t a premenuje v nich < > a & na prislusne ekvivalenty v XML @param output vysledny upraveny retezec @param input vstupni retezec, ktery se bude transformovat @param size velikost output */ int transformspecialwcs(wchar_t * output, wchar_t * input,int size); /** @brief Transformuje NULL-terminated retezce a premenuje v nich < > a & na prislusne ekvivalenty v XML @param output vysledny upraveny retezec @param input vstupni retezec, ktery se bude transformovat @param size velikost output */ int transformspecialstr(char * output, char * input, size_t size); /** Funkce podobna strncpy ale prida 0 nakonec vzdy @param output vystupni retezec @param input vstupni retezec @param size pocet znaku ktere se maji kopirovat */ void strcopy(char * output,char * input,int size); /** Zjisti jestli jsou v reteci jen bile znaky. Prochazi retezec do prvniho znaku 0. @param input retezec, ktery se ma proverit @return vraci 1, pokud input obsahuje pouze bile znajy, jinak 0 */ int white_chars_only(char * input); #endif /*****************************************************************************/