2011-01-27 07:29 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/src/rdd/wacore.c
    % minor optimization

  * harbour/src/rdd/usrrdd/usrrdd.c
    + extended USRRDD_ID() to accept RDD name as parameter

  * harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
  * harbour/src/rdd/usrrdd/rdds/logrdd.prg
    ! fixed to not use:
         ( AScan( RDDLIST( RDT_FULL ), "ARRAYRDD" ) - 1 )
      to extract RDD ID.
      In theory it could work if RDDLIST( 0 ) is used instead
      of RDDLIST( RDT_FULL ) anyhow it's much more efficient to
      simply store RDD ID in static variable inside *_GETFUNCTABLE()
      function
This commit is contained in:
Przemyslaw Czerpak
2011-01-27 06:29:31 +00:00
parent 314a8a3fa5
commit 7caf68b601
5 changed files with 60 additions and 65 deletions

View File

@@ -16,6 +16,23 @@
The license applies to all entries newer than 2009-04-28.
*/
2011-01-27 07:29 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/src/rdd/wacore.c
% minor optimization
* harbour/src/rdd/usrrdd/usrrdd.c
+ extended USRRDD_ID() to accept RDD name as parameter
* harbour/src/rdd/usrrdd/rdds/arrayrdd.prg
* harbour/src/rdd/usrrdd/rdds/logrdd.prg
! fixed to not use:
( AScan( RDDLIST( RDT_FULL ), "ARRAYRDD" ) - 1 )
to extract RDD ID.
In theory it could work if RDDLIST( 0 ) is used instead
of RDDLIST( RDT_FULL ) anyhow it's much more efficient to
simply store RDD ID in static variable inside *_GETFUNCTABLE()
function
2011-01-27 01:30 UTC+0100 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbnetio/utils/netiosrv/netiosrv.prg
* contrib/hbnetio/utils/netiosrv/netiocui.prg

View File

@@ -98,6 +98,8 @@ ANNOUNCE ARRAYRDD
#define RECDATA_DELETED 1
#define RECDATA_SIZEOF 1
static s_nRddID := -1
/*
* non work area methods receive RDD ID as first parameter
* Methods INIT and EXIT does not have to execute SUPER methods - these is
@@ -944,6 +946,8 @@ FUNCTION ARRAYRDD_GETFUNCTABLE( pFuncCount, pFuncTable, pSuperTable, nRddID, pSu
LOCAL cSuperRDD := NIL /* NO SUPER RDD */
LOCAL aMyFunc[ UR_METHODCOUNT ]
s_nRddID := nRddID
aMyFunc[ UR_INIT ] := ( @AR_INIT() )
aMyFunc[ UR_NEW ] := ( @AR_NEW() )
aMyFunc[ UR_FLUSH ] := ( @AR_DUMMY() )
@@ -988,17 +992,11 @@ INIT PROCEDURE ARRAYRDD_INIT()
FUNCTION hb_EraseArrayRdd( cFullName )
LOCAL nReturn := HB_FAILURE
LOCAL aDBFData, oError
LOCAL nRDD, aRDDList
LOCAL hRDDData
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "ARRAYRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in AR_INIT() ? - TODO
hRDDData := USRRDD_RDDDATA( nRDD )
hRDDData := USRRDD_RDDDATA( s_nRddID )
IF hRDDData != NIL
@@ -1080,17 +1078,11 @@ FUNCTION hb_EraseArrayRdd( cFullName )
FUNCTION hb_FileArrayRdd( cFullName )
LOCAL nReturn := HB_FAILURE
LOCAL oError
LOCAL nRDD, aRDDList
LOCAL hRDDData
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "ARRAYRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in AR_INIT() ? - TODO
hRDDData := USRRDD_RDDDATA( nRDD )
hRDDData := USRRDD_RDDDATA( s_nRddID )
IF hRDDData != NIL

View File

