20000305-13:47 GMT+1 Victor Szakats <info@szelvesz.hu>

This commit is contained in:
Viktor Szakats
2000-03-05 12:51:35 +00:00
parent 4c558d32c4
commit 856ea2013e
21 changed files with 166 additions and 157 deletions

View File

@@ -1,3 +1,32 @@
20000305-13:47 GMT+1 Victor Szakats <info@szelvesz.hu>
* 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 <culik@sl.conex.net>
*utils/hbdoc/genrtf.prg
*source/tools/rtf.prg

View File

@@ -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) -+$@,,

View File

@@ -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

View File

@@ -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 \

View File

@@ -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 );
}

View File

@@ -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
{

View File

@@ -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 ) ) );
}

View File

@@ -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