ChangeLogTag:19991202-18:00 GMT+1 Bruno Cantero <bruno@issnet.net>

This commit is contained in:
Bruno Cantero
1999-12-02 17:13:57 +00:00
parent 2a03bf0622
commit cbd4d2ce9f
7 changed files with 179 additions and 5 deletions

View File

@@ -1,3 +1,13 @@
19991202-18:00 GMT+1 Bruno Cantero <bruno@issnet.net>
* source/rdd/dbeval.prg
* Function dbEval() renamed to Bad_dbEval()
* include/rddapi.h
source/rdd/dbcmd.c
source/rdd/dbf1.c
source/rdd/dbfcdx/dbfcdx1.c
doc/funclist.txt
+ Added dbEval() function.
19991202-01:45 EST Paul Tucker <ptucker@sympatico.ca>
* makefile.vc
+ source/rtl/break.c

View File

@@ -77,7 +77,7 @@ DBCREATE ;R;
DBCREATEIND ;S;
DBDELETE ;R;
DBEDIT ;R;
DBEVAL ;S;
DBEVAL ;R;
DBF ;R;
DBFILTER ;R;
DBGOBOTTOM ;R;

View File

@@ -583,6 +583,7 @@ typedef USHORT ( * DBENTRYP_VP )( AREAP area, LPDBOPENINFO param );
typedef USHORT ( * DBENTRYP_VF )( AREAP area, LPDBFIELDINFO param );
typedef USHORT ( * DBENTRYP_VL )( AREAP area, LPDBLOCKINFO param );
typedef USHORT ( * DBENTRYP_VFI )( AREAP area, LPDBFILTERINFO param );
typedef USHORT ( * DBENTRYP_VEI )( AREAP area, LPDBEVALINFO param );
typedef USHORT ( * DBENTRYP_VLO )( AREAP area, LPDBSCOPEINFO param );
typedef USHORT ( * DBENTRYP_SP )( AREAP area, USHORT * param );
typedef USHORT ( * DBENTRYP_P )( AREAP area, BYTE * param );
@@ -662,9 +663,7 @@ typedef struct _RDDFUNCS
DBENTRYP_V release;
DBENTRYP_SP structSize;
DBENTRYP_P sysName;
#if 0
DBENTRYP_VP dbEval;
#endif
DBENTRYP_VEI dbEval;
DBENTRYP_V pack;
#if 0
DBENTRYP_LSP packRec;

View File

