📄 strings.hhf
字号:
#macro iindex( parms[] ); hla.overload( parms ) hla.signature( str.iindex2(string, string) ) hla.signature( str.iindex3(string, dword, string) ) hla.endoverload #endmacro procedure iindex2( src1:string; src2:string ); @returns( "@c" ); // and EAX @external( "STR_IINDEX2" ); procedure iindex3( src1:string; offs:dword; src2:string ); @returns( "@c" ); // and EAX @external( "STR_IINDEX3" ); #macro rindex( parms[] ); hla.overload( parms ) hla.signature( str.rindex2(string, string) ) hla.signature( str.rindex3(string, dword, string) ) hla.endoverload #endmacro procedure rindex2( src1:string; src2:string ); @returns( "@c" ); // and EAX @external( "STR_RINDEX2" ); procedure rindex3( src1:string; offs:dword; src2:string ); @returns( "@c" ); // and EAX @external( "STR_RINDEX3" ); #macro irindex( parms[] ); hla.overload( parms ) hla.signature( str.irindex2(string, string) ) hla.signature( str.irindex3(string, dword, string) ) hla.endoverload #endmacro procedure irindex2( src1:string; src2:string ); @returns( "@c" ); // and EAX @external( "STR_IRINDEX2" ); procedure irindex3( src1:string; offs:dword; src2:string ); @returns( "@c" ); // and EAX @external( "STR_IRINDEX3" ); #macro chpos( parms[] ); hla.overload( parms ) hla.signature( str.chpos2( string, char) ) hla.signature( str.chpos3( string, dword, char) ) hla.endoverload #endmacro procedure chpos2( src1:string; src2:char ); @returns( "@c" ); // and EAX @external( "STR_CHPOS2" ); procedure chpos3( src1:string; offs:dword; src2:char ); @returns( "@c" ); // and EAX @external( "STR_CHPOS3" ); #macro ichpos( parms[] ); hla.overload( parms ) hla.signature( str.ichpos2( string, char) ) hla.signature( str.ichpos3( string, dword, char) ) hla.endoverload #endmacro procedure ichpos2( src1:string; src2:char ); @returns( "@c" ); // and EAX @external( "STR_ICHPOS2" ); procedure ichpos3( src1:string; offs:dword; src2:char ); @returns( "@c" ); // and EAX @external( "STR_ICHPOS3" ); #macro rchpos( parms[] ); hla.overload( parms ) hla.signature( str.rchpos2(string, char) ) hla.signature( str.rchpos3(string, dword, char) ) hla.endoverload #endmacro procedure rchpos2( src1:string; src2:char ); @returns( "@c" ); // and EAX @external( "STR_RCHPOS2" ); procedure rchpos3( src1:string; offs:dword; src2:char ); @returns( "@c" ); // and EAX @external( "STR_RCHPOS3" ); #macro irchpos( parms[] ); hla.overload( parms ) hla.signature( str.irchpos2(string, char) ) hla.signature( str.irchpos3(string, dword, char) ) hla.endoverload #endmacro procedure irchpos2( src1:string; src2:char ); @returns( "@c" ); // and EAX @external( "STR_IRCHPOS2" ); procedure irchpos3( src1:string; offs:dword; src2:char ); @returns( "@c" ); // and EAX @external( "STR_IRCHPOS3" ); // Searching for characters in/not in a character set. // // Note: "span" and "brk" are particularly non-mnemonic // names inherited from stdlib v1.x (and the C stdlib). // skipInCset and findInCset are the newer, improved, // names. Eventually (though not right now), the span // and brk names will be deprecated. #macro span( parms[] ); hla.overload( parms ) hla.signature( str.span2(string, cset) ) hla.signature( str.span3(string, dword, cset) ) hla.endoverload #endmacro #macro skipInCset( parms[] ); hla.overload( parms ) hla.signature( str.skipInCset2(string, cset) ) hla.signature( str.skipInCset3(string, dword, cset) ) hla.endoverload #endmacro procedure span2( src1: string; src2:cset ); @returns( "eax" ); // and @c @external( "STR_SKIPINCSET2" ); procedure span3( src1: string; start:dword; src2:cset ); @returns( "eax" ); // and @c @external( "STR_SKIPINCSET3" ); procedure skipInCset2( src1: string; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_SKIPINCSET2" ); procedure skipInCset3( src1: string; start:dword; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_SKIPINCSET3" ); #macro rspan( parms[] ); hla.overload( parms ) hla.signature( str.rspan2(string, cset) ) hla.signature( str.rspan3(string, dword, cset) ) hla.endoverload #endmacro procedure rspan2( src1: string; src2:cset ); @returns( "eax" ); // and @c @external( "STR_RSKIPINCSET2" ); procedure rspan3( src1: string; start:dword; src2:cset ); @returns( "eax" ); // and @c @external( "STR_RSKIPINCSET3" ); #macro rskipInCset( parms[] ); hla.overload( parms ) hla.signature( str.rskipInCset2(string, cset) ) hla.signature( str.rskipInCset3(string, dword, cset) ) hla.endoverload #endmacro procedure rskipInCset2( src1: string; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_RSKIPINCSET2" ); procedure rskipInCset3( src1: string; start:dword; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_RSKIPINCSET3" ); #macro brk( parms[] ); hla.overload( parms ) hla.signature( str.brk2(string, cset) ) hla.signature( str.brk3(string, dword, cset) ) hla.endoverload #endmacro procedure brk2( src1: string; src2:cset ); @returns( "eax" ); // and @c @external( "STR_FINDINCSET2" ); procedure brk3( src1: string; start:dword; src2:cset ); @returns( "eax" ); // and @c @external( "STR_FINDINCSET3" ); #macro findInCset( parms[] ); hla.overload( parms ) hla.signature( str.findInCset2(string, cset) ) hla.signature( str.findInCset3(string, dword, cset) ) hla.endoverload #endmacro procedure findInCset2( src1: string; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_FINDINCSET2" ); procedure findInCset3( src1: string; start:dword; src2:cset ); @returns( "@c" ); // and eax @external( "STR_FINDINCSET3" ); #macro rbrk( parms[] ); hla.overload( parms ) hla.signature( str.rbrk2(string, cset) ) hla.signature( str.rbrk3(string, dword, cset) ) hla.endoverload #endmacro procedure rbrk2( src1: string; src2:cset ); @returns( "eax" ); // and @c @external( "STR_RFINDINCSET2" ); procedure rbrk3( src1: string; start:dword; src2:cset ); @returns( "eax" ); // and @c @external( "STR_RFINDINCSET3" ); #macro rfindInCset( parms[] ); hla.overload( parms ) hla.signature( str.rfindInCset2(string, cset) ) hla.signature( str.rfindInCset3(string, dword, cset) ) hla.endoverload #endmacro procedure rfindInCset2( src1: string; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_RFINDINCSET2" ); procedure rfindInCset3( src1: string; start:dword; src2:cset ); @returns( "@c" ); // and EAX @external( "STR_RFINDINCSET3" ); // String parsing functions: #macro tokenCnt( parms[] ); hla.overload( parms ) hla.signature( str.tokenCnt1(string) ) hla.signature( str.tokenCnt2(string, cset) ) hla.endoverload #endmacro procedure tokenCnt1 ( src :string ); @returns( "eax" ); @external( "STR_TOKENCNT1" ); procedure tokenCnt2 ( src :string; delims :cset ); @returns( "eax" ); @external( "STR_TOKENCNT2" ); procedure tokenize ( src: string; var dest: var; maxStrs: dword ); @returns( "eax" ); @external( "STR_TOKENIZE" ); const tokenize3 :text := "@global:str.tokenize"; procedure tokenize4 ( src: string; delims: cset; var dest: var; maxStrs: dword ); @returns( "eax" ); @external( "STR_TOKENIZE4" ); iterator tokenInStr( src:string ); @external( "STR_TOKENINSTR" ); iterator tokenInStr2( src:string; delims:cset ); @external( "STR_TOKENINSTR2" ); iterator charInString( s:string ); @external( "STR_CHARINSTR" ); iterator wordInString( s:string ); @external( "STR_WORDINSTR" ); procedure a_getField2( s:string; field:dword ); @returns( "@c" ); // carry set = success, returns pointer in EAX @external( "STR_A_GETFIELD2" ); procedure a_getField3( s:string; field:dword; cst:cset ); @returns( "@c" ); // carry set = success, returns pointer in EAX @external( "STR_A_GETFIELD3" ); procedure getField3( s:string; field:dword; dest:string ); @returns( "@c" ); // carry set = success @external( "STR_GETFIELD3" ); procedure getField4( s:string; field:dword; cst:cset; dest:string ); @returns( "@c" ); // carry set = success @external( "STR_GETFIELD4" ); procedure _getFieldIndex( s:string; field:dword; var cst:cset ); // not meant to be called by user since it does not preserve registers @returns( "@c" ); // carry set = success, EAX = index @external( "STR__GETFIELDINDEX" ); procedure rmv1stChar1( s:string ); @returns( "al" ); @external( "STR_RMV1STCHAR1" ); procedure rmv1stChar2( s:string; remainder:string ); @returns( "al" ); @external( "STR_RMV1STCHAR2" ); procedure rmvLastChar1( s:string ); @returns( "al" ); @external( "STR_RMVLASTCHAR1" ); procedure rmvLastChar2( s:string; remainder:string ); @returns( "al" ); @external( "STR_RMVLASTCHAR2" ); procedure _removeWord( s:string; lastWord:boolean; wordStr:string; remainder:string ); @returns( "@c" ); @external( "STR__REMOVEWORD" ); procedure a_rmv1stWord1( s:string ); @returns( "@c" ); @external( "STR_A_RMV1STWORD1" ); procedure a_rmv1stWord2( s:string; remainder:string ); @returns( "@c" ); @external( "STR_A_RMV1STWORD2" ); procedure rmv1stWord2( s:string; wordStr:string ); @returns( "@c" ); // and EAX @external( "STR_RMV1STWORD2" ); procedure rmv1stWord3( s:string; wordStr:string; remainder:string ); @returns( "@c" ); @external( "STR_RMV1STWORD" ); procedure a_rmvLastWord1( s:string ); @returns( "@c" ); @external( "STR_A_RMVLASTWORD1" ); procedure a_rmvLastWord2( s:string; remainder:string ); @returns( "@c" ); @external( "STR_A_RMVLASTWORD2" ); procedure rmvLastWord2( s:string; wordStr:string ); @returns( "@c" ); @external( "STR_RMVLASTWORD2" ); procedure rmvLastWord3( s:string; wordStr:string; remainder:string ); @returns( "@c" ); @external( "STR_RMVLASTWORD3" ); // String formatting functions procedure a_columnize2( var s:var; numStrs:dword ); @returns( "(type string eax)" ); @external( "STR_A_COLUMNIZE2" ); procedure a_columnize3( var s:var; numStrs:dword; tabCols:dword ); @returns( "(type string eax)" ); @external( "STR_A_COLUMNIZE3" ); procedure columnize3( var s:var; numStrs:dword; dest:string ); @external( "STR_COLUMNIZE3" ); procedure columnize4( var s:var; numStrs:dword; tabCols:dword; dest:string ); @external( "STR_COLUMNIZE4" ); procedure spread2( s:string; toWidth:dword ); @returns( "@c" ); @external( "STR_SPREAD2" ); procedure spread3( s:string; toWidth:dword; dest:string ); @returns( "@c" ); @external( "STR_SPREAD3" ); procedure a_spread( s:string; toWidth:dword ); @returns( "@c" ); @external( "STR_A_SPREAD" ); procedure _spread( src:string; dst:string; width:dword ); @external( "STR__SPREAD" ); // utility function, now for calling procedure _tabulate ( s :string; tabCols :dword; var tabCols_a :var; dest :string; tabChar :char ); @external( "STR__TABULATE" ); procedure a_deTab2( s:string; tabCols:dword ); @returns( "(type string eax)" ); @external( "STR_A_DETAB2" ); procedure a_deTab3( s:string; var tabCols:var; numTabs: dword ); @returns( "(type string eax)" ); @external( "STR_A_DETAB3" ); procedure deTab2( s:string; tabCols:dword ); @external( "STR_DETAB2" ); procedure deTab3a( s:string; tabCols:dword; dest:string ); @external( "STR_DETAB3a" ); procedure deTab3b( s:string; var tabCols:var; numTabs: dword ); @external( "STR_DETAB3b" ); procedure deTab4( s:string; var tabCols:var; numTabs: dword; dest:string ); @external( "STR_DETAB4" ); procedure a_enTab2( s:string; tabCols:dword ); @returns( "(type string eax)" ); @external( "STR_A_ENTAB2" ); procedure a_enTab3( s:string; var tabCols:var; numTabs: dword ); @returns( "(type string eax)" ); @external( "STR_A_ENTAB3" ); procedure enTab2( s:string; tabCols:dword ); @external( "STR_ENTAB2" ); procedure enTab3a( s:string; tabCols:dword; dest:string ); @external( "STR_ENTAB3a" ); procedure enTab3b( s:string; var tabCols:var; numTabs: dword ); @external( "STR_ENTAB3b" ); procedure enTab4( s:string; var tabCols:var; numTabs: dword; dest:string ); @external( "STR_ENTAB4" ); // String conversion functions: #macro upper( parms[] ); hla.overload( parms ) hla.signature( str.upper1(string) ) hla.signature( str.upper2(string, string) ) hla.endoverload #endmacro procedure upper1( s: string ); @external( "STR_UPPER1" ); procedure upper2( src: string; dest:string ); @external( "STR_UPPER2" ); procedure a_upper( src: string ); @returns( "(type string eax)" );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -