2007-08-31 11:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/source/rtl/hbhex.c
    + added HB_HEXTOSTR() and HB_STRTOHEX() - they are compatible with
      HEXTOSTR() and STRTOHEX() in xHarbour

  * harbour/include/hbcompat.ch
    + added translations for HB_HEXTOSTR(), HB_STRTOHEX()

  * harbour/include/hbextern.ch
    + added new functions

  * harbour/contrib/libct/ctextern.ch
    * updated function list
This commit is contained in:
Przemyslaw Czerpak
2007-08-31 09:55:23 +00:00
parent 42fdc52e58
commit da4d8743b5
5 changed files with 224 additions and 2 deletions

View File

@@ -8,6 +8,20 @@
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
*/
2007-08-31 11:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/hbhex.c
+ added HB_HEXTOSTR() and HB_STRTOHEX() - they are compatible with
HEXTOSTR() and STRTOHEX() in xHarbour
* harbour/include/hbcompat.ch
+ added translations for HB_HEXTOSTR(), HB_STRTOHEX()
* harbour/include/hbextern.ch
+ added new functions
* harbour/contrib/libct/ctextern.ch
* updated function list
2007-08-31 03:25 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rtl/dircmd.prg
* changed STOD() to HB_STOD()

View File

@@ -69,6 +69,7 @@ EXTERNAL ATREPL
EXTERNAL ATTOKEN
EXTERNAL BEFORATNUM
EXTERNAL BITTOC
EXTERNAL BLANK
EXTERNAL BOM
EXTERNAL BOQ
EXTERNAL BOY
@@ -88,6 +89,7 @@ EXTERNAL CHARODD
EXTERNAL CHARONE
EXTERNAL CHARONLY
EXTERNAL CHAROR
EXTERNAL CHARPACK
EXTERNAL CHARRELA
EXTERNAL CHARRELREP
EXTERNAL CHARREM
@@ -98,15 +100,27 @@ EXTERNAL CHARSHL
EXTERNAL CHARSHR
EXTERNAL CHARSLIST
EXTERNAL CHARSORT
EXTERNAL CHARSPREAD
EXTERNAL CHARSUB
EXTERNAL CHARSWAP
EXTERNAL CHARUNPACK
EXTERNAL CHARWIN
EXTERNAL CHARXOR
EXTERNAL CHECKSUM
EXTERNAL CLEARBIT
EXTERNAL CLEAREOL
EXTERNAL CLEARSLOW
EXTERNAL CLEARWIN
EXTERNAL CLEOL
EXTERNAL CLWIN
EXTERNAL COLORREPL
EXTERNAL COLORTON
EXTERNAL COLORWIN
EXTERNAL COMPLEMENT
EXTERNAL COS
EXTERNAL COSH
EXTERNAL COT
EXTERNAL COUNTGETS
EXTERNAL COUNTLEFT
EXTERNAL COUNTRIGHT
EXTERNAL CRYPT
@@ -116,6 +130,7 @@ EXTERNAL CSETCENT
EXTERNAL CSETCURS
EXTERNAL CSETKEY
EXTERNAL CSETREF
EXTERNAL CSETSAFETY
EXTERNAL CTCEXIT
EXTERNAL CTCINIT
EXTERNAL CTEXIT
@@ -126,46 +141,95 @@ EXTERNAL CTOF
EXTERNAL CTOMONTH
EXTERNAL CTON
EXTERNAL CTWINIT
EXTERNAL CURRENTGET
EXTERNAL DAYSINMONTH
EXTERNAL DAYSTOMONTH
EXTERNAL DBFSIZE
EXTERNAL DELETEFILE
EXTERNAL DIRMAKE
EXTERNAL DIRNAME
EXTERNAL DMY
EXTERNAL DOSPARAM
EXTERNAL DOY
EXTERNAL DRIVETYPE
EXTERNAL DTOR
EXTERNAL ENHANCED
EXTERNAL EOM
EXTERNAL EOQ
EXTERNAL EOY
EXTERNAL EXENAME
EXTERNAL EXPAND
EXTERNAL EXPONENT
EXTERNAL FACT
EXTERNAL FAHRENHEIT
EXTERNAL FIELDDECI
EXTERNAL FIELDNUM
EXTERNAL FIELDSIZE
EXTERNAL FILEAPPEND
EXTERNAL FILEATTR
EXTERNAL FILECCLOSE
EXTERNAL FILECCONT
EXTERNAL FILECDATI
EXTERNAL FILECOPEN
EXTERNAL FILECOPY
EXTERNAL FILEDATE
EXTERNAL FILEDELETE
EXTERNAL FILEMOVE
EXTERNAL FILESCREEN
EXTERNAL FILESEEK
EXTERNAL FILESIZE
EXTERNAL FILESMAX
EXTERNAL FILESTR
EXTERNAL FILETIME
EXTERNAL FLOOR
EXTERNAL FTOC
EXTERNAL FV
EXTERNAL GETCLEARA
EXTERNAL GETCLEARB
EXTERNAL GETFLDCOL
EXTERNAL GETFLDROW
EXTERNAL GETFLDVAR
EXTERNAL GETINPUT
EXTERNAL GETPREC
EXTERNAL GETSECRET
EXTERNAL GETVOLINFO
EXTERNAL _HB_CTDSPTIME
EXTERNAL HB_GT_CTW
EXTERNAL HB_GT_CTW_DEFAULT
EXTERNAL INFINITY
EXTERNAL INVERTATTR
EXTERNAL INVERTWIN
EXTERNAL ISBIT
EXTERNAL ISLEAP
EXTERNAL JUSTLEFT
EXTERNAL JUSTRIGHT
EXTERNAL KBDSTAT
EXTERNAL KEYSEC
EXTERNAL KEYTIME
EXTERNAL KSETCAPS
EXTERNAL KSETINS
EXTERNAL KSETNUM
EXTERNAL KSETSCROLL
EXTERNAL LASTDAYOM
EXTERNAL LIKE
EXTERNAL LOG10
EXTERNAL LTOC
EXTERNAL LTON
EXTERNAL MANTISSA
EXTERNAL MAXLINE
EXTERNAL MDY
EXTERNAL MILLISEC
EXTERNAL NTOC
EXTERNAL NTOCDOW
EXTERNAL NTOCMONTH
EXTERNAL NTOCOLOR
EXTERNAL NUL
EXTERNAL NUMAND
EXTERNAL NUMAT
EXTERNAL NUMCOUNT
EXTERNAL NUMDISKL
EXTERNAL NUMHIGH
EXTERNAL NUMLINE
EXTERNAL NUMLOW
EXTERNAL NUMMIRR
EXTERNAL NUMNOT
@@ -189,6 +253,7 @@ EXTERNAL POSRANGE
EXTERNAL POSREPL
EXTERNAL POSUPPER
EXTERNAL PRINTREADY
EXTERNAL PRINTSEND
EXTERNAL PRINTSTAT
EXTERNAL PV
EXTERNAL QUARTER
@@ -198,33 +263,56 @@ EXTERNAL RATE
EXTERNAL REMALL
EXTERNAL REMLEFT
EXTERNAL REMRIGHT
EXTERNAL RENAMEFILE
EXTERNAL REPLALL
EXTERNAL REPLLEFT
EXTERNAL REPLRIGHT
EXTERNAL RESTCURSOR
EXTERNAL RESTGETS
EXTERNAL RESTSETKEY
EXTERNAL RESTTOKEN
EXTERNAL RTOD
EXTERNAL SAVECURSOR
EXTERNAL SAVEGETS
EXTERNAL SAVESETKEY
EXTERNAL SAVETOKEN
EXTERNAL SAYDOWN
EXTERNAL SAYMOVEIN
EXTERNAL SAYSCREEN
EXTERNAL SAYSPREAD
EXTERNAL SCREENATTR
EXTERNAL SCREENFILE
EXTERNAL SCREENMARK
EXTERNAL SCREENMIX
EXTERNAL SCREENSTR
EXTERNAL SCREENTEXT
EXTERNAL SECTOTIME
EXTERNAL SETATLIKE
EXTERNAL SETBIT
EXTERNAL SETCLEARA
EXTERNAL SETCLEARB
EXTERNAL SETDATE
EXTERNAL SETFATTR
EXTERNAL SETFCREATE
EXTERNAL SETFDATI
EXTERNAL SETLASTKEY
EXTERNAL SETPREC
EXTERNAL SETTIME
EXTERNAL SHOWTIME
EXTERNAL SIGN
EXTERNAL SIN
EXTERNAL SINH
EXTERNAL STANDARD
EXTERNAL STRDIFF
EXTERNAL STRFILE
EXTERNAL STRSCREEN
EXTERNAL STRSWAP
EXTERNAL TABEXPAND
EXTERNAL TABPACK
EXTERNAL TAN
EXTERNAL TANH
EXTERNAL TIMETOSEC
EXTERNAL TIMEVALID
EXTERNAL TOKEN
EXTERNAL TOKENAT
EXTERNAL TOKENEND
@@ -235,9 +323,14 @@ EXTERNAL TOKENNEXT
EXTERNAL TOKENNUM
EXTERNAL TOKENSEP
EXTERNAL TOKENUPPER
EXTERNAL TRUENAME
EXTERNAL UNSELECTED
EXTERNAL UNTEXTWIN
EXTERNAL VALPOS
EXTERNAL VOLSERIAL
EXTERNAL VOLUME
EXTERNAL WACLOSE
EXTERNAL WAITPERIOD
EXTERNAL WBOARD
EXTERNAL WBOX
EXTERNAL WCENTER
@@ -254,6 +347,7 @@ EXTERNAL WLASTROW
EXTERNAL WMODE
EXTERNAL WMOVE
EXTERNAL WNUM
EXTERNAL WOM
EXTERNAL WOPEN
EXTERNAL WORDONE
EXTERNAL WORDONLY