@@ -85,6 +85,7 @@ HARBOUR HB_DBCOMMITALL( void );
HARBOUR HB___DBCONTINUE( void );
HARBOUR HB_DBCREATE( void );
HARBOUR HB_DBDELETE( void );
HARBOUR HB_DBEVAL( void );
HARBOUR HB_DBF( void );
HARBOUR HB_DBFILTER( void );
HARBOUR HB_DBGOBOTTOM( void );
@@ -319,6 +320,96 @@ static ERRCODE defError( AREAP pArea, PHB_ITEM pError )
return hb_errLaunch( pError );
}
static ERRCODE defEval( AREAP pArea, LPDBEVALINFO pEvalInfo )
{
BOOL bEof, bFor, bWhile;
ULONG ulNext;
HB_TRACE(HB_TR_DEBUG, ("defEval(%p, %p)", pArea, pEvalInfo));
if( pEvalInfo->dbsci.itmRecID )
{
SELF_GOTOID( ( AREAP ) pCurrArea->pArea, pEvalInfo->dbsci.itmRecID );
SELF_EOF( ( AREAP ) pCurrArea->pArea, &bEof );
if( !bEof )
{
if( pEvalInfo->dbsci.itmCobWhile )
{
hb_vmPushSymbol( &hb_symEval );
hb_vmPush( pEvalInfo->dbsci.itmCobWhile );
hb_vmDo( 0 );
bWhile = hb_itemGetL( &hb_stack.Return );
}
else
bWhile = TRUE;
if( pEvalInfo->dbsci.itmCobFor )
{
hb_vmPushSymbol( &hb_symEval );
hb_vmPush( pEvalInfo->dbsci.itmCobFor );
hb_vmDo( 0 );
bFor = hb_itemGetL( &hb_stack.Return );
}
else
bFor = TRUE;
if( bWhile && bFor )
{
hb_vmPushSymbol( &hb_symEval );
hb_vmPush( pEvalInfo->itmBlock );
hb_vmDo( 0 );
}
}
return SUCCESS;
}
if( !pEvalInfo->dbsci.fRest || !hb_itemGetL( pEvalInfo->dbsci.fRest ) )
SELF_GOTOP( ( AREAP ) pCurrArea->pArea );
if( pEvalInfo->dbsci.lNext )
ulNext = hb_itemGetNL( pEvalInfo->dbsci.lNext );
SELF_EOF( ( AREAP ) pCurrArea->pArea, &bEof );
while( !bEof )
{
if( pEvalInfo->dbsci.lNext && ulNext-- < 1 )
break;
if( pEvalInfo->dbsci.itmCobWhile )
{
hb_vmPushSymbol( &hb_symEval );
hb_vmPush( pEvalInfo->dbsci.itmCobWhile );
hb_vmDo( 0 );
bWhile = hb_itemGetL( &hb_stack.Return );
if( !bWhile )
break;
}
else
bWhile = TRUE;
if( pEvalInfo->dbsci.itmCobFor )
{
hb_vmPushSymbol( &hb_symEval );
hb_vmPush( pEvalInfo->dbsci.itmCobFor );
hb_vmDo( 0 );
bFor = hb_itemGetL( &hb_stack.Return );
}
else
bFor = TRUE;
if( bFor && bWhile )
{
hb_vmPushSymbol( &hb_symEval );
hb_vmPush( pEvalInfo->itmBlock );
hb_vmDo( 0 );
}
SELF_SKIP( ( AREAP ) pCurrArea->pArea, 1 );
SELF_EOF( ( AREAP ) pCurrArea->pArea, &bEof );
}
return SUCCESS;
}
static ERRCODE defFieldCount( AREAP pArea, USHORT * uiFields )
{
HB_TRACE(HB_TR_DEBUG, ("defFieldCount(%p, %p)", pArea, uiFields));
@@ -728,6 +819,7 @@ static RDDFUNCS defTable = { defBof,
defRelease,
defStructSize,
defSysName,
defEval,
defUnSupported,
defUnSupported,
defClearFilter,
@@ -1304,6 +1396,75 @@ HARBOUR HB_ALIAS( void )
hb_retc( "" );
}
HARBOUR HB_DBEVAL( void )
{
DBEVALINFO pEvalInfo;
if( !pCurrArea )
hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "DBEVAL" );
else
{
pEvalInfo.itmBlock = hb_param( 1, IT_BLOCK );
if( !pEvalInfo.itmBlock )
{
hb_errRT_DBCMD( EG_ARG, 12019, NULL, "DBEVAL" );
return;
}
pEvalInfo.dbsci.itmCobFor = hb_param( 2, IT_BLOCK );
if( !pEvalInfo.dbsci.itmCobFor )
{
if( !ISNIL( 2 ) )
{
hb_errRT_DBCMD( EG_ARG, 22019, NULL, "DBEVAL" );
return;
}
}
pEvalInfo.dbsci.itmCobWhile = hb_param( 3, IT_BLOCK );
if( !pEvalInfo.dbsci.itmCobWhile )
{
if( !ISNIL( 3 ) )
{
hb_errRT_DBCMD( EG_ARG, 32019, NULL, "DBEVAL" );
return;
}
}
pEvalInfo.dbsci.lNext = hb_param( 4, IT_NUMERIC );
if( !pEvalInfo.dbsci.lNext )
{
if( !ISNIL( 4 ) )
{
hb_errRT_DBCMD( EG_ARG, 42019, NULL, "DBEVAL" );
return;
}
}
pEvalInfo.dbsci.itmRecID = hb_param( 5, IT_NUMERIC );
if( !pEvalInfo.dbsci.itmRecID )
{
if( !ISNIL( 5 ) )
{
hb_errRT_DBCMD( EG_ARG, 52019, NULL, "DBEVAL" );
return;
}
}
pEvalInfo.dbsci.fRest = hb_param( 6, IT_LOGICAL );
if( !pEvalInfo.dbsci.fRest )
{
if( !ISNIL( 6 ) )
{
hb_errRT_DBCMD( EG_ARG, 62019, NULL, "DBEVAL" );
return;
}
}
SELF_DBEVAL( ( AREAP ) pCurrArea->pArea, &pEvalInfo );
}
}
HARBOUR HB_DBF( void )
{
LPAREANODE pAreaNode = pWorkAreas;

View File

@@ -80,7 +80,7 @@
* $END$
*/
FUNCTION dbEval( bBlock, bFor, bWhile, nNext, nRecord, lRest )
FUNCTION Bad_dbEval( bBlock, bFor, bWhile, nNext, nRecord, lRest )
LOCAL oError
LOCAL nCounter

View File

@@ -652,6 +652,7 @@ static RDDFUNCS dbfSuper = { 0 };
#define dbfNewArea NULL
#define dbfStructSize NULL
#define dbfSysName NULL
#define dbfEval NULL
#define dbfClearFilter NULL
#define dbfClearLocate NULL
#define dbfFilterText NULL
@@ -2038,6 +2039,7 @@ static RDDFUNCS dbfTable = { dbfBof,
dbfRelease,
dbfStructSize,
dbfSysName,
dbfEval,
dbfPack,
dbfZap,
dbfClearFilter,

View File

@@ -303,6 +303,7 @@ static BOOL hb_cdxWriteMemo( AREAP pArea, LPDBFMEMO pMemo, ULONG * lNewRecNo )
#define cdxRelease NULL
#define cdxStructSize NULL
#define cdxSysName NULL
#define cdxEval NULL
#define cdxPack NULL
#define cdxZap NULL
#define cdxClearFilter NULL
@@ -627,6 +628,7 @@ static RDDFUNCS cdxTable = { cdxBof,
cdxRelease,
cdxStructSize,
cdxSysName,
cdxEval,
cdxPack,
cdxZap,
cdxClearFilter,