diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 9db7f1a984..bc35587bc5 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,32 @@ +20000305-13:47 GMT+1 Victor Szakats + * source/rtl/empty.c + source/rtl/valtype.c + ! Item->type access change to API call. + % Optimized. Some variables and branches removed. + * source/rtl/strings.c + ! All direct item accesses changed to Item API calls. + % Some calls eliminated by using local variables. + * source/rtl/arrays.c + source/rtl/break.c + source/rtl/classes.c + source/rtl/codebloc.c + source/rtl/extend.c + source/rtl/fm.c + source/rtl/harbinit.prg + source/rtl/initexit.c + source/rtl/itemapi.c + source/rtl/memvars.c + source/rtl/pcount.c + source/rtl/proc.c + source/rtl/pvalue.c + + All these files moved to source/vm/* + Now only the functions in VM are using low-level Harbour structures. + * makefile.bc + makefile.vc (not tested) + source/rtl/Makefile + source/vm/Makefile + * Make files changed according to the RTL->VM moves. + 20000304-08:20 GMT-3 Luiz Rafael Culik *utils/hbdoc/genrtf.prg *source/tools/rtf.prg diff --git a/harbour/makefile.bc b/harbour/makefile.bc index 0d668d293e..20f1adedbb 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -458,7 +458,7 @@ $(OBJ_DIR)\alert.obj : $(OBJ_DIR)\alert.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\arrays.obj : $(RTL_DIR)\arrays.c +$(OBJ_DIR)\arrays.obj : $(VM_DIR)\arrays.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -473,7 +473,7 @@ $(OBJ_DIR)\binnum.obj : $(RTL_DIR)\binnum.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\break.obj : $(RTL_DIR)\break.c +$(OBJ_DIR)\break.obj : $(VM_DIR)\break.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -491,7 +491,7 @@ $(OBJ_DIR)\browse.obj : $(OBJ_DIR)\browse.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\classes.obj : $(RTL_DIR)\classes.c +$(OBJ_DIR)\classes.obj : $(VM_DIR)\classes.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -499,7 +499,7 @@ $(OBJ_DIR)\cmdarg.obj : $(VM_DIR)\cmdarg.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\codebloc.obj : $(RTL_DIR)\codebloc.c +$(OBJ_DIR)\codebloc.obj : $(VM_DIR)\codebloc.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -594,7 +594,7 @@ $(OBJ_DIR)\errorsys.obj : $(OBJ_DIR)\errorsys.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\extend.obj : $(RTL_DIR)\extend.c +$(OBJ_DIR)\extend.obj : $(VM_DIR)\extend.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -609,11 +609,11 @@ $(OBJ_DIR)\filesys.obj : $(RTL_DIR)\filesys.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\fm.obj : $(RTL_DIR)\fm.c +$(OBJ_DIR)\fm.obj : $(VM_DIR)\fm.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\harbinit.c : $(RTL_DIR)\harbinit.prg +$(OBJ_DIR)\harbinit.c : $(VM_DIR)\harbinit.prg $(HARBOUR_EXE) $** -i$(INCLUDE_DIR) -n $(HARBOUR_OPT) -o$@ $(OBJ_DIR)\harbinit.obj : $(OBJ_DIR)\harbinit.c @@ -628,7 +628,7 @@ $(OBJ_DIR)\hvm.obj : $(VM_DIR)\hvm.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\initexit.obj : $(RTL_DIR)\initexit.c +$(OBJ_DIR)\initexit.obj : $(VM_DIR)\initexit.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -651,7 +651,7 @@ $(OBJ_DIR)\isprint.obj : $(RTL_DIR)\isprint.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\itemapi.obj : $(RTL_DIR)\itemapi.c +$(OBJ_DIR)\itemapi.obj : $(VM_DIR)\itemapi.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -694,7 +694,7 @@ $(OBJ_DIR)\memvarbl.obj : $(OBJ_DIR)\memvarbl.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\memvars.obj : $(RTL_DIR)\memvars.c +$(OBJ_DIR)\memvars.obj : $(VM_DIR)\memvars.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, @@ -748,15 +748,15 @@ $(OBJ_DIR)\oldclear.obj : $(RTL_DIR)\oldclear.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\pcount.obj : $(RTL_DIR)\pcount.c +$(OBJ_DIR)\pcount.obj : $(VM_DIR)\pcount.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\proc.obj : $(RTL_DIR)\proc.c +$(OBJ_DIR)\proc.obj : $(VM_DIR)\proc.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, -$(OBJ_DIR)\pvalue.obj : $(RTL_DIR)\pvalue.c +$(OBJ_DIR)\pvalue.obj : $(VM_DIR)\pvalue.c $(BCC_EXE) $(BCC_OPT) -c -I$(INCLUDE_DIR) -o$@ $** tlib $(HARBOUR_LIB) -+$@,, diff --git a/harbour/makefile.vc b/harbour/makefile.vc index 179ff5c958..dd5dcc6dbf 100644 --- a/harbour/makefile.vc +++ b/harbour/makefile.vc @@ -544,7 +544,7 @@ $(OBJ_DIR)\alert.c : $(RTL_DIR)\alert.prg $(OBJ_DIR)\alert.obj : $(OBJ_DIR)\alert.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\arrays.obj : $(RTL_DIR)\arrays.c +$(OBJ_DIR)\arrays.obj : $(VM_DIR)\arrays.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\asort.c : $(RTL_DIR)\asort.prg @@ -556,7 +556,7 @@ $(OBJ_DIR)\asort.obj : $(OBJ_DIR)\asort.c $(OBJ_DIR)\binnum.obj : $(RTL_DIR)\binnum.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\break.obj : $(RTL_DIR)\break.c +$(OBJ_DIR)\break.obj : $(VM_DIR)\break.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\browdb.c : $(RTL_DIR)\browdb.prg @@ -571,10 +571,10 @@ $(OBJ_DIR)\browse.c : $(RTL_DIR)\browse.prg $(OBJ_DIR)\browse.obj : $(OBJ_DIR)\browse.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\classes.obj : $(RTL_DIR)\classes.c +$(OBJ_DIR)\classes.obj : $(VM_DIR)\classes.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\codebloc.obj : $(RTL_DIR)\codebloc.c +$(OBJ_DIR)\codebloc.obj : $(VM_DIR)\codebloc.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\console.obj : $(RTL_DIR)\console.c @@ -634,7 +634,7 @@ $(OBJ_DIR)\errorsys.c : $(RTL_DIR)\errorsys.prg $(OBJ_DIR)\errorsys.obj : $(OBJ_DIR)\errorsys.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\extend.obj : $(RTL_DIR)\extend.c +$(OBJ_DIR)\extend.obj : $(VM_DIR)\extend.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\fieldbl.c : $(RTL_DIR)\fieldbl.prg @@ -646,7 +646,7 @@ $(OBJ_DIR)\fieldbl.obj : $(OBJ_DIR)\fieldbl.c $(OBJ_DIR)\filesys.obj : $(RTL_DIR)\filesys.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\fm.obj : $(RTL_DIR)\fm.c +$(OBJ_DIR)\fm.obj : $(VM_DIR)\fm.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\gtapi.obj : $(RTL_DIR)\gtapi.c @@ -655,7 +655,7 @@ $(OBJ_DIR)\gtapi.obj : $(RTL_DIR)\gtapi.c $(OBJ_DIR)\gtxxx.obj : $(RTL_DIR)\gtxxx.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\harbinit.c : $(RTL_DIR)\harbinit.prg +$(OBJ_DIR)\harbinit.c : $(VM_DIR)\harbinit.prg $(HARBOUR_EXE) $** $(HARBOURFLAGS) -o$@ $(OBJ_DIR)\harbinit.obj : $(OBJ_DIR)\harbinit.c @@ -673,7 +673,7 @@ $(OBJ_DIR)\hbfsapi.obj : $(COMMON_DIR)\hbfsapi.c $(OBJ_DIR)\hbstr.obj : $(COMMON_DIR)\hbstr.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\initexit.obj : $(RTL_DIR)\initexit.c +$(OBJ_DIR)\initexit.obj : $(VM_DIR)\initexit.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\inkey.obj : $(RTL_DIR)\inkey.c @@ -688,7 +688,7 @@ $(OBJ_DIR)\input.obj : $(OBJ_DIR)\input.c $(OBJ_DIR)\isprint.obj : $(RTL_DIR)\isprint.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\itemapi.obj : $(RTL_DIR)\itemapi.c +$(OBJ_DIR)\itemapi.obj : $(VM_DIR)\itemapi.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\langapi.obj : $(RTL_DIR)\langapi.c @@ -712,7 +712,7 @@ $(OBJ_DIR)\memvarbl.c : $(RTL_DIR)\memvarbl.prg $(OBJ_DIR)\memvarbl.obj : $(OBJ_DIR)\memvarbl.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\memvars.obj : $(RTL_DIR)\memvars.c +$(OBJ_DIR)\memvars.obj : $(VM_DIR)\memvars.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\menuto.c : $(RTL_DIR)\menuto.prg @@ -760,13 +760,13 @@ $(OBJ_DIR)\oldbox.obj : $(RTL_DIR)\oldbox.c $(OBJ_DIR)\oldclear.obj : $(RTL_DIR)\oldclear.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\pcount.obj : $(RTL_DIR)\pcount.c +$(OBJ_DIR)\pcount.obj : $(VM_DIR)\pcount.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\proc.obj : $(RTL_DIR)\proc.c +$(OBJ_DIR)\proc.obj : $(VM_DIR)\proc.c $(CC) $(CLIBFLAGS) -Fo$@ $** -$(OBJ_DIR)\pvalue.obj : $(RTL_DIR)\pvalue.c +$(OBJ_DIR)\pvalue.obj : $(VM_DIR)\pvalue.c $(CC) $(CLIBFLAGS) -Fo$@ $** $(OBJ_DIR)\readkey.c : $(RTL_DIR)\readkey.prg diff --git a/harbour/source/rtl/Makefile b/harbour/source/rtl/Makefile index fe8a110dfd..0b4e0589b6 100644 --- a/harbour/source/rtl/Makefile +++ b/harbour/source/rtl/Makefile @@ -5,11 +5,7 @@ ROOT = ../../ C_SOURCES=\ - arrays.c \ binnum.c \ - break.c \ - classes.c \ - codebloc.c \ console.c \ copyfile.c \ dates.c \ @@ -19,21 +15,16 @@ C_SOURCES=\ empty.c \ environ.c \ errorapi.c \ - extend.c \ filesys.c \ - fm.c \ gtapi.c \ hardcr.c \ - initexit.c \ inkey.c \ isprint.c \ - itemapi.c \ langapi.c \ len.c \ math.c \ memofile.c \ memoline.c \ - memvars.c \ mlcount.c \ mlpos.c \ mouseapi.c \ @@ -43,9 +34,6 @@ C_SOURCES=\ oemansi.c \ oldbox.c \ oldclear.c \ - pcount.c \ - proc.c \ - pvalue.c \ samples.c \ set.c \ setcolor.c \ @@ -76,7 +64,6 @@ PRG_SOURCES=\ dummy.prg \ errorsys.prg \ fieldbl.prg \ - harbinit.prg \ input.prg \ memvarbl.prg \ menuto.prg \ diff --git a/harbour/source/rtl/empty.c b/harbour/source/rtl/empty.c index a5863d77d0..3969c4115a 100644 --- a/harbour/source/rtl/empty.c +++ b/harbour/source/rtl/empty.c @@ -40,53 +40,44 @@ HARBOUR HB_EMPTY( void ) { PHB_ITEM pItem = hb_param( 1, IT_ANY ); - /* NOTE: Double safety to ensure that a parameter was really passed, - compiler checks this, but a direct hb_vmDo() call - may not do so. [vszakats] */ - - if( pItem ) + switch( hb_itemType( pItem ) & ~IT_BYREF ) { - switch( pItem->type & ~IT_BYREF ) - { - case IT_ARRAY: - hb_retl( hb_arrayLen( pItem ) == 0 ); - break; + case IT_ARRAY: + hb_retl( hb_arrayLen( pItem ) == 0 ); + break; - case IT_STRING: - case IT_MEMO: - hb_retl( hb_strEmpty( hb_itemGetCPtr( pItem ), hb_itemGetCLen( pItem ) ) ); - break; + case IT_STRING: + case IT_MEMO: + hb_retl( hb_strEmpty( hb_itemGetCPtr( pItem ), hb_itemGetCLen( pItem ) ) ); + break; - case IT_INTEGER: - hb_retl( hb_itemGetNI( pItem ) == 0 ); - break; + case IT_INTEGER: + hb_retl( hb_itemGetNI( pItem ) == 0 ); + break; - case IT_LONG: - hb_retl( hb_itemGetNL( pItem ) == 0 ); - break; + case IT_LONG: + hb_retl( hb_itemGetNL( pItem ) == 0 ); + break; - case IT_DOUBLE: - hb_retl( hb_itemGetND( pItem ) == 0.0 ); - break; + case IT_DOUBLE: + hb_retl( hb_itemGetND( pItem ) == 0.0 ); + break; - case IT_DATE: - hb_retl( hb_itemGetDL( pItem ) == 0 ); - break; + case IT_DATE: + hb_retl( hb_itemGetDL( pItem ) == 0 ); + break; - case IT_LOGICAL: - hb_retl( ! hb_itemGetL( pItem ) ); - break; + case IT_LOGICAL: + hb_retl( ! hb_itemGetL( pItem ) ); + break; - case IT_BLOCK: - hb_retl( FALSE ); - break; + case IT_BLOCK: + hb_retl( FALSE ); + break; - default: - hb_retl( TRUE ); - break; - } + default: + hb_retl( TRUE ); + break; } - else - hb_retl( TRUE ); } diff --git a/harbour/source/rtl/strings.c b/harbour/source/rtl/strings.c index 09a43defa6..432e625191 100644 --- a/harbour/source/rtl/strings.c +++ b/harbour/source/rtl/strings.c @@ -254,8 +254,8 @@ HARBOUR HB_LTRIM( void ) if( pText ) { - ULONG ulLen = pText->item.asString.length; - char * szText = hb_strLTrim( pText->item.asString.value, &ulLen ); + ULONG ulLen = hb_itemGetCLen( pText ); + char * szText = hb_strLTrim( hb_itemGetCPtr( pText ), &ulLen ); hb_retclen( szText, ulLen ); } @@ -300,8 +300,10 @@ HARBOUR HB_RTRIM( void ) if( pText ) { + char * pszText = hb_itemGetCPtr( pText ); BOOL bAnySpace = ( ISLOG( 2 ) ? hb_parl( 2 ) : FALSE ); - hb_retclen( pText->item.asString.value, hb_strRTrimLen( pText->item.asString.value, pText->item.asString.length, bAnySpace ) ); + + hb_retclen( pszText, hb_strRTrimLen( pszText, hb_itemGetCLen( pText ), bAnySpace ) ); } else { @@ -394,7 +396,10 @@ static char * hb_itemPadConv( PHB_ITEM pItem, char * buffer, ULONG * pulSize ) } else if( IS_DOUBLE( pItem ) ) { - sprintf( buffer, "%.*f", pItem->item.asDouble.decimal, hb_itemGetND( pItem ) ); + int iDecimal; + + hb_itemGetNLen( pItem, NULL, &iDecimal ); + sprintf( buffer, "%.*f", iDecimal, hb_itemGetND( pItem ) ); szText = buffer; *pulSize = strlen( szText ); } @@ -550,8 +555,8 @@ HARBOUR HB_AT( void ) if( pText && pSub ) { - hb_retnl( hb_strAt( pSub->item.asString.value, pSub->item.asString.length, - pText->item.asString.value, pText->item.asString.length ) ); + hb_retnl( hb_strAt( hb_itemGetCPtr( pSub ), hb_itemGetCLen( pSub ), + hb_itemGetCPtr( pText ), hb_itemGetCLen( pText ) ) ); } else { @@ -637,8 +642,8 @@ HARBOUR HB_ASC( void ) if( pText ) { - if( pText->item.asString.length > 0 ) - hb_retni( ( BYTE ) * ( pText->item.asString.value ) ); + if( hb_itemGetCLen( pText ) > 0 ) + hb_retni( ( BYTE ) * ( hb_itemGetCPtr( pText ) ) ); else hb_retni( 0 ); } @@ -664,13 +669,13 @@ HARBOUR HB_LEFT( void ) { LONG lLen = hb_parnl( 2 ); - if( lLen > ( LONG ) pText->item.asString.length ) - lLen = ( LONG ) pText->item.asString.length; + if( lLen > ( LONG ) hb_itemGetCLen( pText ) ) + lLen = ( LONG ) hb_itemGetCLen( pText ); else if( lLen < 0 ) lLen = 0; - hb_retclen( pText->item.asString.value, lLen ); + hb_retclen( hb_itemGetCPtr( pText ), lLen ); } else { @@ -694,13 +699,13 @@ HARBOUR HB_RIGHT( void ) { LONG lLen = hb_parnl( 2 ); - if( lLen > ( LONG ) pText->item.asString.length ) - lLen = ( LONG ) pText->item.asString.length; + if( lLen > ( LONG ) hb_itemGetCLen( pText ) ) + lLen = ( LONG ) hb_itemGetCLen( pText ); else if( lLen < 0 ) lLen = 0; - hb_retclen( pText->item.asString.value + pText->item.asString.length - lLen, lLen ); + hb_retclen( hb_itemGetCPtr( pText ) + hb_itemGetCLen( pText ) - lLen, lLen ); } else { @@ -721,7 +726,7 @@ HARBOUR HB_SUBSTR( void ) if( lPos < 0 ) { - lPos += ( LONG ) pText->item.asString.length; + lPos += ( LONG ) hb_itemGetCLen( pText ); if( lPos < 0 ) lPos = 0; } @@ -730,7 +735,7 @@ HARBOUR HB_SUBSTR( void ) lPos--; } - if( lPos < ( LONG ) pText->item.asString.length ) + if( lPos < ( LONG ) hb_itemGetCLen( pText ) ) { LONG lLen; @@ -740,8 +745,8 @@ HARBOUR HB_SUBSTR( void ) { lLen = hb_parnl( 3 ); - if( lLen > ( LONG ) pText->item.asString.length - lPos ) - lLen = ( LONG ) pText->item.asString.length - lPos; + if( lLen > ( LONG ) hb_itemGetCLen( pText ) - lPos ) + lLen = ( LONG ) hb_itemGetCLen( pText ) - lPos; } else { @@ -758,10 +763,10 @@ HARBOUR HB_SUBSTR( void ) } } else - lLen = ( LONG ) pText->item.asString.length - lPos; + lLen = ( LONG ) hb_itemGetCLen( pText ) - lPos; if( lLen > 0 ) - hb_retclen( pText->item.asString.value + lPos, lLen ); + hb_retclen( hb_itemGetCPtr( pText ) + lPos, lLen ); else hb_retc( "" ); } @@ -1021,11 +1026,13 @@ HARBOUR HB_STRTRAN( void ) if( pSeek ) { - char * szText = pText->item.asString.value; + char * szText = hb_itemGetCPtr( pText ); + ULONG ulText = hb_itemGetCLen( pText ); + ULONG ulSeek = hb_itemGetCLen( pSeek ); - if( pSeek->item.asString.length && pSeek->item.asString.length <= pText->item.asString.length ) + if( ulSeek && ulSeek <= ulText ) { - char * szSeek = pSeek->item.asString.value; + char * szSeek = hb_itemGetCPtr( pSeek ); char * szReplace; ULONG ulStart; @@ -1045,8 +1052,8 @@ HARBOUR HB_STRTRAN( void ) if( pReplace ) { - szReplace = pReplace->item.asString.value; - ulReplace = pReplace->item.asString.length; + szReplace = hb_itemGetCPtr( pReplace ); + ulReplace = hb_itemGetCLen( pReplace ); } else { @@ -1070,18 +1077,18 @@ HARBOUR HB_STRTRAN( void ) ULONG ulFound = 0; LONG lReplaced = 0; ULONG i = 0; - ULONG ulLength = pText->item.asString.length; + ULONG ulLength = ulText; - while( i < pText->item.asString.length ) + while( i < ulText ) { - if( ( bAll || lReplaced < ( LONG ) ulCount ) && ! memcmp( szText + i, szSeek, pSeek->item.asString.length ) ) + if( ( bAll || lReplaced < ( LONG ) ulCount ) && ! memcmp( szText + i, szSeek, ulSeek ) ) { ulFound++; if( ulFound >= ulStart ) { lReplaced++; - ulLength = ulLength - pSeek->item.asString.length + ulReplace; - i += pSeek->item.asString.length; + ulLength = ulLength - ulSeek + ulReplace; + i += ulSeek; } else i++; @@ -1097,9 +1104,9 @@ HARBOUR HB_STRTRAN( void ) ulFound = 0; i = 0; - while( i < pText->item.asString.length ) + while( i < ulText ) { - if( lReplaced && ! memcmp( szText + i, szSeek, pSeek->item.asString.length ) ) + if( lReplaced && ! memcmp( szText + i, szSeek, ulSeek ) ) { ulFound++; if( ulFound >= ulStart ) @@ -1107,7 +1114,7 @@ HARBOUR HB_STRTRAN( void ) lReplaced--; memcpy( szPtr, szReplace, ulReplace ); szPtr += ulReplace; - i += pSeek->item.asString.length; + i += ulSeek; } else { @@ -1127,16 +1134,16 @@ HARBOUR HB_STRTRAN( void ) hb_xfree( szResult ); } else - hb_retclen( szText, pText->item.asString.length ); - } + hb_retclen( szText, ulText ); + } else - hb_retclen( szText, pText->item.asString.length ); + hb_retclen( szText, ulText ); } else - hb_retclen( szText, pText->item.asString.length ); + hb_retclen( szText, ulText ); } else - hb_retclen( szText, pText->item.asString.length ); + hb_retclen( szText, ulText ); } else { @@ -1178,20 +1185,20 @@ HARBOUR HB_VAL( void ) { int iWidth; int iDec; - char * ptr = strchr( pText->item.asString.value, '.' ); + char * ptr = strchr( hb_itemGetCPtr( pText ), '.' ); if( ptr ) { - iWidth = ptr - pText->item.asString.value; + iWidth = ptr - hb_itemGetCPtr( pText ); iDec = strlen( ptr + 1 ); } else { - iWidth = strlen( pText->item.asString.value ); + iWidth = strlen( hb_itemGetCPtr( pText ) ); iDec = 0; } - hb_retndlen( hb_strVal( pText->item.asString.value ), iWidth, iDec ); + hb_retndlen( hb_strVal( hb_itemGetCPtr( pText ) ), iWidth, iDec ); } else { diff --git a/harbour/source/rtl/valtype.c b/harbour/source/rtl/valtype.c index 6375f92584..43871f5611 100644 --- a/harbour/source/rtl/valtype.c +++ b/harbour/source/rtl/valtype.c @@ -34,61 +34,41 @@ */ #include "hbapi.h" +#include "hbapiitm.h" char * hb_valtypeGet( HB_ITEM_PTR pItem ) { - char * szType; - - switch( pItem->type & ~IT_BYREF ) + switch( hb_itemType( pItem ) & ~IT_BYREF ) { case IT_ARRAY: - szType = ( hb_arrayIsObject( pItem ) ? "O" : "A" ); - break; + return ( hb_arrayIsObject( pItem ) ? "O" : "A" ); case IT_BLOCK: - szType = "B"; - break; + return "B"; case IT_DATE: - szType = "D"; - break; + return "D"; case IT_LOGICAL: - szType = "L"; - break; + return "L"; case IT_INTEGER: case IT_LONG: case IT_DOUBLE: - szType = "N"; - break; + return "N"; case IT_STRING: - szType = "C"; - break; + return "C"; case IT_MEMO: - szType = "M"; - break; - - default: - szType = "U"; - break; + return "M"; } - return szType; + + return "U"; } HARBOUR HB_VALTYPE( void ) { - PHB_ITEM pItem = hb_param( 1, IT_ANY ); - - /* NOTE: Double safety to ensure that a parameter was really passed, - compiler checks this, but a direct hb_vmDo() call - may not do so. [vszakats] */ - - if( pItem ) - hb_retc( hb_valtypeGet( pItem ) ); - else - hb_retc( "U" ); + hb_retc( hb_valtypeGet( hb_param( 1, IT_ANY ) ) ); } diff --git a/harbour/source/vm/Makefile b/harbour/source/vm/Makefile index 77e022a384..436116b0c1 100644 --- a/harbour/source/vm/Makefile +++ b/harbour/source/vm/Makefile @@ -5,12 +5,27 @@ ROOT = ../../ C_SOURCES=\ - cmdarg.c \ - debug.c \ - dynsym.c \ - hvm.c \ - initsymb.c \ - main.c \ + arrays.c \ + break.c \ + classes.c \ + cmdarg.c \ + debug.c \ + dynsym.c \ + codebloc.c \ + extend.c \ + fm.c \ + hvm.c \ + initexit.c \ + initsymb.c \ + itemapi.c \ + main.c \ + memvars.c \ + pcount.c \ + proc.c \ + pvalue.c \ + +PRG_SOURCES=\ + harbinit.prg \ LIBNAME=vm diff --git a/harbour/source/rtl/arrays.c b/harbour/source/vm/arrays.c similarity index 100% rename from harbour/source/rtl/arrays.c rename to harbour/source/vm/arrays.c diff --git a/harbour/source/rtl/break.c b/harbour/source/vm/break.c similarity index 100% rename from harbour/source/rtl/break.c rename to harbour/source/vm/break.c diff --git a/harbour/source/rtl/classes.c b/harbour/source/vm/classes.c similarity index 100% rename from harbour/source/rtl/classes.c rename to harbour/source/vm/classes.c diff --git a/harbour/source/rtl/codebloc.c b/harbour/source/vm/codebloc.c similarity index 100% rename from harbour/source/rtl/codebloc.c rename to harbour/source/vm/codebloc.c diff --git a/harbour/source/rtl/extend.c b/harbour/source/vm/extend.c similarity index 100% rename from harbour/source/rtl/extend.c rename to harbour/source/vm/extend.c diff --git a/harbour/source/rtl/fm.c b/harbour/source/vm/fm.c similarity index 100% rename from harbour/source/rtl/fm.c rename to harbour/source/vm/fm.c diff --git a/harbour/source/rtl/harbinit.prg b/harbour/source/vm/harbinit.prg similarity index 100% rename from harbour/source/rtl/harbinit.prg rename to harbour/source/vm/harbinit.prg diff --git a/harbour/source/rtl/initexit.c b/harbour/source/vm/initexit.c similarity index 100% rename from harbour/source/rtl/initexit.c rename to harbour/source/vm/initexit.c diff --git a/harbour/source/rtl/itemapi.c b/harbour/source/vm/itemapi.c similarity index 100% rename from harbour/source/rtl/itemapi.c rename to harbour/source/vm/itemapi.c diff --git a/harbour/source/rtl/memvars.c b/harbour/source/vm/memvars.c similarity index 100% rename from harbour/source/rtl/memvars.c rename to harbour/source/vm/memvars.c diff --git a/harbour/source/rtl/pcount.c b/harbour/source/vm/pcount.c similarity index 100% rename from harbour/source/rtl/pcount.c rename to harbour/source/vm/pcount.c diff --git a/harbour/source/rtl/proc.c b/harbour/source/vm/proc.c similarity index 100% rename from harbour/source/rtl/proc.c rename to harbour/source/vm/proc.c diff --git a/harbour/source/rtl/pvalue.c b/harbour/source/vm/pvalue.c similarity index 100% rename from harbour/source/rtl/pvalue.c rename to harbour/source/vm/pvalue.c