View File

@@ -76,6 +76,7 @@
#xtranslate hb_CStr([<x,...>]) => CStr(<x>)
#xtranslate hb_adler32([<x,...>]) => hb_checksum(<x>)
#xtranslate hb_setLastKey([<x,...>])=> setLastKey(<x>)
#else
#xtranslate gtSys => hb_gtSys
@@ -97,6 +98,7 @@
#xtranslate libFree([<x,...>]) => hb_libFree(<x>)
#xtranslate hb_checksum([<x,...>]) => hb_adler32(<x>)
#xtranslate setLastKey([<x,...>]) => hb_setLastKey(<x>)
#xtranslate CStr([<x,...>]) => hb_CStr(<x>)
#xtranslate str(<x>,[<y>],[<y>],<z>)=> iif(<z>, ltrim(str(<x>)), str(<x>))
@@ -129,6 +131,8 @@
#xtranslate HEXTONUM([<c,...>]) => HB_HEXTONUM(<c>)
#xtranslate NUMTOHEX([<n,...>]) => HB_NUMTOHEX(<n>)
#xtranslate HEXTOSTR([<c,...>]) => HB_HEXTOSTR(<c>)
#xtranslate STRTOHEX([<c,...>]) => HB_STRTOHEX(<c>)
#xtranslate RASCAN([<x,...>]) => HB_RASCAN(<x>)

