From 3d67634d2fbba3fb54a6796be51e933f846ae7d6 Mon Sep 17 00:00:00 2001 From: Bruno Cantero Date: Sat, 4 Dec 1999 16:36:47 +0000 Subject: [PATCH] ChangeLogTag:19991204-17:22 GMT+1 Bruno Cantero --- harbour/ChangeLog | 9 ++++ harbour/include/rddapi.h | 10 ++-- harbour/source/rdd/dbcmd.c | 77 +++++++++++++++++++++++++++++ harbour/source/rdd/dbf1.c | 4 ++ harbour/source/rdd/dbfcdx/dbfcdx1.c | 42 ++++++++++++---- harbour/source/rtl/dummy.prg | 2 - 6 files changed, 126 insertions(+), 18 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index e6f19d54ed..7e9c3278f9 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,12 @@ +19991204-17:22 GMT+1 Bruno Cantero + * include/rddapi.h + source/rdd/dbcmd.c + source/rdd/dbf1.c + source/rdd/dbfcdx/dbfcdx1.c + + Added ordBagExt(), ordListAdd() functions. + * source/rtl/dummy.prg + - Removed ordBagExt(), ordListAdd() functions. + 19991204-13:15 GMT+1 Bruno Cantero * include/rddapi.h source/rdd/dbcmd.c diff --git a/harbour/include/rddapi.h b/harbour/include/rddapi.h index 896e2d21de..4b4aad926d 100644 --- a/harbour/include/rddapi.h +++ b/harbour/include/rddapi.h @@ -588,6 +588,7 @@ typedef USHORT ( * DBENTRYP_VLO )( AREAP area, LPDBSCOPEINFO param ); typedef USHORT ( * DBENTRYP_VOC )( AREAP area, LPDBORDERCREATEINFO param ); typedef USHORT ( * DBENTRYP_VOI )( AREAP area, LPDBORDERCONDINFO param ); typedef USHORT ( * DBENTRYP_OI )( AREAP area, LPDBORDERINFO param ); +typedef USHORT ( * DBENTRYP_OII )( AREAP area, USHORT index, LPDBORDERINFO param ); typedef USHORT ( * DBENTRYP_SP )( AREAP area, USHORT * param ); typedef USHORT ( * DBENTRYP_P )( AREAP area, BYTE * param ); typedef USHORT ( * DBENTRYP_PP )( AREAP area, BYTE ** param ); @@ -690,25 +691,22 @@ typedef struct _RDDFUNCS DBENTRYP_VP relEval; DBENTRYP_SVP relText; DBENTRYP_VP setRel; +#endif /* Order Management */ - DBENTRYP_VP orderListAdd; -#endif + DBENTRYP_OI orderListAdd; DBENTRYP_V orderListClear; #if 0 DBENTRYP_VP orderListDelete; DBENTRYP_VP orderListFocus; #endif DBENTRYP_V orderListRebuild; - DBENTRYP_VOI orderCondition; DBENTRYP_VOC orderCreate; DBENTRYP_OI orderDestroy; -#if 0 - DBENTRYP_SVP orderInfo; -#endif + DBENTRYP_OII orderInfo; /* Filters and Scope Settings */ diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 2dca65b107..291f82036d 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -123,9 +123,11 @@ HARBOUR HB_LASTREC( void ); HARBOUR HB_LOCK( void ); HARBOUR HB_LUPDATE( void ); HARBOUR HB_NETERR( void ); +HARBOUR HB_ORDBAGEXT( void ); HARBOUR HB_ORDCONDSET( void ); HARBOUR HB_ORDCREATE( void ); HARBOUR HB_ORDDESTROY( void ); +HARBOUR HB_ORDLISTADD( void ); HARBOUR HB_ORDLISTCLEAR( void ); HARBOUR HB_ORDLISTREBUILD( void ); HARBOUR HB_RDDLIST( void ); @@ -847,11 +849,13 @@ static RDDFUNCS defTable = { defBof, defEval, defUnSupported, defUnSupported, + ( DBENTRYP_OI ) defUnSupported, defUnSupported, defUnSupported, defOrderCondition, ( DBENTRYP_VOC ) defUnSupported, ( DBENTRYP_OI ) defUnSupported, + ( DBENTRYP_OII ) defUnSupported, defClearFilter, defClearLocate, defFilterText, @@ -2905,6 +2909,57 @@ HARBOUR HB_NETERR( void ) hb_retl( bNetError ); } +HARBOUR HB_ORDBAGEXT( void ) +{ + LPRDDNODE pRddNode; + AREAP pTempArea; + USHORT uiSize, uiRddID; + DBORDERINFO pInfo; + + if( !pCurrArea ) + { + hb_rddCheck(); + uiRddID = 0; + pRddNode = hb_rddFindNode( szDefDriver, &uiRddID ); + if( !pRddNode ) + { + hb_retc( "" ); + return; + } + uiSize = sizeof( AREA ); /* Default Size Area */ + pTempArea = ( AREAP ) hb_xgrab( uiSize ); + memset( pTempArea, 0, uiSize ); + pTempArea->lprfsHost = &pRddNode->pTable; + + /* Need more space? */ + SELF_STRUCTSIZE( ( AREAP ) pTempArea, &uiSize ); + if( uiSize > sizeof( AREA ) ) /* Size of Area changed */ + pTempArea = ( AREAP ) hb_xrealloc( pTempArea, uiSize ); + + pRddNode->uiAreaSize = uiSize; /* Update the size of WorkArea */ + pTempArea->rddID = uiRddID; + + if( SELF_NEW( ( AREAP ) pTempArea ) == FAILURE ) + hb_retc( "" ); + else + { + pInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_BAGEXT, &pInfo ); + hb_retc( pInfo.itmResult->item.asString.value ); + hb_itemRelease( pInfo.itmResult ); + SELF_RELEASE( ( AREAP ) pTempArea ); + } + hb_xfree( pTempArea ); + } + else + { + pInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_BAGEXT, &pInfo ); + hb_retc( pInfo.itmResult->item.asString.value ); + hb_itemRelease( pInfo.itmResult ); + } +} + HARBOUR HB_ORDCONDSET( void ) { LPDBORDERCONDINFO pOrderCondInfo; @@ -3014,6 +3069,28 @@ HARBOUR HB_ORDDESTROY( void ) } } +HARBOUR HB_ORDLISTADD( void ) +{ + DBORDERINFO pOrderInfo; + char * szKeyExpr; + + if( pCurrArea ) + { + pOrderInfo.atomBagName = hb_param( 1, IT_STRING ); + pOrderInfo.itmOrder = hb_param( 2, IT_STRING ); + if( !pOrderInfo.itmOrder ) + pOrderInfo.itmOrder = hb_param( 2, IT_NUMERIC ); + if( !pOrderInfo.atomBagName && !pOrderInfo.itmOrder ) + { + hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDLISTADD" ); + return; + } + SELF_ORDLSTADD( ( AREAP ) pCurrArea->pArea, &pOrderInfo ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDLISTADD" ); +} + HARBOUR HB_ORDLISTCLEAR( void ) { if( pCurrArea ) diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index ad5260c939..e2eadb1579 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -653,11 +653,13 @@ static RDDFUNCS dbfSuper = { 0 }; #define dbfStructSize NULL #define dbfSysName NULL #define dbfEval NULL +#define dbfOrderListAdd NULL #define dbfOrderListClear NULL #define dbfOrderListRebuild NULL #define dbfOrderCondition NULL #define dbfOrderCreate NULL #define dbfOrderDestroy NULL +#define dbfOrderInfo NULL #define dbfClearFilter NULL #define dbfClearLocate NULL #define dbfFilterText NULL @@ -2047,11 +2049,13 @@ static RDDFUNCS dbfTable = { dbfBof, dbfEval, dbfPack, dbfZap, + dbfOrderListAdd, dbfOrderListClear, dbfOrderListRebuild, dbfOrderCondition, dbfOrderCreate, dbfOrderDestroy, + dbfOrderInfo, dbfClearFilter, dbfClearLocate, dbfFilterText, diff --git a/harbour/source/rdd/dbfcdx/dbfcdx1.c b/harbour/source/rdd/dbfcdx/dbfcdx1.c index 31b44ed911..3cf7637494 100644 --- a/harbour/source/rdd/dbfcdx/dbfcdx1.c +++ b/harbour/source/rdd/dbfcdx/dbfcdx1.c @@ -462,6 +462,16 @@ static ERRCODE cdxOpenMemFile( AREAP pArea, LPDBOPENINFO pOpenInfo ) return SUCCESS; } +static ERRCODE cdxOrderCreate( AREAP pArea, LPDBORDERCREATEINFO pOrderInfo ) +{ + HB_TRACE(HB_TR_DEBUG, ("cdxOrderCreate(%p, %p)", pArea, pOrderInfo)); + + if( SELF_GOCOLD( pArea ) == FAILURE ) + return FAILURE; + + return SELF_GOTOP( pArea ); +} + static ERRCODE cdxOrderDestroy( AREAP pArea, LPDBORDERINFO pOrderInfo ) { HB_TRACE(HB_TR_DEBUG, ("cdxOrderDestroy(%p, %p)", pArea, pOrderInfo)); @@ -469,6 +479,26 @@ static ERRCODE cdxOrderDestroy( AREAP pArea, LPDBORDERINFO pOrderInfo ) return SUCCESS; } +static ERRCODE cdxOrderInfo( AREAP pArea, USHORT uiIndex, LPDBORDERINFO pInfo ) +{ + HB_TRACE(HB_TR_DEBUG, ("cdxOrderInfo(%p, %hu, %p)", pArea, uiIndex, pInfo)); + + switch( uiIndex ) + { + case DBOI_BAGEXT: + hb_itemPutC( pInfo->itmResult, ".cdx" ); + break; + } + return SUCCESS; +} + +static ERRCODE cdxOrderListAdd( AREAP pArea, LPDBORDERINFO pOrderInfo ) +{ + HB_TRACE(HB_TR_DEBUG, ("cdxOrderListAdd(%p, %p)", pArea, pOrderInfo)); + + return SUCCESS; +} + static ERRCODE cdxOrderListClear( AREAP pArea ) { HB_TRACE(HB_TR_DEBUG, ("cdxOrderListClear(%p)", pArea)); @@ -483,16 +513,6 @@ static ERRCODE cdxOrderListRebuild( AREAP pArea ) return SUCCESS; } -static ERRCODE cdxOrderCreate( AREAP pArea, LPDBORDERCREATEINFO pOrderInfo ) -{ - HB_TRACE(HB_TR_DEBUG, ("cdxOrderCreate(%p, %p)", pArea, pOrderInfo)); - - if( SELF_GOCOLD( pArea ) == FAILURE ) - return FAILURE; - - return SELF_GOTOP( pArea ); -} - static ERRCODE cdxPutValueFile( AREAP pArea, USHORT uiIndex, void * pFile ) { LPFIELD pField; @@ -663,11 +683,13 @@ static RDDFUNCS cdxTable = { cdxBof, cdxEval, cdxPack, cdxZap, + cdxOrderListAdd, cdxOrderListClear, cdxOrderListRebuild, cdxOrderCondition, cdxOrderCreate, cdxOrderDestroy, + cdxOrderInfo, cdxClearFilter, cdxClearLocate, cdxFilterText, diff --git a/harbour/source/rtl/dummy.prg b/harbour/source/rtl/dummy.prg index 418d0e2a27..4c84f67a1d 100644 --- a/harbour/source/rtl/dummy.prg +++ b/harbour/source/rtl/dummy.prg @@ -35,7 +35,6 @@ /* TODO: Dummy functions, should be removed when implemented. */ -FUNCTION ordBagExt() ; RETURN ".ntx" FUNCTION ordBagName() ; RETURN "" FUNCTION ordCond() ; RETURN NIL /* 5.3 */ FUNCTION ordDescend() ; RETURN .F. /* 5.3 */ @@ -48,7 +47,6 @@ FUNCTION ordKeyDel() ; RETURN .F. /* 5.3 */ FUNCTION ordKeyGoto() ; RETURN .F. /* 5.3 */ FUNCTION ordKeyNo() ; RETURN 0 /* 5.3 */ FUNCTION ordKeyVal() ; RETURN NIL /* 5.3 */ -FUNCTION ordListAdd() ; RETURN NIL FUNCTION ordName() ; RETURN "" FUNCTION ordNumber() ; RETURN 0 FUNCTION ordScope() ; RETURN NIL /* 5.3 */