From 5941790cc5873d1fff1916359cefb3604ab906b9 Mon Sep 17 00:00:00 2001 From: Bruno Cantero Date: Sun, 5 Dec 1999 13:35:28 +0000 Subject: [PATCH] ChangeLogTag:19991205-14:22 GMT+1 Bruno Cantero --- harbour/ChangeLog | 11 ++ harbour/include/rddapi.h | 11 +- harbour/source/rdd/dbcmd.c | 189 +++++++++++++++++++++++++++- harbour/source/rdd/dbf1.c | 4 + harbour/source/rdd/dbfcdx/dbfcdx1.c | 16 +++ harbour/source/rtl/dummy.prg | 8 -- 6 files changed, 222 insertions(+), 17 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 7e9c3278f9..9bd56e59da 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -1,3 +1,14 @@ +19991205-14:22 GMT+1 Bruno Cantero + * include/rddapi.h + source/rdd/dbcmd.c + source/rdd/dbf1.c + source/rdd/dbfcdx/dbfcdx1.c + + Added dbSeek(), IndexOrd(), ordSetFocus(), ordFor(), ordKey(), + ordNumber(), ordName() and ordBagName() functions. + * source/rtl/dummy.prg + - Removed dbSeek(), IndexOrd(), ordSetFocus(), ordFor(), ordKey(), + ordNumber(), ordName() and ordBagName() functions. + 19991204-17:22 GMT+1 Bruno Cantero * include/rddapi.h source/rdd/dbcmd.c diff --git a/harbour/include/rddapi.h b/harbour/include/rddapi.h index 4b4aad926d..13cc6daf20 100644 --- a/harbour/include/rddapi.h +++ b/harbour/include/rddapi.h @@ -600,6 +600,7 @@ typedef USHORT ( * DBENTRYP_VSP )( AREAP area, USHORT action, ULONG lRecord ); typedef USHORT ( * DBENTRYP_SVL )( AREAP area, USHORT index, ULONG * param ); typedef USHORT ( * DBENTRYP_SSI )( AREAP area, USHORT p1, USHORT p2, PHB_ITEM p3 ); typedef USHORT ( * DBENTRYP_ISI )( AREAP area, PHB_ITEM p1, USHORT p2, PHB_ITEM p3 ); +typedef USHORT ( * DBENTRYP_BIB )( AREAP area, BOOL p1, PHB_ITEM p2, BOOL p3 ); #if 0 typedef USHORT ( * DBENTRYP_VPL )( AREAP area, void * p1, LONG p2); @@ -622,9 +623,7 @@ typedef struct _RDDFUNCS DBENTRYP_UL go; DBENTRYP_I goToId; DBENTRYP_V goTop; -#if 0 - DBENTRYP_SI seek; -#endif + DBENTRYP_BIB seek; DBENTRYP_L skip; DBENTRYP_L skipFilter; DBENTRYP_L skipRaw; @@ -700,8 +699,8 @@ typedef struct _RDDFUNCS DBENTRYP_V orderListClear; #if 0 DBENTRYP_VP orderListDelete; - DBENTRYP_VP orderListFocus; #endif + DBENTRYP_OI orderListFocus; DBENTRYP_V orderListRebuild; DBENTRYP_VOI orderCondition; DBENTRYP_VOC orderCreate; @@ -781,7 +780,7 @@ typedef RDDFUNCS * PRDDFUNCS; #define SELF_GOTOID(w, sp) ((*(w)->lprfsHost->goToId)(w, sp)) #define SELF_GOBOTTOM(w) ((*(w)->lprfsHost->goBottom)(w)) #define SELF_GOTOP(w) ((*(w)->lprfsHost->goTop)(w)) -#define SELF_SEEK(w, i, v) ((*(w)->lprfsHost->seek)(w, i, v)) +#define SELF_SEEK(w, i1, v, i2) ((*(w)->lprfsHost->seek)(w, i1, v, i2)) #define SELF_SKIP(w, l) ((*(w)->lprfsHost->skip)(w, l)) #define SELF_SKIPFILTER(w, l) ((*(w)->lprfsHost->skipFilter)(w, l)) #define SELF_SKIPRAW(w, l) ((*(w)->lprfsHost->skipRaw)(w, l)) @@ -935,7 +934,7 @@ typedef RDDFUNCS * PRDDFUNCS; #define SUPER_GOTOID(w, sp) ((*(SUPERTABLE)->goToId)(w, sp)) #define SUPER_GOBOTTOM(w) ((*(SUPERTABLE)->goBottom)(w)) #define SUPER_GOTOP(w) ((*(SUPERTABLE)->goTop)(w)) -#define SUPER_SEEK(w, i, v) ((*(SUPERTABLE)->seek)(w, i, v)) +#define SUPER_SEEK(w, i1, v, i2) ((*(SUPERTABLE)->seek)(w, i1, v, i2)) #define SUPER_SKIP(w, l) ((*(SUPERTABLE)->skip)(w, l)) #define SUPER_SKIPFILTER(w, l) ((*(SUPERTABLE)->skipFilter)(w, l)) #define SUPER_SKIPRAW(w, l) ((*(SUPERTABLE)->skipRaw)(w, l)) diff --git a/harbour/source/rdd/dbcmd.c b/harbour/source/rdd/dbcmd.c index 291f82036d..a16a39ae26 100644 --- a/harbour/source/rdd/dbcmd.c +++ b/harbour/source/rdd/dbcmd.c @@ -97,6 +97,7 @@ HARBOUR HB_DBRECALL( void ); HARBOUR HB_DBRLOCK( void ); HARBOUR HB_DBRLOCKLIST( void ); HARBOUR HB_DBRUNLOCK( void ); +HARBOUR HB_DBSEEK( void ); HARBOUR HB_DBSELECTAREA( void ); HARBOUR HB_DBSETDRIVER( void ); HARBOUR HB_DBSETFILTER( void ); @@ -119,17 +120,24 @@ HARBOUR HB_FIELDPUT( void ); HARBOUR HB_FLOCK( void ); HARBOUR HB_FOUND( void ); HARBOUR HB_HEADER( void ); +HARBOUR HB_INDEXORD( void ); HARBOUR HB_LASTREC( void ); HARBOUR HB_LOCK( void ); HARBOUR HB_LUPDATE( void ); HARBOUR HB_NETERR( void ); HARBOUR HB_ORDBAGEXT( void ); +HARBOUR HB_ORDBAGNAME( void ); HARBOUR HB_ORDCONDSET( void ); HARBOUR HB_ORDCREATE( void ); HARBOUR HB_ORDDESTROY( void ); +HARBOUR HB_ORDFOR( void ); +HARBOUR HB_ORDKEY( void ); HARBOUR HB_ORDLISTADD( void ); HARBOUR HB_ORDLISTCLEAR( void ); HARBOUR HB_ORDLISTREBUILD( void ); +HARBOUR HB_ORDNAME( void ); +HARBOUR HB_ORDNUMBER( void ); +HARBOUR HB_ORDSETFOCUS( void ); HARBOUR HB_RDDLIST( void ); HARBOUR HB_RDDNAME( void ); HARBOUR HB_RDDREGISTER( void ); @@ -812,6 +820,7 @@ static RDDFUNCS defTable = { defBof, ( DBENTRYP_UL ) defUnSupported, ( DBENTRYP_I ) defUnSupported, defUnSupported, + ( DBENTRYP_BIB ) defUnSupported, defSkip, defSkipFilter, defSkipRaw, @@ -851,6 +860,7 @@ static RDDFUNCS defTable = { defBof, defUnSupported, ( DBENTRYP_OI ) defUnSupported, defUnSupported, + ( DBENTRYP_OI ) defUnSupported, defUnSupported, defOrderCondition, ( DBENTRYP_VOC ) defUnSupported, @@ -2294,6 +2304,32 @@ HARBOUR HB_DBRUNLOCK( void ) hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "DBRUNLOCK" ); } +HARBOUR HB_DBSEEK( void ) +{ + PHB_ITEM pKey; + BOOL bSoftSeek, bFindLast; + + if( pCurrArea ) + { + if( !ISNIL( 1 ) ) + { + pKey = hb_param( 1, IT_ANY ); + bSoftSeek = ISLOG( 2 ) ? hb_parl( 2 ) : hb_set.HB_SET_SOFTSEEK; + bFindLast = ISLOG( 3 ) ? hb_parl( 3 ) : FALSE; + if( SELF_SEEK( ( AREAP ) pCurrArea->pArea, bSoftSeek, pKey, bFindLast ) == SUCCESS ) + { + hb_retl( ( ( AREAP ) pCurrArea->pArea )->fFound ); + return; + } + } + else + hb_errRT_DBCMD( EG_ARG, 1001, NULL, "DBSEEK" ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "DBSEEK" ); + hb_retl( FALSE ); +} + HARBOUR HB_DBSELECTAREA( void ) { USHORT uiNewArea; @@ -2871,6 +2907,21 @@ HARBOUR HB_HEADER( void ) } } +HARBOUR HB_INDEXORD( void ) +{ + DBORDERINFO pInfo; + + if( pCurrArea ) + { + pInfo.itmResult = hb_itemPutNI( NULL, 0 ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_NUMBER, &pInfo ); + hb_retni( hb_itemGetNI( pInfo.itmResult ) ); + hb_itemRelease( pInfo.itmResult ); + } + else + hb_retni( 0 ); +} + HARBOUR HB_LASTREC( void ) { HB_RECCOUNT(); @@ -2960,6 +3011,29 @@ HARBOUR HB_ORDBAGEXT( void ) } } +HARBOUR HB_ORDBAGNAME( void ) +{ + DBORDERINFO pOrderInfo; + + if( pCurrArea ) + { + pOrderInfo.itmOrder = hb_param( 1, IT_STRING ); + if( !pOrderInfo.itmOrder ) + pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC ); + if( !pOrderInfo.itmOrder ) + { + hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDBAGNAME" ); + return; + } + pOrderInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_BAGNAME, &pOrderInfo ); + hb_retc( hb_itemGetC( pOrderInfo.itmResult ) ); + hb_itemRelease( pOrderInfo.itmResult ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDBAGNAME" ); +} + HARBOUR HB_ORDCONDSET( void ) { LPDBORDERCONDINFO pOrderCondInfo; @@ -3069,6 +3143,54 @@ HARBOUR HB_ORDDESTROY( void ) } } +HARBOUR HB_ORDFOR( void ) +{ + DBORDERINFO pOrderInfo; + + if( pCurrArea ) + { + pOrderInfo.itmOrder = hb_param( 1, IT_STRING ); + if( !pOrderInfo.itmOrder ) + pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC ); + pOrderInfo.atomBagName = hb_param( 2, IT_STRING ); + if( !pOrderInfo.itmOrder ) + { + hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDFOR" ); + return; + } + pOrderInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_CONDITION, &pOrderInfo ); + hb_retc( hb_itemGetC( pOrderInfo.itmResult ) ); + hb_itemRelease( pOrderInfo.itmResult ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDFOR" ); +} + +HARBOUR HB_ORDKEY( void ) +{ + DBORDERINFO pOrderInfo; + + if( pCurrArea ) + { + pOrderInfo.itmOrder = hb_param( 1, IT_STRING ); + if( !pOrderInfo.itmOrder ) + pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC ); + pOrderInfo.atomBagName = hb_param( 2, IT_STRING ); + if( !pOrderInfo.itmOrder ) + { + hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDKEY" ); + return; + } + pOrderInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_EXPRESSION, &pOrderInfo ); + hb_retc( hb_itemGetC( pOrderInfo.itmResult ) ); + hb_itemRelease( pOrderInfo.itmResult ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDKEY" ); +} + HARBOUR HB_ORDLISTADD( void ) { DBORDERINFO pOrderInfo; @@ -3078,9 +3200,7 @@ HARBOUR HB_ORDLISTADD( void ) { 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 ) + if( !pOrderInfo.atomBagName ) { hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDLISTADD" ); return; @@ -3107,6 +3227,69 @@ HARBOUR HB_ORDLISTREBUILD( void ) hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDLISTCLEAR" ); } +HARBOUR HB_ORDNAME( void ) +{ + DBORDERINFO pOrderInfo; + + if( pCurrArea ) + { + pOrderInfo.itmOrder = hb_param( 1, IT_NUMERIC ); + pOrderInfo.atomBagName = hb_param( 2, IT_STRING ); + if( !pOrderInfo.itmOrder ) + { + hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDNAME" ); + return; + } + pOrderInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_NAME, &pOrderInfo ); + hb_retc( hb_itemGetC( pOrderInfo.itmResult ) ); + hb_itemRelease( pOrderInfo.itmResult ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDNAME" ); +} + +HARBOUR HB_ORDNUMBER( void ) +{ + DBORDERINFO pOrderInfo; + + if( pCurrArea ) + { + pOrderInfo.itmOrder = hb_param( 1, IT_STRING ); + pOrderInfo.atomBagName = hb_param( 2, IT_STRING ); + if( !pOrderInfo.itmOrder ) + { + hb_errRT_DBCMD( EG_ARG, 1006, NULL, "ORDNUMBER" ); + return; + } + pOrderInfo.itmResult = hb_itemPutNI( NULL, 0 ); + SELF_ORDINFO( ( AREAP ) pCurrArea->pArea, DBOI_NUMBER, &pOrderInfo ); + hb_retni( hb_itemGetNI( pOrderInfo.itmResult ) ); + hb_itemRelease( pOrderInfo.itmResult ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDNUMBER" ); +} + +HARBOUR HB_ORDSETFOCUS( void ) +{ + DBORDERINFO pInfo; + + if( pCurrArea ) + { + pInfo.itmOrder = hb_param( 1, IT_STRING ); + if( !pInfo.itmOrder ) + pInfo.itmOrder = hb_param( 1, IT_NUMERIC ); + pInfo.atomBagName = hb_param( 2, IT_STRING ); + pInfo.itmResult = hb_itemPutC( NULL, "" ); + SELF_ORDLSTFOCUS( ( AREAP ) pCurrArea->pArea, &pInfo ); + hb_retc( hb_itemGetC( pInfo.itmResult ) ); + hb_itemRelease( pInfo.itmResult ); + } + else + hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, "ORDSETFOCUS" ); +} + HARBOUR HB_RDDLIST( void ) { USHORT uiType; diff --git a/harbour/source/rdd/dbf1.c b/harbour/source/rdd/dbf1.c index e2eadb1579..270479a7d0 100644 --- a/harbour/source/rdd/dbf1.c +++ b/harbour/source/rdd/dbf1.c @@ -639,6 +639,7 @@ static RDDFUNCS dbfSuper = { 0 }; #define dbfBof NULL #define dbfEof NULL #define dbfFound NULL +#define dbfSeek NULL #define dbfSkip NULL #define dbfSkipFilter NULL #define dbfSkipRaw NULL @@ -655,6 +656,7 @@ static RDDFUNCS dbfSuper = { 0 }; #define dbfEval NULL #define dbfOrderListAdd NULL #define dbfOrderListClear NULL +#define dbfOrderListFocus NULL #define dbfOrderListRebuild NULL #define dbfOrderCondition NULL #define dbfOrderCreate NULL @@ -2012,6 +2014,7 @@ static RDDFUNCS dbfTable = { dbfBof, dbfGoTo, dbfGoToId, dbfGoTop, + dbfSeek, dbfSkip, dbfSkipFilter, dbfSkipRaw, @@ -2051,6 +2054,7 @@ static RDDFUNCS dbfTable = { dbfBof, dbfZap, dbfOrderListAdd, dbfOrderListClear, + dbfOrderListFocus, dbfOrderListRebuild, dbfOrderCondition, dbfOrderCreate, diff --git a/harbour/source/rdd/dbfcdx/dbfcdx1.c b/harbour/source/rdd/dbfcdx/dbfcdx1.c index 3cf7637494..7ad432fc49 100644 --- a/harbour/source/rdd/dbfcdx/dbfcdx1.c +++ b/harbour/source/rdd/dbfcdx/dbfcdx1.c @@ -506,6 +506,13 @@ static ERRCODE cdxOrderListClear( AREAP pArea ) return SUCCESS; } +static ERRCODE cdxOrderListFocus( AREAP pArea, LPDBORDERINFO pOrderInfo ) +{ + HB_TRACE(HB_TR_DEBUG, ("cdxOrderListFocus(%p, %p)", pArea, pOrderInfo)); + + return SUCCESS; +} + static ERRCODE cdxOrderListRebuild( AREAP pArea ) { HB_TRACE(HB_TR_DEBUG, ("cdxOrderListRebuild(%p)", pArea)); @@ -542,6 +549,13 @@ static ERRCODE cdxPutValueFile( AREAP pArea, USHORT uiIndex, void * pFile ) return SUCCESS; } +static ERRCODE cdxSeek( AREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL bFindLast ) +{ + HB_TRACE(HB_TR_DEBUG, ("cdxSeek(%p, %d, %p, %d)", pArea, bSoftSeek, pKey, bFindLast)); + + return SUCCESS; +} + static ERRCODE cdxWriteDBHeader( AREAP pArea ) { DBFHEADER pHeader; @@ -646,6 +660,7 @@ static RDDFUNCS cdxTable = { cdxBof, cdxGoTo, cdxGoToId, cdxGoTop, + cdxSeek, cdxSkip, cdxSkipFilter, cdxSkipRaw, @@ -685,6 +700,7 @@ static RDDFUNCS cdxTable = { cdxBof, cdxZap, cdxOrderListAdd, cdxOrderListClear, + cdxOrderListFocus, cdxOrderListRebuild, cdxOrderCondition, cdxOrderCreate, diff --git a/harbour/source/rtl/dummy.prg b/harbour/source/rtl/dummy.prg index 4c84f67a1d..2ca4699e50 100644 --- a/harbour/source/rtl/dummy.prg +++ b/harbour/source/rtl/dummy.prg @@ -35,27 +35,19 @@ /* TODO: Dummy functions, should be removed when implemented. */ -FUNCTION ordBagName() ; RETURN "" FUNCTION ordCond() ; RETURN NIL /* 5.3 */ FUNCTION ordDescend() ; RETURN .F. /* 5.3 */ -FUNCTION ordFor() ; RETURN NIL FUNCTION ordIsUnique() ; RETURN .F. /* 5.3 */ -FUNCTION ordKey() ; RETURN "" FUNCTION ordKeyAdd() ; RETURN .F. /* 5.3 */ FUNCTION ordKeyCount() ; RETURN 0 /* 5.3 */ 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 ordName() ; RETURN "" -FUNCTION ordNumber() ; RETURN 0 FUNCTION ordScope() ; RETURN NIL /* 5.3 */ -FUNCTION ordSetFocus() ; RETURN 0 FUNCTION ordSetRelation() ; RETURN NIL /* 5.3 */ FUNCTION ordSkipUnique() ; RETURN .F. /* 5.3 */ -FUNCTION IndexOrd() ; RETURN 0 -FUNCTION dbSeek() ; RETURN .F. FUNCTION dbSetRelation() ; RETURN NIL FUNCTION dbClearRelation() ; RETURN NIL FUNCTION dbFileGet() ; RETURN .F. /* 5.3 */