ChangeLogTag:19991205-14:22 GMT+1 Bruno Cantero <bruno@issnet.net>

This commit is contained in:
Bruno Cantero
1999-12-05 13:35:28 +00:00
parent 3d67634d2f
commit 5941790cc5
6 changed files with 222 additions and 17 deletions

View File

@@ -1,3 +1,14 @@
19991205-14:22 GMT+1 Bruno Cantero <bruno@issnet.net>
* 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 <bruno@issnet.net>
* include/rddapi.h
source/rdd/dbcmd.c

View File

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

View File

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

View File

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

View File

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

View File

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