Beschreibe hier die neue Seite.--- |
Von IstAssertSinnvoll. Ergänzendes Material zur Diskussion. [[Code] /* ** gf_str.h GFL Advanced String Functions ** (C) Helmut Leitner Software 1990-1996 */ /* BIT =================================================================*/ IN BitRetVal?(CH *set,OS ind); #define BitClear? BitSetOff? VO BitSetOff?(CH *set,OS ind); VO BitSetOn?(CH *set,OS ind); VO BitSetVal?(CH *set,OS ind,IN val); VO BitChange?(CH *set,OS ind); VO BitmapSetStr?(CH *set,CH *s); OS BitmapRetCount?(CH *set,OS bytes); #define BitmapClear? MemClear? #define BitmapNot? MemNot? #define BitmapAnd? MemAnd? #define BitmapXor? MemXor? #define BitmapOr? MemOr? #define BitFlagSet? IntSetBitMaskVal? VO IntSetBitMaskVal?(IN *pi,IN bitmask,IN val); IN {BitRetVal Rev}?(CH *set,OS ind); VO {BitSetVal Rev}?(CH *set,OS ind,CH val); /* CHR =================================================================*/ #define CHRSETLEN 64 extern CH InStrBitmap?[]; extern CH InValBitmap?[]; extern CH ChrDecimalPoint?; extern CH ChrCommercialSep?; extern CH ChrUpperTabOem?[256]; extern CH ChrLowerTabOem?[256]; extern CH ChrKeyTabOem?[256]; extern CH ChrUpperTabAnsi?[256]; extern CH ChrLowerTabAnsi?[256]; extern CH ChrKeyTabAnsi?[256]; extern CH *ChrUpperTab?; /* [256] */ extern CH *ChrLowerTab?; /* [256] */ extern CH *ChrKeyTab?; /* [256] */ extern CH ChrAltTab?[35]; IN ChrRetUpper?(IN c); IN ChrRetLower?(IN c); #define ChrEquUpper?(s1,s2) (ChrCmpUpper?((s1),(s2))==0) IN ChrCmpUpper?(CH c1,CH c2); #define StrEquUpper?(s1,s2) (StrCmpUpper?((s1),(s2))==0) IN StrCmpUpper?(CH *s1,CH *s2); IN ChrRetChrKey?(IN c); IN KeyAltRetChr?(IN c); ER ChrGetHex?(CH c,IN *pi); /* CHR2 ================================================================*/ extern CH ChrOemAnsiTab?[256]; extern CH ChrAnsiOemTab?[256]; IN ChrOemRetAnsi?(IN c); IN ChrAnsiRetOem?(IN c); VO StrOemCvtAnsi?(CH *s); VO StrAnsiCvtOem?(CH *s); /* STR =================================================================*/ #define lenof(s) (sizeof(s)-1) /* use for CH buf[10]; StrCpyLen?(buf,string,lenof(buf)); */ #define StrClear?(s) *(s)='\0' VO StrClearSave?(CH *s); #define StrSize? StrRetSize? #define StrRetSize?(s) (strlen(s)+1) #define StrRetLen? strlen #define StrLen? strlen #define StrCpy? strcpy #define StrCat? strcat #define StrFindStr? strstr CH *StrFindStrUpper?(CH *s,CH *ss); #define StrFindChr? strchr #define StrFindAnyChr? strpbrk #define StrFindChrAny? strpbrk #define StrFindChrFromStr? strpbrk #define StrCmp? strcmp #define StrEqu?(s,p) (!strcmp((s),(p))) #define StrCmpLen? strncmp #define StrEquLen?(s,p,len) (!strncmp(s,p,len)) #define StrCpyFmt? sprintf #define StrDelLen? StrDel? extern CH StrBuf?[256]; VO StrCvtChrTab?(CH *s,CH *ctab); VO StrCvtCodeset?(CH *s,IN cs1,IN cs2); VO StrCvtUpper?(CH *s); VO StrCvtLower?(CH *s); VO StrCvtKeyCodeset?(CH *s,IN codeset); IN StrCmpPlus?(CH *s,CH *p); VO StrSetChrLen?(CH *s,CH c,OS len); VO StrCpyLen?(CH *d,CH *s,OS len); ER StrCpyPosLen?(CH *d,CH *s,OS pos,OS len); VO StrCpyLenTerm?(CH *d,CH *s,OS len,CH *term); VO StrCpyLenTermChr?(CH *d,CH *s,OS len,CH cterm); VO StrCpyTermChr?(CH *d,CH *s,CH cterm); IN StrRange?(CH *s1,CH *s,CH *s2); VO StrFill?(CH *s,OS len); VO StrFillChr?(CH *s,OS len,CH c); VO StrStrip?(CH *s); VO StrStripChr?(CH *s,CH c); VO StrStripFront?(CH *s); VO StrStripChrFront?(CH *s,CH c); VO StrStripBoth?(CH *s); ER StrStripBrackets?(CH *s,CH c1,CH c2); CH *StrMoveToLastChr?(CH *s); IN StrEmpty?(CH *s); VO StrInsChr?(CH *s,CH c); #define StrDelChrAll? StrDelChr? VO StrDelChr?(CH *s,CH c); VO StrDel?(CH *s,OS n); VO StrInsStr?(CH *s,CH *i); VO StrInsChrLen?(CH *s,CH c,CH clen); #if defined({WATCOM C}?) VO StrCpyFmtPtr?(CH *buf,CH **pfmt,...); #else VO StrCpyFmtPtr?(CH *buf,CH **pfmt); #endif #define StrCreate? StrSave? #define StrCreateStr? StrSave? #define PtrCreateStr? StrSave? CH *StrSave?(CH *s); #define StrFree? PtrFree? IN StrEmptyLen?(CH *p,OS len); OS StrChrPosEnd?(CH *p,CH c,OS len); ER StrFindChrPos?(CH *s,CH c,OS *ppos); #define StrFindChrLast? StrFindLastChr? CH *StrFindLastChr?(CH *s,CH c); CH StrRetChrLast?(CH *s); OS StrLenChr?(CH *s,CH c); #define StrCountChr? StrFindChrCount? #define StrGetChrCount? StrFindChrCount? #define StrRetChrCount? StrFindChrCount? OS StrFindChrCount?(CH *p,CH c); #define StrCountStr? StrFindStrCount? #define StrGetStrCount? StrFindStrCount? OS StrFindStrCount?(CH *s,CH *ss); VO SaveSetStr?(CH **save,CH *s); VO SaveSetFmt?(CH **save,CH *fmt,...); DO StrRetValPlus?(CH *s,IN opt); ER StrSetValPlus?(CH *s,DO y,IN w,IN d,IN opt); /* MEM */ #define MemCpy? memmove #define MemCpyFast? memcpy #define MemSetChr?(p,size,c) memset((p),(c),(size)) #define MemClear?(p,size) memset((p),'\0',(size)) #define MemCmp? memcmp #define MemEqu?(s,p,size) (memcmp((s),(p),(size))==0) #define StrEquMem?(s,p,size) (StrCmpMem?((s),(p),(size))==0) IN MemEmpty?(CH *p,OS len); OS MemCountChr?(CH *p,OS len,CH c); #define PtrCreateMem? MemSave? CH *MemSave?(CH *s,OS len); CH *MemSaveStr?(CH *s,OS len); VO StrCpyMem?(CH *s,CH *p,OS len); IN StrCmpMem?(CH *s,CH *p,OS len); CH *MemFindMem?(CH *p,OS len,CH *ss,OS sslen); CH *MemFindMemUpper?(CH *p,OS len,CH *ss,OS sslen); CH *MemFindStr?(CH *p,OS len,CH *ss); CH *MemFindStrUpper?(CH *p,OS len,CH *ss); VO MemFill?(CH *p,OS len,CH c); OS MemChrPosEnd?(CH *p,CH c,OS len); #define {CRYPT OFF}? 0 /* dir, falls erforderlich */ #define {CRYPT ON}? 1 VO MemCrypt?(CH *p,OS size); VO {MemCrypt txt}?(CH *p,OS size,IN dir); VO MemRev?(CH *p,OS len); VO MemRollLeft?(CH *p,OS len,OS shift); VO MemAnd?(CH *dset,CH *set,OS bytes); VO MemOr?(CH *dset,CH *set,OS bytes); VO MemXor?(CH *dset,CH *set,OS bytes); VO MemNot?(CH *set,OS bytes); VO MemSwap?(CH *p1,CH *p2,OS size); VO PtrSwap?(CH **p1,CH **p2); /* MEMH */ VO MemCpyHuge?(CH HUGE *d,CH HUGE *s,OS size); VO MemNotHuge?(CH HUGE *set,OS bytes); VO {BitHugeSetVal Rev}?(CH HUGE *set,OS el,CH val); IN {BitHugeRetVal Rev}?(CH HUGE *set,OS el); /* STR2 =============================================================== */ #define StrFindStrGetPos? StrFindStrPos? ER StrFindStrPos?(CH *s,CH *ss,OS *ppos); CH *StrFindWord?(CH *p,CH *word); ER StrFindWordPos?(CH *pstart,CH *word,OS *ppos); CH *StrFindHeadGetTail?(CH *s,CH *head,CH tail[]); IN StrFindStrFlag?(CH *s,CH *ss); CH *StrFindSepGetFrontEnd?(CH *s,CH *sep,CH head[],CH tail[]); CH *StrFindVarGetVal?(CH *s,CH *var,CH val[]); #define StrFindVarIndGetVal? StrFindVarIndexGetVal? CH *StrFindVarIndexGetVal?(CH *s,CH *var,IN j,CH val[]); CH *StrFindVarGetInt?(CH *s,CH *var,IN *pi); CH *StrFindVarGetLong?(CH *s,CH *var,LO *pl); CH *StrFindVarGetDouble?(CH *s,CH *var,DO *pd); CH *StrFindVarGetIntDefault?(CH *s,CH *var,IN *pi,IN def); CH *StrFindVarGetLongDefault?(CH *s,CH *var,LO *pl,LO def); VO StrFindChrCut?(CH *s,CH c); VO StrGetVis?(CH *line,CH *cmd); VO StrStripLineTerm?(CH *line); VO StrStripIndex?(CH *nam); VO StrRepChr?(CH *s,CH c1,CH c2); ER StrFindChrCall?(CH *p,CH c,ER (*f)(CH *)); ER StrFindStrCall?(CH *p,CH *ss,ER (*f)(CH *)); ER StrChrIndGetStr?(CH *s,CH c,IN ind,CH *d); extern OS TextDimLinMax?; extern OS TextDimColMax?; VO TextGetExtent?(CH *titel,CH *p,OS maxlin,OS maxcol,OS *pnlin,OS *pncol); #define StrSepIndGetPart? StrGetPart? #define StrChrIndGetPart? StrGetChrPart? ER StrGetPart?(CH *s,CH *ss,IN part,CH *d); ER StrGetPartInt?(CH *s,CH *ss,IN ind,IN *pval); ER StrGetPartIntDefault?(CH *s,CH *ss,IN ind,IN *pval,IN def); ER StrGetChrPart?(CH *s,CH c,IN part,CH *d); ER StrGetMid?(CH *s,OS pos,OS len,CH *part); VO StrGetWinRet?(CH *line,IN *pret); #define {SFB TOTAL}? 0x0001 /* Liefert auch Kopf- und Fuázeilen */ ER StrFindBlockGetMemPlus?(CH *s,CH *word,CH **pm,OS *plen,IN flags); LO MemHexRetLong?(CH *p,OS size); LO StrHexRetLong?(CH *s); /* LINE =============================================================== */ VO StrCpyLine?(CH *s,CH *line); OS LineRetLen?(CH *s); OS LineRetSize?(CH *s); CH *LineFindStr?(CH *s,CH *ss); CH *LineFindChr?(CH *p,CH c); #define LineCvtStr? StrStripLineTerm? /* SCAN =============================================================== */ OS ScanSpace?(CH **ps); OS ScanLong?(CH **ps,LO *pl); OS ScanInt?(CH **ps,IN *pi); OS ScanUI?(CH **ps,UI *pi); OS ScanOS?(CH **ps,OS *pl); OS ScanToChr?(CH **ps,CH c1,CH c2); OS ScanLine?(CH **ps,CH *line); OS ScanLineStrip?(CH **ps,CH *line); extern IN {ScanStrPlus StrFlag}?; OS ScanStrPlus?(CH **ps,CH **pd); OS ScanStr?(CH **ps,CH *d); /* TOKEN ============================================================== */ /* Zeichen-Typ fr die Zerlegung von Text in Tokens */ #define {SWI DEFAULT}? 0 #define {SWI SPACE}? 1 #define {SWI SLASH}? 2 #define {SWI NULL}? 3 #define {SWI BLOCK}? 4 #define {SWI LOGIC}? 5 #define {SWI DELIM}? 6 #define {SWI NUMBER}? 7 #define {SWI IDENT}? 8 #define {SWI QUOTE}? 9 #define {SWI EOL}? 10 #define {SWI EOL2}? 11 #define {SWI OTHER}? 12 /* TokenLogic? */ #define {LOGIC LT}? 1 #define {LOGIC LE}? 2 #define {LOGIC GT}? 3 #define {LOGIC GE}? 4 #define {LOGIC EQ}? 5 #define {LOGIC NE}? 6 #define {LOGIC OR}? 7 #define {LOGIC AND}? 8 #define {LOGIC BINOR}? 9 #define {LOGIC BINAND}? 10 /* TokenClass? */ #define {TOKEN INVALID}? -1 #define {TOKEN END}? 0 #define {TOKEN DELIMITER}? 1 #define {TOKEN IDENTIFIER}? 2 #define {TOKEN NUMBER}? 3 #define {TOKEN STRING}? 4 #define {TOKEN BLOCK}? 5 #define {TOKEN EOL}? 6 #define {TOKEN COMMENT}? 7 #define {TOKEN SPACE}? 8 #define {TOKEN OTHER}? 9 #define {TOKEN LINE}? 10 /* Nur bei TokenGetLine? */ /* TokenMode? */ #define {TM SEE ALL}? 0xFFFF #define {TM SEE EOL}? 1 #define {TM SEE COMMENT}? 2 #define {TM SEE SPACE}? 4 #define {TM SEE QUOTE}? 8 #define {TM SEE LINEEOL}? 16 #define {TOKEN IS ENDDELIM}? TokenEnd?[TokenSwitchTable?[*TokenReadPtr?]] #define {TOKEN IS NUMBER}? (TokenSwitchTable?[*TokenReadPtr?]=={SWI NUMBER}?) #define {TOKEN ADV}? { TokenReadPtr?++; TokenLen?++; } #define {TOKEN ADV2}? { TokenReadPtr?+=2; TokenLen?+=2; } extern CH *TokenReadPtr?; extern CH *Token; extern IN TokenLen?; extern IN TokenClass?; /* Frher TokenType? */ extern IN TokenLogic?; extern IN TokenMode?; extern IN TokenMultiLines?; /* Frher TokenCommentLines? */ extern CH TokenQuote?; /* aktuelles Begrenzungszeichen fr {TOKEN STRING}? */ extern CH TokenSwitchTable?[256]; extern CH TokenEnd?[16]; IN ScanToken?(CH **pread,CH **ptoken,IN *ptype); IN TokenGetLine?(VO); IN StrCmpToken?(CH *s); #define StrEquToken?(s) (!StrCmpToken?(s)) CH *TokenSave?(VO); VO StrCpyToken?(CH *s); VO BufferTokenInit?(BUFFER *b,IN mode); IN BufferAppToken?(BUFFER *b); /* STR3.C */ IN StrExist?(CH *s); VO StrFillFront?(CH *s,IN n); #define StrAppChr? StrCatChr? VO StrCatChr?(CH *s,CH c); #define StrAppFmt? StrCatFmt? VO StrCatFmt?(CH *s,CH *fmt,...); VO StrInsFmt?(CH *s,CH *fmt,...); #define StrAppSize? StrCatSize? ER StrCatSize?(CH *d,CH *s,OS size); #define StrAppSizeFmt? StrCatSizeFmt? ER StrCatSizeFmt?(CH *s,OS size,CH *fmt,...); #define StrEquLenUpper?(s1,s2,len) (StrCmpLenUpper?((s1),(s2),(len))==0) IN StrCmpLenUpper?(CH *s1,CH *s2,IN len); CH *StrFindHeadTailGetVar?(CH *s,CH *head,CH *tail,CH *var); IN StrStripDigits?(CH *s); VO StrCpyChr?(CH *buf,CH c); VO StrInsChrSorted?(CH *s,CH c); VO StrRepStrAll?(CH *s,CH *s1,CH *s2); /* HTML */ extern CH HtmlKnowChr?; /* ='@' */ CH *HtmlFindTagGetVal?(CH *s,CH *tag,CH *val,IN maxsize); CH *HtmlFindTagSimpleGetText?(CH *s,CH *tag,CH *val,IN maxsize); CH *HtmlFindPropGetValFull?(CH *content,CH *prop,CH *val,IN maxsize); CH *HtmlFindPropGetVal?(CH *content,CH *prop,CH *val,IN maxsize); CH *HtmlFindPropGetValKeepDefault?(CH *content,CH *prop,CH *val,IN maxsize); CH *HtmlFindPropGetInt?(CH *content,CH *prop,IN *pi); CH *HtmlFindPropGetIntKeepDefault?(CH *content,CH *prop,IN *pi); CH *HtmlFindPropGetLong?(CH *content,CH *prop,LO *pl); CH *HtmlFindPropGetLongKeepDefault?(CH *content,CH *prop,LO *pl); CH *HtmlFindPropGetDouble?(CH *content,CH *prop,DO *pd); CH *HtmlFindTagPropGetValFull?(CH *s,CH *tag,CH *prop,CH *val,IN maxsize); CH *HtmlFindTagPropGetVal?(CH *s,CH *tag,CH *prop,CH *val,IN maxsize); #if defined({HLS WIN}?) ER {StrGetColor HTML}?(CH *s,COLORREF *pcr); CH *HtmlFindPropGetColor?(CH *content,CH *prop,COLORREF *pcr); CH *HtmlFindPropGetColorKeepDefault?(CH *content,CH *prop,COLORREF *pcr); CH *HtmlFindTagPropGetColorDefault?(CH *s,CH *tag,CH *prop,COLORREF *pcr,COLORREF cr_default); #endif ] |
![]() |
|