@@ -75,6 +75,8 @@
ANNOUNCE LOGRDD
DYNAMIC HB_LOGRDDINHERIT /* To be defined at user level */
STATIC s_nRddID := -1
STATIC FUNCTION LOGRDD_INIT( nRDD )
LOCAL lActive, cFileName, cTag, cRDDName
@@ -186,6 +188,8 @@ FUNCTION LOGRDD_GETFUNCTABLE( pFuncCount, pFuncTable, pSuperTable, nRddID, pSupe
LOCAL cSuperRDD := hb_LogRddInherit() /* We are inheriting from a User Defined RDD */
LOCAL aMyFunc[ UR_METHODCOUNT ]
s_nRddID := nRddID
aMyFunc[ UR_INIT ] := ( @LOGRDD_INIT() )
aMyFunc[ UR_EXIT ] := ( @LOGRDD_EXIT() )
aMyFunc[ UR_CREATE ] := ( @LOGRDD_CREATE() )
@@ -210,18 +214,12 @@ INIT PROCEDURE _LOGRDD_INIT()
/* -------------------------------------------------- */
FUNCTION hb_LogRddLogFileName( cFileName )
LOCAL nRDD, aRDDList
LOCAL aRDDData
LOCAL cOldFileName
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "LOGRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in UR_INIT() ? - TODO
aRDDData := USRRDD_RDDDATA( nRDD )
aRDDData := USRRDD_RDDDATA( s_nRddID )
cOldFileName := aRDDData[ ARRAY_FILENAME ]
@@ -233,18 +231,12 @@ FUNCTION hb_LogRddLogFileName( cFileName )
RETURN cOldFileName
FUNCTION hb_LogRddTag( cTag )
LOCAL nRDD, aRDDList
LOCAL aRDDData
LOCAL cOldTag
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "LOGRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in UR_INIT() ? - TODO
aRDDData := USRRDD_RDDDATA( nRDD )
aRDDData := USRRDD_RDDDATA( s_nRddID )
cOldTag := aRDDData[ ARRAY_TAG ]
@@ -256,18 +248,12 @@ FUNCTION hb_LogRddTag( cTag )
RETURN cOldTag
FUNCTION hb_LogRddActive( lActive )
LOCAL nRDD, aRDDList
LOCAL aRDDData
LOCAL lOldActive
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "LOGRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in UR_INIT() ? - TODO
aRDDData := USRRDD_RDDDATA( nRDD )
aRDDData := USRRDD_RDDDATA( s_nRddID )
lOldActive := aRDDData[ ARRAY_ACTIVE ]
@@ -279,18 +265,12 @@ FUNCTION hb_LogRddActive( lActive )
RETURN lOldActive
FUNCTION hb_LogRddMsgLogBlock( bMsgLogBlock )
LOCAL nRDD, aRDDList
LOCAL aRDDData
LOCAL bOldMsgLogBlock
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "LOGRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in UR_INIT() ? - TODO
aRDDData := USRRDD_RDDDATA( nRDD )
aRDDData := USRRDD_RDDDATA( s_nRddID )
bOldMsgLogBlock := aRDDData[ ARRAY_MSGLOGBLOCK ]
@@ -302,18 +282,12 @@ FUNCTION hb_LogRddMsgLogBlock( bMsgLogBlock )
RETURN bOldMsgLogBlock
FUNCTION hb_LogRddUserLogBlock( bUserLogBlock )
LOCAL nRDD, aRDDList
LOCAL aRDDData
LOCAL bOldUserLogBlock
aRDDList := RDDLIST( RDT_FULL )
nRDD := AScan( aRDDList, "LOGRDD" )
IF s_nRddID >= 0
IF nRDD > 0
nRDD -- // HACK: Possibly an error of nRDD value in UR_INIT() ? - TODO
aRDDData := USRRDD_RDDDATA( nRDD )
aRDDData := USRRDD_RDDDATA( s_nRddID )
bOldUserLogBlock := aRDDData[ ARRAY_MSGLOGBLOCK ]

View File

@@ -2928,13 +2928,24 @@ HB_FUNC( USRRDD_ID )
{
AREAP pArea;
if( HB_ISNUM( 1 ) )
pArea = hb_usrGetAreaPointer( hb_parni( 1 ) );
else
pArea = ( AREAP ) hb_parptr( 1 );
if( HB_ISCHAR( 1 ) )
{
HB_USHORT uiRddId;
LPRDDNODE pRddNode = hb_rddFindNode( hb_parc( 1 ), &uiRddId );
if( pArea && pArea->rddID < s_uiUsrNodes && SELF_USRNODE( pArea ) )
hb_retni( pArea->rddID );
if( pRddNode && uiRddId < s_uiUsrNodes && s_pUsrRddNodes[ uiRddId ] )
hb_retni( uiRddId );
}
else
{
if( HB_ISNUM( 1 ) )
pArea = hb_usrGetAreaPointer( hb_parni( 1 ) );
else
pArea = ( AREAP ) hb_parptr( 1 );
if( pArea && pArea->rddID < s_uiUsrNodes && SELF_USRNODE( pArea ) )
hb_retni( pArea->rddID );
}
}
HB_FUNC( USRRDD_AREADATA )

View File

@@ -372,13 +372,14 @@ const char * hb_rddDefaultDrv( const char * szDriver )
if( szDriver && *szDriver )
{
char szNewDriver[ HB_RDD_MAX_DRIVERNAME_LEN + 1 ];
HB_USHORT uiRddID;
LPRDDNODE pRddNode;
hb_strncpyUpper( szNewDriver, szDriver, sizeof( szNewDriver ) - 1 );
if( !hb_rddFindNode( szNewDriver, &uiRddID ) )
pRddNode = hb_rddFindNode( szNewDriver, NULL );
if( !pRddNode )
return NULL;
pRddInfo->szDefaultRDD = hb_rddGetNode( uiRddID )->szName;
pRddInfo->szDefaultRDD = pRddNode->szName;
}
else if( !pRddInfo->szDefaultRDD && hb_rddGetNode( 0 ) )
{