View File

@@ -346,6 +346,8 @@ EXTERNAL HB_ARGSTRING
EXTERNAL HB_ARGV
EXTERNAL HB_COLORINDEX
EXTERNAL HB_COMPILER
EXTERNAL HB_PCODEVER
EXTERNAL HB_BUILDDATE
EXTERNAL HB_FNAMEMERGE
EXTERNAL HB_FNAMESPLIT
EXTERNAL HB_LANGNAME
@@ -405,6 +407,8 @@ EXTERNAL HB_SERIALIZE
EXTERNAL HB_DESERIALIZE
EXTERNAL HB_HEXTONUM
EXTERNAL HB_NUMTOHEX
EXTERNAL HB_HEXTOSTR
EXTERNAL HB_STRTOHEX
EXTERNAL HBCLASS
EXTERNAL HBOBJECT
@@ -964,10 +968,14 @@ EXTERNAL HB_NTOCOLOR
EXTERNAL HB_DISKSPACE
EXTERNAL HB_FCREATE
EXTERNAL HB_FSIZE
EXTERNAL HB_FEOF
EXTERNAL HB_FCOMMIT
EXTERNAL HB_FTEMPCREATE
EXTERNAL HB_GCALL
EXTERNAL HB_KEYPUT
EXTERNAL HB_OEMTOANSI
EXTERNAL HB_OSERROR
EXTERNAL HB_OSDRIVESEPARATOR
EXTERNAL HB_OSPATHDELIMITERS
EXTERNAL HB_OSPATHLISTSEPARATOR
EXTERNAL HB_OSPATHSEPARATOR

