00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 #ifndef DEF_FORMAT_H
00030 #define DEF_FORMAT_H
00031 
00032 
00039 #include <stdio.h>
00040 #include <string.h>
00041 #include "plabla.h"
00042 
00043 #include "array.h"
00044 #include "hlrmisc.h"
00045 
00046 
00047 
00048 
00049 
00053 typedef struct wordIterStruct {
00054   char *cp ;   
00055   char *seps ;
00056   int manySepsAreOne ;
00057   int atEnd ;
00058 } *WordIter ;
00059 extern WordIter wordIterCreate(char *s, char *seps, int manySepsAreOne) ;
00060 
00061 
00062  extern void wordIterDestroy_func(WordIter thisOne) ;
00063  extern void textDestroyFunc(Array a) ;
00064 
00065 
00066 
00067 
00068 
00069 
00070 
00071 
00072 
00076 #define Stringa Array
00077 
00083 #define stringCreateClear(s,n) {if(s) stringClear(s); else s=stringCreate(n);}
00084 
00089 #define stringCreateOnce(s,n) {if(!s) s=stringCreate(n);}
00090 
00095 #define stringDestroy arrayDestroy
00096 
00100 #define string(stringa) arrp(stringa,0,char)
00101 #define stringCp(stringa,index) arrp(stringa,index,char)
00102 #define stringC(stringa,index) arru(stringa,index,char)
00103 
00107 #define stringLen(stringa) (arrayMax(stringa)-1)
00108 
00109 extern Stringa stringCreate(int initialSize) ;
00110 extern void stringTerminate(Array s ) ;
00111 extern void stringTerminateP(Array s , char *cp) ;
00112 extern void stringTerminateI(Array s , int i) ;
00113 
00114 extern void stringCat(Stringa s1, char *s2) ;
00115 extern void stringCatInt(Stringa s, int i) ;
00116 extern void stringCatChar (Stringa s,char c);
00117 extern void stringNCat(Stringa s1, char *s2, int n) ;
00118 extern void stringCpy(Stringa s1, char *s2) ;
00119 extern void stringNCpy(Stringa s1, char *s2, int n) ;
00120 extern void stringClear(Array s1) ;
00121 extern void stringAdjust(Array s1) ;
00122 extern void stringChop(Stringa s, int n) ;
00123 extern void stringInsert(Stringa s, int p, char *i) ;
00124 extern char *stringCut(Stringa s, int pos, int len) ;
00125 extern int stringTrim(Stringa s , char *left, char *right) ;
00126 extern int stringTranslate(Stringa s, char *fromChars, char *toChars) ;
00127 extern int stringPrintf(Stringa str, char *format, ...) ;
00128 extern int stringAppendf(Stringa str, char *format, ...) ;
00129 extern char *stringPrintBuf(char *format, ...) ;
00130 extern int isEmptyString(Stringa s) ;
00131 
00132 
00133 
00134 extern void strReplace(char **s1, char *s2) ;
00135 extern void toupperStr(char *s) ; 
00136 extern void tolowerStr(char *s) ; 
00137 extern char *strCaseStr (char *s, char *t) ;  
00138 extern char *strCopySubstr(char *pszString, char cBegin, char cEnd, Array acSubstr ) ;
00139 extern int strTranslate(char *s, char *fromChars, char *toChars) ;
00140 extern int strTrim(char *s, char *left, char *right) ;
00141 extern void strScramble(char *s) ;
00142 extern void strUnscramble(char *s) ;
00143 extern int isBlankStr(char *s) ;
00144 
00148 #define strDiffer(s1,s2) (strcmp((s1),(s2)) != 0)
00149 
00153 #define strEqual(s1,s2) (strcmp((s1),(s2)) == 0)
00154 
00158 #define strNDiffer(s1,s2,n) (strncmp((s1),(s2),n) != 0)
00159 
00163 #define strNEqual(s1,s2,n) (strncmp((s1),(s2),n) == 0)
00164 
00165 
00166 #if BIOS_PLATFORM == BIOS_PLATFORM_IRIX || BIOS_PLATFORM == BIOS_PLATFORM_SOLARIS || BIOS_PLATFORM == BIOS_PLATFORM_LINUX
00167 #define strCaseDiffer(s1,s2) (strcasecmp((s1),(s2)) != 0)
00168 #define strCaseEqual(s1,s2) (strcasecmp((s1),(s2)) == 0)
00169 #define strNCaseDiffer(s1,s2,n) (strncasecmp((s1),(s2),n) != 0)
00170 #define strNCaseEqual(s1,s2,n) (strncasecmp((s1),(s2),n) == 0)
00171 #endif
00172 
00173 #if BIOS_PLATFORM == BIOS_PLATFORM_WINNT
00174 #define strCaseDiffer(s1,s2) (stricmp((s1),(s2)) != 0)
00175 #define strCaseEqual(s1,s2) (stricmp((s1),(s2)) == 0)
00176 #define strNCaseDiffer(s1,s2,n) (strnicmp((s1),(s2),n) != 0)
00177 #define strNCaseEqual(s1,s2,n) (strnicmp((s1),(s2),n) == 0)
00178 #endif
00179 
00180 
00181 extern int strEndsWith(char *s, char *suffix) ;
00182 
00188 #define strStartsWith(s1,s2) (strncmp((s1),(s2),strlen(s2)) == 0)
00189 
00194 #define strStartsWithC(s1,s2) (strncmp((s1),(s2),sizeof(s2)-1) == 0)
00195 
00196 
00197 
00198 
00199 
00200 
00201 
00205 #define Texta Array
00206 extern Texta textClone(Texta a) ;
00207 extern void textClear(Texta a) ;
00208 
00213 #define textCreate(initialSize) arrayCreate(initialSize,char*)
00214 
00215 
00221 #define textCreateClear(t,n) {if(t) textClear(t); else t=textCreate(n);}
00222 
00227 #define textDestroy(x)    ((x) ? textDestroyFunc(x), x=NULL, 1 : 0)
00228 extern Texta textStrtok(char *s,char *sep);
00229 extern Texta textStrtokP(char *s, char *sep) ;
00230 extern Texta textFieldtok(char *s, char *sep);
00231 extern Texta textFieldtokP(char *s, char *sep);
00232 extern void textUniqKeepOrder(Texta t) ;  
00233 
00237 #define textAdd(t,s) (array((t),arrayMax(t),char*)=hlr_strdup(s))
00238 
00242 #define textItem(text,index)  arru((text),(index),char*)
00243 extern void textJoin(Stringa s, char *sep, Array a ) ;
00244 
00245 
00246 
00247 
00248 
00253 #define wordTokIterCreate(s,seps) wordIterCreate(s,seps,1)
00254 
00259 #define wordFldIterCreate(s,seps) wordIterCreate(s,seps,0)
00260 
00265 #define wordNext(this1) (wordNextG((this1),NULL))
00266 char *wordNextG(WordIter this1, int *lenP) ;
00267 
00272 #define wordIterDestroy(this) (wordIterDestroy_func(this), this=0)
00273 
00274 
00275 
00276 
00277 
00278 
00279 
00280 
00281 
00282 
00283 
00284 
00285 
00286 
00287 
00288 
00289 
00290 
00291 
00292 
00293 
00294 
00295 
00296 
00297 
00298 extern int getLine(FILE *stream, char **buffer, int *buflen) ;
00299 extern int stripNlGetLength(char *line) ;
00300 
00301 
00302 #endif