*** empty log message ***

This commit is contained in:
Viktor Szakats
1999-05-06 21:47:47 +00:00
parent 79bbec6dfc
commit af9bad0e07
13 changed files with 131 additions and 68 deletions

View File

@@ -1,3 +1,34 @@
Thu May 06 22:45:00 1999 Victor Szel <info@szelvesz.hu>
! source/rtl/dates.c:
Fix to STOD(), added error checking to DTOS(), the later can be
disabled to make it faster.
* source/vm/hvm.c, include/extend.h:
strempty() -> hb_strempty(), declaration moved to .h
% source/rtl/strings.c:
hb_strempty() speed optimalization, cleanup.
* source/vm/dynsym.c:
OurStrUpr() -> hb_strupr()
_strgreater -> hb_strgreater()
* source/rtl/console.c:
_outstd() -> hb_outstd()
* source/tools/stringsx.c:
StrToken() -> hb_strtoken()
* source/rtl/strings.c:
LTrim() -> hb_LTrim()
RTrimLen() -> hb_RTrimLen()
Lower() -> hb_Lower()
Upper() -> hb_Upper()
At() -> hb_At()
Val() -> hb_Val()
* source/vm/hvm.c, source/rtl/array.c, source/rtl/strcmp.c,
include/extend.h
OurStrCmp() -> hb_itemStrCmp()
* source/rtl/*.c, source/include/extend.h
julian2greg() -> hb_julian2greg()
greg2julian() -> hb_greg2julian()
Declaration moved to extend.h
Thu May 06 13:58:48 1999 Gonzalo A. Diethelm <Gonzalo.Diethelm@jda.cl>
* source/vm/hvm.c:

View File

@@ -150,7 +150,10 @@ void ArrayRelease( PITEM pArray ); /* releases an array - don't call it - use It
char * ArrayGetString( PITEM pArray, ULONG ulIndex ); /* retrieves the string contained on an array element */
ULONG ArrayGetStringLen( PITEM pArray, ULONG ulIndex ); /* retrieves the string length contained on an array element */
int OurStrCmp( PITEM pFirst, PITEM pSecond ); /* our string compare */
int hb_itemStrCmp( PITEM pFirst, PITEM pSecond ); /* our string compare */
BOOL hb_strempty( char * szText, ULONG ulLen );
long hb_greg2julian( long lDay, long lMonth, long lYear );
void hb_julian2greg( long julian, long * plDay, long * plMonth, long * plYear );
HARBOURFUNC GetMethod( PITEM pObject, PSYMBOL pSymMsg ); /* returns the method pointer of a object class */
char * _GetClassName( PITEM pObject ); /* retrieves an object class name */

View File

@@ -316,7 +316,7 @@ int ArrayScan( PITEM pArray, PITEM pValue, ULONG ulStart, ULONG ulCount )
break;
case IT_STRING :
iRet = ( OurStrCmp( pValue, pItem ) == 0 );
iRet = ( hb_itemStrCmp( pValue, pItem ) == 0 );
break;
}
}

View File