View File

@@ -70,9 +70,9 @@ HB_FUNC( HB_HEXTONUM )
if ( c >= '0' && c <= '9' )
iDigit = c - '0';
else if ( c >= 'A' && c <= 'F' )
iDigit = c - 'A' + 10;
iDigit = c - ( 'A' - 10 );
else if ( c >= 'a' && c <= 'f' )
iDigit = c - 'a' + 10;
iDigit = c - ( 'a' - 10 );
else
{
ulNum = 0;
@@ -126,3 +126,105 @@ HB_FUNC( HB_NUMTOHEX )
hb_retc( &ret[ iLen ] );
}
HB_FUNC( HB_STRTOHEX )
{
char * szStr = hb_parc( 1 ), * szSep = "";
ULONG ulStr, ulSep = 0;
if( hb_pcount() > 1 )
{
szSep = hb_parc( 2 );
ulSep = hb_parclen( 2 );
}
if( !szStr || !szSep )
{
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, &hb_errFuncName, HB_ERR_ARGS_BASEPARAMS );
return;
}
ulStr = hb_parclen( 1 );
if( ulStr )
{
ULONG ulDest = ( ulStr << 1 ) + ( ulStr - 1 ) * ulSep;
char * szDest, * szPtr;
szPtr = szDest = ( char * ) hb_xgrab( ulDest + 1 );
do
{
UCHAR uc = ( UCHAR ) *szStr++, ud;
ud = uc >> 4;
*szPtr++ = ud + ( ud < 10 ? '0' : 'A' - 10 );
ud = uc & 0x0F;
*szPtr++ = ud + ( ud < 10 ? '0' : 'A' - 10 );
if( --ulStr && ulSep )
{
memcpy( szPtr, szSep, ulSep );
ulStr += ulSep;
}
}
while( ulStr );
hb_retclen_buffer( szDest, ulDest );
}
else
hb_retc( NULL );
}
HB_FUNC( HB_HEXTOSTR )
{
char * szStr = hb_parc( 1 );
ULONG ulStr;
if( !szStr )
{
hb_errRT_BASE_SubstR( EG_ARG, 3012, NULL, &hb_errFuncName, HB_ERR_ARGS_BASEPARAMS );
return;
}
ulStr = hb_parclen( 1 );
if( ulStr > 1 )
{
ULONG ulDest, ul;
char * szDest, * szPtr;
UCHAR uc;
szDest = szStr;
ul = ulStr;
ulDest = 0;
do
{
char c = *szDest++;
if( ( c >= '0' && c <= '9' ) ||
( c >= 'A' && c <= 'F' ) ||
( c >= 'a' && c <= 'f' ) )
++ulDest;
}
while( --ul );
ulDest >>= 1;
if( ulDest )
{
szPtr = szDest = ( char * ) hb_xgrab( ulDest + 1 );
uc = 0;
for( ul = 0; ul < ulStr; ++ul )
{
char c = szStr[ ul ];
if( c >= '0' && c <= '9' )
uc += c - '0';
else if( c >= 'A' && c <= 'F' )
uc += c - ( 'A' - 10 );
else if( c >= 'a' && c <= 'f' )
uc += c - ( 'a' - 10 );
if( ul & 1 )
*szPtr++ = ( char ) uc;
else
uc <<= 4;
}
hb_retclen_buffer( szDest, ulDest );
return;
}
}
hb_retc( NULL );
}