@@ -32,7 +32,7 @@ HARBOUR __ACCEPT( void ) /* Internal Clipper function used in ACCEPT command */
_xfree( szResult );
}
static void _outstd( WORD wParam )
static void hb_outstd( WORD wParam )
{
char * szText;
ULONG ulLenText;
@@ -89,7 +89,7 @@ HARBOUR OUTSTD( void ) /* writes a list of values to the standard output device
for( w = 0; w < _pcount(); w++ )
{
_outstd( w + 1 );
hb_outstd( w + 1 );
if( w < _pcount() - 1) printf( " " );
}
}
@@ -100,7 +100,7 @@ HARBOUR QQOUT( void )
for( w = 0; w < _pcount(); w++ )
{
_outstd( w + 1 );
hb_outstd( w + 1 );
if( w < _pcount() - 1) printf( " " );
}
}

View File

@@ -7,7 +7,11 @@
#include <ctype.h>
#include <time.h>
long greg2julian( long lDay, long lMonth, long lYear )
#ifndef _STRICT_CLIPPER_COMPATIBILITY
#define _OPTIMIZE_DTOS
#endif
long hb_greg2julian( long lDay, long lMonth, long lYear )
{
long lFactor = ( lMonth < 3 ) ? -1: 0;
@@ -17,7 +21,7 @@ long greg2julian( long lDay, long lMonth, long lYear )
lDay - 32075;
}
void julian2greg( long julian, long * plDay, long * plMonth, long * plYear )
void hb_julian2greg( long julian, long * plDay, long * plMonth, long * plYear )
{
long U, V, W, X;
@@ -249,14 +253,43 @@ HARBOUR DTOC( void )
_retc( hb_dtoc (szDate, szDateFormat) );
}
/* QUESTION: Should we drop error checkings to make it faster ? */
/* This function may be called many times in a real world */
/* application, for example in index creation. */
/* Clipper does these checks, anyway. */
HARBOUR DTOS( void )
{
_retc( _pards( 1 ) );
#ifndef _OPTIMIZE_DTOS
if( _pcount() == 1 )
{
if( ISDATE( 1 ) )
{
#endif
_retc( _pards( 1 ) );
#ifndef _OPTIMIZE_DTOS
}
else
{
PITEM pError = _errNew();
_errPutDescription(pError, "Argument error: DTOS");
_errLaunch(pError);
_errRelease(pError);
}
}
else
{
/* QUESTION: Clipper catches this at compile time! */
PITEM pError = _errNew();
_errPutDescription(pError, "Incorrect number of arguments: DTOS");
_errLaunch(pError);
_errRelease(pError);
}
#endif
}
HARBOUR STOD( void )
{
_retds( _parc( 1 ) );
_retds((ISCHAR(1) && _parclen(1) == 8) ? _parc(1) : " ");
}
HARBOUR DAY( void )
@@ -266,7 +299,7 @@ HARBOUR DAY( void )
if( pDate )
{
julian2greg( pDate->value.lDate, &lDay, &lMonth, &lYear );
hb_julian2greg( pDate->value.lDate, &lDay, &lMonth, &lYear );
_retni( lDay );
}
else
@@ -284,7 +317,7 @@ HARBOUR MONTH( void )
if( pDate )
{
julian2greg( pDate->value.lDate, &lDay, &lMonth, &lYear );
hb_julian2greg( pDate->value.lDate, &lDay, &lMonth, &lYear );
_retni( lMonth );
}
else
@@ -302,7 +335,7 @@ HARBOUR YEAR( void )
if( pDate )
{
julian2greg( pDate->value.lDate, &lDay, &lMonth, &lYear );
hb_julian2greg( pDate->value.lDate, &lDay, &lMonth, &lYear );
_retni( lYear );
}
else

View File

@@ -6,13 +6,12 @@
#include <stdlib.h>
#include <extend.h>
long greg2julian( long lDay, long lMonth, long lYear );
void julian2greg( long julian, long * plDay, long * plMonth, long * plYear );
extern STACK stack;
ULONG ulMemoryBlocks = 0, ulMemoryMaxBlocks = 0, ulMemoryMaxConsumed = 0,
ulMemoryConsumed = 0;
ULONG ulMemoryBlocks = 0;
ULONG ulMemoryMaxBlocks = 0;
ULONG ulMemoryMaxConsumed = 0;
ULONG ulMemoryConsumed = 0;
PITEM _param( WORD wParam, WORD wMask )
{
@@ -109,7 +108,7 @@ char * _pards( WORD wParam, ... )
else if( IS_DATE( pItem ) )
{
julian2greg( pItem->value.lDate, &lDay, &lMonth, &lYear );
hb_julian2greg( pItem->value.lDate, &lDay, &lMonth, &lYear );
stack.szDate[ 0 ] = ( lYear / 1000 ) + '0';
stack.szDate[ 1 ] = ( ( lYear % 1000 ) / 100 ) + '0';
@@ -322,7 +321,7 @@ void _retds( char * szDate ) /* szDate must have yyyymmdd format */
/* QUESTION: Is this ok ? we are going to use a long to store the date */
/* QUESTION: What happens if we use sizeof( LONG ) instead ? */
/* QUESTION: Would it break Clipper language code ? */
stack.Return.value.lDate = greg2julian( lDay, lMonth, lYear );
stack.Return.value.lDate = hb_greg2julian( lDay, lMonth, lYear );
}
void _retnd( double dNumber )
@@ -449,7 +448,7 @@ void _stords( char * szDate, WORD wParam, ... ) /* szDate must have yyyymmdd for
pItemRef = stack.pItems + pItem->value.wItem;
ItemRelease( pItemRef );
pItemRef->wType = IT_DATE;
pItemRef->value.lDate = greg2julian( lDay, lMonth, lYear );
pItemRef->value.lDate = hb_greg2julian( lDay, lMonth, lYear );
}
}
}

View File

@@ -9,10 +9,6 @@
extern STACK stack;
extern PSYMBOL symEval;
/* TODO: Someone make a dates.h so this isn't necessary! */
long greg2julian( long lDay, long lMonth, long lYear );
extern void julian2greg( long julian, long * plDay, long * plMonth, long * plYear );
BOOL _evalNew( PEVALINFO pEvalInfo, PITEM pItem )
{
BOOL bResult = FALSE;
@@ -228,7 +224,7 @@ char *_itemGetDS( PITEM pItem, char *szDate )
if( pItem && IS_DATE(pItem) )
{
long lDay, lMonth, lYear;
julian2greg(pItem->value.lDate, &lDay, &lMonth, &lYear);
hb_julian2greg(pItem->value.lDate, &lDay, &lMonth, &lYear);
szDate[ 0 ] = ( lYear / 1000 ) + '0';
szDate[ 1 ] = ( ( lYear % 1000 ) / 100 ) + '0';
@@ -318,7 +314,7 @@ PITEM _itemPutDS( PITEM pItem, char *szDate )
/* QUESTION: Is this ok ? we are going to use a long to store the date */
/* QUESTION: What happens if we use sizeof( LONG ) instead ? */
/* QUESTION: Would it break Clipper language code ? */
pItem->value.lDate = greg2julian(lDay, lMonth, lYear);
pItem->value.lDate = hb_greg2julian(lDay, lMonth, lYear);
return pItem;
}

View File

@@ -4,9 +4,9 @@
#include <extend.h>
int OurStrCmp( PITEM pFirst, PITEM pSecond ) /* Check whether two strings
are equal (0), smaller (-1),
or greater (1) */
int hb_itemStrCmp( PITEM pFirst, PITEM pSecond ) /* Check whether two strings
are equal (0), smaller (-1),
or greater (1) */
{
char *szFirst = pFirst->value.szText;
char *szSecond = pSecond->value.szText;

View File

@@ -9,18 +9,22 @@
#define HB_ISSPACE(c) ((c) == 9 || (c) == 10 || (c) == 13 || (c) == 32)
BOOL strempty( char * szText, long lLen )
BOOL hb_strempty( char * szText, ULONG ulLen )
{
BOOL bStillEmpty = TRUE;
char c;
BOOL bRetVal = TRUE;
while( bStillEmpty && lLen-- ) /* Still blanks ? */
while( ulLen-- )
{
c = *szText++;
if( !HB_ISSPACE(c) )
bStillEmpty = FALSE;
char c = szText[ulLen];
if( !HB_ISSPACE( c ) )
{
bRetVal = FALSE;
break;
}
}
return bStillEmpty;
return bRetVal;
}
/* determines if first char of string is letter */
@@ -57,7 +61,7 @@ HARBOUR ISLOWER( void )
/* trims from the left, and returns a new pointer to szText */
/* also returns the new length in lLen */
char *LTrim( char *szText, long *lLen )
char *hb_LTrim( char *szText, long *lLen )
{
while( *lLen && HB_ISSPACE(*szText) )
{
@@ -78,7 +82,7 @@ HARBOUR LTRIM( void )
if( pText )
{
long lLen = pText->wLength;
char *szText = LTrim(pText->value.szText, &lLen);
char *szText = hb_LTrim(pText->value.szText, &lLen);
_retclen(szText, lLen);
}
@@ -101,7 +105,7 @@ HARBOUR LTRIM( void )
}
/* returns szText and the new length in lLen */
long RTrimLen( char *szText, long lLen )
long hb_RTrimLen( char *szText, long lLen )
{
while( lLen && szText[lLen - 1] == ' ' )
lLen--;
@@ -116,7 +120,7 @@ HARBOUR RTRIM( void )
{
PITEM pText = _param(1, IT_STRING);
if( pText )
_retclen(pText->value.szText, RTrimLen(pText->value.szText, pText->wLength));
_retclen(pText->value.szText, hb_RTrimLen(pText->value.szText, pText->wLength));
else
/* Clipper doesn't error */
_retc("");
@@ -144,9 +148,9 @@ HARBOUR ALLTRIM( void )
if( _pcount() > 0 )
{
char *szText = _parc(1);
long lLen = RTrimLen(szText, _parclen(1));
long lLen = hb_RTrimLen(szText, _parclen(1));
szText = LTrim(szText, &lLen);
szText = hb_LTrim(szText, &lLen);
_retclen(szText, lLen);
}
@@ -272,7 +276,7 @@ HARBOUR PADC( void )
_retc("");
}
ULONG At(char *szSub, long lSubLen, char *szText, long lLen)
ULONG hb_At(char *szSub, long lSubLen, char *szText, long lLen)
{
if( lSubLen )
{
@@ -312,7 +316,7 @@ HARBOUR AT( void )
{
if( pText->wType == IT_STRING && pSub->wType == IT_STRING )
{
_retnl( At(pSub->value.szText, pSub->wLength, pText->value.szText, pText->wLength) );
_retnl( hb_At(pSub->value.szText, pSub->wLength, pText->value.szText, pText->wLength) );
}
else
{
@@ -592,7 +596,7 @@ HARBOUR SUBSTR( void )
}
/* converts szText to lower case. Does not create a new string! */
char *Lower(char *szText, long lLen)
char *hb_Lower(char *szText, long lLen)
{
long i;
for( i = 0; i < lLen; i++ )
@@ -611,7 +615,7 @@ HARBOUR LOWER( void )
{
long lLen = pText->wLength;
_retclen(Lower(pText->value.szText, lLen), lLen);
_retclen(hb_Lower(pText->value.szText, lLen), lLen);
}
else
{
@@ -632,7 +636,7 @@ HARBOUR LOWER( void )
}
/* converts szText to upper case. Does not create a new string! */
char *Upper(char *szText, long lLen)
char *hb_Upper(char *szText, long lLen)
{
long i;
for( i = 0; i < lLen; i++ )
@@ -651,7 +655,7 @@ HARBOUR UPPER( void )
{
long lLen = pText->wLength;
_retclen(Upper(pText->value.szText, lLen), lLen);
_retclen(hb_Upper(pText->value.szText, lLen), lLen);
}
else
{
@@ -956,7 +960,7 @@ HARBOUR STRTRAN( void )
}
/* returns an integer value of "numerical string" */
double Val( char *szText )
double hb_Val( char *szText )
{
return atof(szText);
}
@@ -969,7 +973,7 @@ HARBOUR VAL( void )
PITEM pText = _param(1, IT_STRING);
if( pText )
_retnd(Val(pText->value.szText));
_retnd(hb_Val(pText->value.szText));
else
{
PITEM pError = _errNew();

View File

@@ -14,7 +14,6 @@
extern STACK stack;
void julian2greg(long, long*, long*, long*); /* TOFIX: Should go away */
void StackPop( void ); /* TOFIX: Should go away */
/* Function flags */
@@ -382,7 +381,7 @@ char *DatePicture( long lDate, int iPicFlags, long *lRetSize )
else
{
iPicFlags |= PF_ZERO; /* Pad with zeros */
julian2greg( lDate, &lDay, &lMonth, &lYear );
hb_julian2greg( lDate, &lDay, &lMonth, &lYear );
/* Calculate d/m/y */
}
iLenPic = strlen( szDateFormat );

View File

@@ -17,7 +17,7 @@ HARBOUR STRDUMP( void )
printf("\n");
}
char *StrToken(char *szText, long lText, long lIndex, char cDelimiter, long *lLen)
char *hb_strtoken(char *szText, long lText, long lIndex, char cDelimiter, long *lLen)
{
long wStart, wEnd = 0, wCounter = 0;
@@ -70,7 +70,7 @@ HARBOUR STRTOKEN( void )
if( !cDelimiter )
cDelimiter = ' ';
szText = StrToken(_parc(1), _parclen(1), lIndex, cDelimiter, &lLen);
szText = hb_strtoken(_parc(1), _parclen(1), lIndex, cDelimiter, &lLen);
_stornl(lLen, 4);
_retclen(szText, lLen);

View File

@@ -36,7 +36,7 @@ void LogSymbols( void )
#define LEFT_GREATER 1
#define SYM_EQUAL 0
static WORD _strgreater( char * sz1, char * sz2 )
static WORD hb_strgreater( char * sz1, char * sz2 )
{
/* Values returned : SYM_EQUAL, LEFT_GREATER, RIGHT_GREATER */
@@ -112,7 +112,7 @@ PDYNSYM NewDynSym( PSYMBOL pSymbol ) /* creates a new dynamic symbol */
return pDynSym;
}
static void OurStrUpr( char * szText )
static void hb_strupr( char * szText )
{
char *p;
@@ -126,7 +126,7 @@ PDYNSYM GetDynSym( char * szName ) /* finds and creates a symbol if not found *
char * szUprName = ( char * ) _xgrab( strlen( szName ) + 1 );
strcpy( szUprName, szName ); /* make a copy as we may get a const string */
OurStrUpr( szUprName ); /* turn it uppercase */
hb_strupr( szUprName ); /* turn it uppercase */
/* if( strlen( szUprName ) > 10 )
szUprName[ 10 ] = 0; keeps this here for 10 chars /c compatibility mode */
@@ -176,7 +176,7 @@ PDYNSYM FindDynSym( char * szName )
while( wFirst < wLast )
{
switch( _strgreater( pDynItems[ wMiddle ].pDynSym->pSymbol->szName, szName ) )
switch( hb_strgreater( pDynItems[ wMiddle ].pDynSym->pSymbol->szName, szName ) )
{
case SYM_EQUAL: /* they are equals */
return pDynItems[ wMiddle ].pDynSym;

View File

@@ -25,8 +25,6 @@
#include <pcode.h>
#include <set.h>
BOOL strempty( char * szText, long lLen );
HARBOUR ERRORSYS( void );
HARBOUR ERRORNEW( void );
HARBOUR EVAL( void ); /* Evaluates a codeblock from Harbour */
@@ -751,7 +749,7 @@ void Equal( void )
else if( IS_STRING( pItem1 ) && IS_STRING( pItem2 ) )
{
i = OurStrCmp( pItem1, pItem2 );
i = hb_itemStrCmp( pItem1, pItem2 );
StackPop();
StackPop();
PushLogical( i == 0 );
@@ -859,7 +857,7 @@ void Greater( void )
if( IS_STRING( stack.pPos - 2 ) && IS_STRING( stack.pPos - 1 ) )
{
i = OurStrCmp( stack.pPos - 2, stack.pPos - 1 );
i = hb_itemStrCmp( stack.pPos - 2, stack.pPos - 1 );
StackPop();
StackPop();
PushLogical( i > 0 );
@@ -894,7 +892,7 @@ void GreaterEqual( void )
if( IS_STRING( stack.pPos - 2 ) && IS_STRING( stack.pPos - 1 ) )
{
i = OurStrCmp( stack.pPos - 2, stack.pPos - 1 );
i = hb_itemStrCmp( stack.pPos - 2, stack.pPos - 1 );
StackPop();
StackPop();
PushLogical( i >= 0 );
@@ -1004,7 +1002,7 @@ void Less( void )
if( IS_STRING( stack.pPos - 2 ) && IS_STRING( stack.pPos - 1 ) )
{
i = OurStrCmp( stack.pPos - 2, stack.pPos - 1 );
i = hb_itemStrCmp( stack.pPos - 2, stack.pPos - 1 );
StackPop();
StackPop();
PushLogical( i < 0 );
@@ -1039,7 +1037,7 @@ void LessEqual( void )
if( IS_STRING( stack.pPos - 2 ) && IS_STRING( stack.pPos - 1 ) )
{
i = OurStrCmp( stack.pPos - 2, stack.pPos - 1 );
i = hb_itemStrCmp( stack.pPos - 2, stack.pPos - 1 );
StackPop();
StackPop();
PushLogical( i <= 0 );
@@ -1127,7 +1125,7 @@ void NotEqual( void )
else if( IS_STRING( pItem1 ) && IS_STRING( pItem2 ) )
{
i = OurStrCmp( pItem1, pItem2 );
i = hb_itemStrCmp( pItem1, pItem2 );
StackPop();
StackPop();
PushLogical( i != 0 );
@@ -1853,7 +1851,7 @@ HARBOUR EMPTY()
break;
case IT_STRING:
_retl( strempty( _parc( 1 ), _parclen( 1 ) ) );
_retl( hb_strempty( _parc( 1 ), _parclen( 1 ) ) );
break;
case IT_NUMERIC: