2006-09-07 01:55 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/rdd/dbcmd.c
! always initialize all members in RDD structures to avoid GPF when
some RDD will try to access uninitialized data
* harbour/source/rdd/usrrdd/usrrdd.c
! added some additional validation in RDD structures <-> item conversions
This commit is contained in:
@@ -8,6 +8,14 @@
|
||||
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
! fixed GPF in __CLSINSTSUPER() class function generate HVM exception
|
||||
% do not inherit unaccessible inline blocks
|
||||
* some other minor optimization, fixes and code cleanups
|
||||
|
||||
* harbour/source/rdd/usrrdd/usrrdd.c
|
||||
! fixed HB_TRACE message
|
||||
|
||||
* harbour/source/rtl/errorapi.c
|
||||
! generate internal error if ErrorNew() function does not return an object
|
||||
|
||||
2006-09-07 16:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
|
||||
@@ -2624,9 +2624,8 @@ HB_FUNC( INDEXORD )
|
||||
if( pArea )
|
||||
{
|
||||
DBORDERINFO pInfo;
|
||||
memset( &pInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pInfo.itmResult = hb_itemPutNI( NULL, 0 );
|
||||
pInfo.itmOrder = NULL;
|
||||
pInfo.atomBagName = NULL;
|
||||
SELF_ORDINFO( pArea, DBOI_NUMBER, &pInfo );
|
||||
hb_retni( hb_itemGetNI( pInfo.itmResult ) );
|
||||
hb_itemRelease( pInfo.itmResult );
|
||||
@@ -2700,8 +2699,7 @@ HB_FUNC( ORDBAGEXT )
|
||||
DBORDERINFO pInfo;
|
||||
AREAP pArea = HB_CURRENT_WA;
|
||||
|
||||
pInfo.itmOrder = NULL;
|
||||
pInfo.atomBagName = NULL;
|
||||
memset( &pInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
if( !pArea )
|
||||
{
|
||||
@@ -2734,23 +2732,24 @@ HB_FUNC( ORDBAGNAME )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
if( ISNUM(1) || ISNIL(1) )
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_ANY );
|
||||
if( pOrderInfo.itmOrder && !HB_IS_STRING( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if( hb_parni(1) == 0 || ISNIL(1) ) /* if NIL or ask for 0, use current order */
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
if( HB_IS_NIL( pOrderInfo.itmOrder ) )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
else if( HB_IS_NUMERIC( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if( hb_itemGetNI( pOrderInfo.itmOrder ) == 0 )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
}
|
||||
else
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
}
|
||||
else
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_REL_BADPARAMETER, NULL, "ORDBAGNAME" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
pOrderInfo.atomBagName = NULL;
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDINFO( pArea, DBOI_BAGNAME, &pOrderInfo );
|
||||
hb_itemReturn( pOrderInfo.itmResult );
|
||||
@@ -2844,8 +2843,11 @@ HB_FUNC( ORDCREATE )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
dbOrderInfo.lpdbOrdCondInfo = pArea->lpdbOrdCondInfo;
|
||||
dbOrderInfo.abBagName = ( BYTE * ) hb_parcx( 1 );
|
||||
dbOrderInfo.atomBagName = ( BYTE * ) hb_parcx( 2 );
|
||||
dbOrderInfo.itmOrder = NULL;
|
||||
dbOrderInfo.fUnique = ISLOG( 5 ) ? hb_parl( 5 ) : hb_set.HB_SET_UNIQUE;
|
||||
dbOrderInfo.abExpr = hb_param( 3, HB_IT_STRING );
|
||||
if( ( ( dbOrderInfo.abBagName == NULL || strlen( ( char * ) dbOrderInfo.abBagName ) == 0 ) &&
|
||||
( dbOrderInfo.atomBagName == NULL || strlen( ( char * ) dbOrderInfo.atomBagName ) == 0 ) ) ||
|
||||
@@ -2855,14 +2857,6 @@ HB_FUNC( ORDCREATE )
|
||||
return;
|
||||
}
|
||||
dbOrderInfo.itmCobExpr = hb_param( 4, HB_IT_BLOCK );
|
||||
if( ISLOG( 5 ) )
|
||||
{
|
||||
dbOrderInfo.fUnique = hb_parl( 5 );
|
||||
}
|
||||
else
|
||||
{
|
||||
dbOrderInfo.fUnique = hb_set.HB_SET_UNIQUE;
|
||||
}
|
||||
|
||||
dbConstrInfo.abConstrName = ( BYTE * ) hb_parc( 6 );
|
||||
dbConstrInfo.abTargetName = ( BYTE * ) hb_parc( 7 );
|
||||
@@ -2877,8 +2871,6 @@ HB_FUNC( ORDCREATE )
|
||||
dbOrderInfo.lpdbConstraintInfo = NULL;
|
||||
}
|
||||
|
||||
dbOrderInfo.lpdbOrdCondInfo = pArea->lpdbOrdCondInfo;
|
||||
|
||||
SELF_ORDCREATE( pArea, &dbOrderInfo );
|
||||
}
|
||||
else
|
||||
@@ -2893,7 +2885,7 @@ HB_FUNC( ORDBAGCLEAR )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.atomBagName = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.atomBagName )
|
||||
pOrderInfo.atomBagName = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -2911,6 +2903,7 @@ HB_FUNC( ORDDESTROY )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -2929,26 +2922,27 @@ HB_FUNC( ORDFOR )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
if ( ISNUM(1) || ISNIL(1) )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_ANY );
|
||||
if( pOrderInfo.itmOrder && !HB_IS_STRING( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if ( hb_parni(1) == 0 || ISNIL(1) ) /* if NIL or ask for 0, use current order */
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
if( HB_IS_NIL( pOrderInfo.itmOrder ) )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
else if( HB_IS_NUMERIC( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if( hb_itemGetNI( pOrderInfo.itmOrder ) == 0 )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
}
|
||||
else
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
}
|
||||
else
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_REL_BADPARAMETER, NULL, "ORDFOR" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pOrderInfo.atomBagName = hb_param( 2, HB_IT_STRING );
|
||||
pOrderInfo.itmNewVal = hb_param( 3, HB_IT_STRING );
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
pOrderInfo.itmCobExpr = NULL;
|
||||
pOrderInfo.fAllTags = FALSE;
|
||||
SELF_ORDINFO( pArea, DBOI_CONDITION, &pOrderInfo );
|
||||
hb_itemReturn( pOrderInfo.itmResult );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
@@ -2965,23 +2959,23 @@ HB_FUNC( ORDKEY )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
if ( ISNUM(1) || ISNIL(1) )
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_ANY );
|
||||
if( pOrderInfo.itmOrder && !HB_IS_STRING( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if ( hb_parni(1) == 0 || ISNIL(1) ) /* if NIL or ask for 0, use current order */
|
||||
if( HB_IS_NIL( pOrderInfo.itmOrder ) )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
else if( HB_IS_NUMERIC( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if( hb_itemGetNI( pOrderInfo.itmOrder ) == 0 )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
}
|
||||
else
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
}
|
||||
else
|
||||
{
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_REL_BADPARAMETER, NULL, "ORDKEY" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pOrderInfo.atomBagName = hb_param( 2, HB_IT_STRING );
|
||||
pOrderInfo.itmResult = hb_itemPutC( NULL, "" );
|
||||
SELF_ORDINFO( pArea, DBOI_EXPRESSION, &pOrderInfo );
|
||||
@@ -3001,6 +2995,7 @@ HB_FUNC( ORDKEYCOUNT )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3025,6 +3020,7 @@ HB_FUNC( ORDKEYNO )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3048,8 +3044,7 @@ HB_FUNC( ORDKEYGOTO )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
pOrderInfo.atomBagName = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmNewVal = hb_param( 1 , HB_IT_NUMERIC );
|
||||
pOrderInfo.itmResult = hb_itemPutL( NULL, FALSE );
|
||||
SELF_ORDINFO( pArea, DBOI_POSITION, &pOrderInfo );
|
||||
@@ -3068,8 +3063,7 @@ HB_FUNC( ORDKEYRELPOS )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
pOrderInfo.atomBagName = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmNewVal = hb_param( 1 , HB_IT_NUMERIC );
|
||||
pOrderInfo.itmResult = hb_itemPutNI( NULL, 0 );
|
||||
SELF_ORDINFO( pArea, DBOI_RELKEYPOS, &pOrderInfo );
|
||||
@@ -3088,8 +3082,7 @@ HB_FUNC( ORDFINDREC )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
pOrderInfo.atomBagName = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmNewVal = hb_param( 1 , HB_IT_NUMERIC );
|
||||
pOrderInfo.itmResult = hb_itemPutL( NULL, FALSE );
|
||||
SELF_ORDINFO( pArea, hb_parl( 2 ) ? DBOI_FINDRECCONT :
|
||||
@@ -3120,8 +3113,7 @@ HB_FUNC( ORDSKIPUNIQUE )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
pOrderInfo.atomBagName = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmNewVal = hb_param( 1, HB_IT_ANY );
|
||||
pOrderInfo.itmResult = hb_itemPutL( NULL, FALSE );
|
||||
SELF_ORDINFO( pArea, DBOI_SKIPUNIQUE, &pOrderInfo );
|
||||
@@ -3140,8 +3132,7 @@ HB_FUNC( ORDKEYVAL )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
pOrderInfo.atomBagName = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmResult = hb_itemNew( NULL );
|
||||
SELF_ORDINFO( pArea, DBOI_KEYVAL, &pOrderInfo );
|
||||
hb_itemReturn( pOrderInfo.itmResult );
|
||||
@@ -3159,6 +3150,7 @@ HB_FUNC( ORDKEYADD )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3182,6 +3174,7 @@ HB_FUNC( ORDKEYDEL )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3205,6 +3198,7 @@ HB_FUNC( ORDDESCEND )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3228,6 +3222,7 @@ HB_FUNC( ORDISUNIQUE )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3251,6 +3246,7 @@ HB_FUNC( ORDCUSTOM )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder )
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3274,7 +3270,7 @@ HB_FUNC( ORDCOUNT )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.atomBagName = hb_param( 1, HB_IT_STRING );
|
||||
pOrderInfo.itmResult = hb_itemPutNI( NULL, 0 );
|
||||
SELF_ORDINFO( pArea, DBOI_ORDERCOUNT, &pOrderInfo );
|
||||
@@ -3356,6 +3352,7 @@ HB_FUNC( ORDLISTADD )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.atomBagName = hb_param( 1, HB_IT_STRING );
|
||||
pOrderInfo.itmOrder = hb_param( 2, HB_IT_STRING );
|
||||
if( !pOrderInfo.atomBagName )
|
||||
@@ -3404,17 +3401,22 @@ HB_FUNC( ORDNAME )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
if( ISNUM(1) || ISNIL(1) )
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_ANY );
|
||||
if( pOrderInfo.itmOrder )
|
||||
{
|
||||
if( hb_parni( 1 ) == 0 ) /* if NIL or ask for 0, use current order */
|
||||
if( HB_IS_NIL( pOrderInfo.itmOrder ) )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
else if( HB_IS_NUMERIC( pOrderInfo.itmOrder ) )
|
||||
{
|
||||
if( hb_itemGetNI( pOrderInfo.itmOrder ) == 0 )
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
}
|
||||
else
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_REL_BADPARAMETER, NULL, "ORDNAME" );
|
||||
return;
|
||||
{
|
||||
hb_errRT_DBCMD( EG_ARG, EDBCMD_REL_BADPARAMETER, NULL, "ORDNAME" );
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
pOrderInfo.atomBagName = hb_param( 2, HB_IT_STRING );
|
||||
@@ -3435,6 +3437,7 @@ HB_FUNC( ORDNUMBER )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pOrderInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
pOrderInfo.atomBagName = hb_param( 2, HB_IT_STRING );
|
||||
if( !pOrderInfo.itmOrder && ! ISNIL( 1 ) )
|
||||
@@ -3459,6 +3462,7 @@ HB_FUNC( ORDSETFOCUS )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
memset( &pInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pInfo.itmOrder = hb_param( 1, HB_IT_STRING );
|
||||
if( !pInfo.itmOrder )
|
||||
pInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3693,10 +3697,8 @@ HB_FUNC( ORDSCOPE )
|
||||
USHORT uiAction;
|
||||
int iScope = hb_parni( 1 );
|
||||
|
||||
pInfo.itmOrder = NULL;
|
||||
pInfo.atomBagName = NULL;
|
||||
memset( &pInfo, 0, sizeof( DBORDERINFO ) );
|
||||
pInfo.itmResult = hb_itemNew( NULL );
|
||||
pInfo.itmNewVal = NULL;
|
||||
if ( iScope == 2 )
|
||||
{
|
||||
if ( hb_pcount() > 1 && !ISNIL( 2 ) )
|
||||
@@ -3997,6 +3999,8 @@ HB_FUNC( DBORDERINFO )
|
||||
|
||||
pOrderInfo.itmNewVal = hb_param( 4 , HB_IT_ANY );
|
||||
pOrderInfo.itmResult = hb_itemNew( NULL );
|
||||
pOrderInfo.itmCobExpr = NULL;
|
||||
pOrderInfo.fAllTags = FALSE;
|
||||
SELF_ORDINFO( pArea, hb_itemGetNI( pType ), &pOrderInfo );
|
||||
hb_itemReturn( pOrderInfo.itmResult );
|
||||
hb_itemRelease( pOrderInfo.itmResult );
|
||||
|
||||
@@ -184,12 +184,33 @@ static AREAP hb_usrGetAreaPointer( int iArea )
|
||||
* RDD structures conversions
|
||||
*/
|
||||
|
||||
static PHB_ITEM hb_usrArrayGet( PHB_ITEM pArray, ULONG ulPos, HB_TYPE uiType )
|
||||
{
|
||||
PHB_ITEM pItem = hb_arrayGetItemPtr( pArray, ulPos );
|
||||
|
||||
if( pItem && ( hb_itemType( pItem ) & uiType ) != 0 )
|
||||
return pItem;
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static char * hb_usrArrayGetC( PHB_ITEM pArray, ULONG ulPos )
|
||||
{
|
||||
PHB_ITEM pItem = hb_arrayGetItemPtr( pArray, ulPos );
|
||||
|
||||
if( pItem && HB_IS_STRING( pItem ) )
|
||||
return hb_itemGetCPtr( pItem );
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static PHB_ITEM hb_usrFieldInfoToItem( LPDBFIELDINFO pFieldInfo )
|
||||
{
|
||||
PHB_ITEM pItem;
|
||||
|
||||
pItem = hb_itemArrayNew( UR_FI_SIZE );
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_FI_NAME ), ( char * ) pFieldInfo->atomName );
|
||||
if( pFieldInfo->atomName )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_FI_NAME ), ( char * ) pFieldInfo->atomName );
|
||||
hb_itemPutNI( hb_arrayGetItemPtr( pItem, UR_FI_TYPE ), pFieldInfo->uiType );
|
||||
hb_itemPutNI( hb_arrayGetItemPtr( pItem, UR_FI_TYPEEXT ), pFieldInfo->uiTypeExtended );
|
||||
hb_itemPutNI( hb_arrayGetItemPtr( pItem, UR_FI_LEN ), pFieldInfo->uiLen );
|
||||
@@ -202,7 +223,7 @@ static BOOL hb_usrItemToFieldInfo( PHB_ITEM pItem, LPDBFIELDINFO pFieldInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_FI_SIZE )
|
||||
{
|
||||
pFieldInfo->atomName = ( BYTE * ) hb_arrayGetCPtr( pItem, UR_FI_NAME );
|
||||
pFieldInfo->atomName = ( BYTE * ) hb_usrArrayGetC( pItem, UR_FI_NAME );
|
||||
pFieldInfo->uiType = hb_arrayGetNI( pItem, UR_FI_TYPE );
|
||||
pFieldInfo->uiTypeExtended = hb_arrayGetNI( pItem, UR_FI_TYPEEXT );
|
||||
pFieldInfo->uiLen = hb_arrayGetNI( pItem, UR_FI_LEN );
|
||||
@@ -218,14 +239,17 @@ static PHB_ITEM hb_usrOpenInfoToItem( LPDBOPENINFO pOpenInfo )
|
||||
|
||||
pItem = hb_itemArrayNew( UR_OI_SIZE );
|
||||
hb_itemPutNI( hb_arrayGetItemPtr( pItem, UR_OI_AREA ), pOpenInfo->uiArea );
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_OI_NAME ), ( char * ) pOpenInfo->abName );
|
||||
if( pOpenInfo->abName )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_OI_NAME ), ( char * ) pOpenInfo->abName );
|
||||
if( pOpenInfo->atomAlias )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_OI_ALIAS ), ( char * ) pOpenInfo->atomAlias );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_OI_SHARED ), pOpenInfo->fShared );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_OI_READONLY ), pOpenInfo->fReadonly );
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_OI_CDPID ), ( char * ) pOpenInfo->cdpId );
|
||||
if( pOpenInfo->cdpId )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_OI_CDPID ), ( char * ) pOpenInfo->cdpId );
|
||||
hb_itemPutNL( hb_arrayGetItemPtr( pItem, UR_OI_CONNECT ), pOpenInfo->ulConnection );
|
||||
hb_itemPutPtr( hb_arrayGetItemPtr( pItem, UR_OI_HEADER ), pOpenInfo->lpdbHeader );
|
||||
if( pOpenInfo->lpdbHeader )
|
||||
hb_itemPutPtr( hb_arrayGetItemPtr( pItem, UR_OI_HEADER ), pOpenInfo->lpdbHeader );
|
||||
|
||||
return pItem;
|
||||
}
|
||||
@@ -235,14 +259,11 @@ static BOOL hb_usrItemToOpenInfo( PHB_ITEM pItem, LPDBOPENINFO pOpenInfo )
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_OI_SIZE )
|
||||
{
|
||||
pOpenInfo->uiArea = hb_arrayGetNI( pItem, UR_OI_AREA );
|
||||
pOpenInfo->abName = ( BYTE * ) hb_arrayGetCPtr( pItem, UR_OI_NAME );
|
||||
if( HB_IS_STRING( hb_arrayGetItemPtr( pItem, UR_OI_ALIAS ) ) )
|
||||
pOpenInfo->atomAlias = ( BYTE * ) hb_arrayGetCPtr( pItem, UR_OI_ALIAS );
|
||||
else
|
||||
pOpenInfo->atomAlias = NULL;
|
||||
pOpenInfo->abName = ( BYTE * ) hb_usrArrayGetC( pItem, UR_OI_NAME );
|
||||
pOpenInfo->atomAlias = ( BYTE * ) hb_usrArrayGetC( pItem, UR_OI_ALIAS );
|
||||
pOpenInfo->fShared = hb_arrayGetL( pItem, UR_OI_SHARED );
|
||||
pOpenInfo->fReadonly = hb_arrayGetL( pItem, UR_OI_READONLY );
|
||||
pOpenInfo->cdpId = ( BYTE * ) hb_arrayGetCPtr( pItem, UR_OI_CDPID );
|
||||
pOpenInfo->cdpId = ( BYTE * ) hb_usrArrayGetC( pItem, UR_OI_CDPID );
|
||||
pOpenInfo->ulConnection = hb_arrayGetNL( pItem, UR_OI_CONNECT );
|
||||
pOpenInfo->lpdbHeader = hb_arrayGetPtr( pItem, UR_OI_HEADER );
|
||||
return TRUE;
|
||||
@@ -255,8 +276,10 @@ static PHB_ITEM hb_usrFilterInfoToItem( LPDBFILTERINFO pFilterInfo )
|
||||
PHB_ITEM pItem;
|
||||
|
||||
pItem = hb_itemArrayNew( UR_FRI_SIZE );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_FRI_BEXPR ), pFilterInfo->itmCobExpr );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_FRI_CEXPR ), pFilterInfo->abFilterText );
|
||||
if( pFilterInfo->itmCobExpr )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_FRI_BEXPR ), pFilterInfo->itmCobExpr );
|
||||
if( pFilterInfo->abFilterText )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_FRI_CEXPR ), pFilterInfo->abFilterText );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_FRI_ACTIVE ), pFilterInfo->fFilter );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_FRI_OPTIMIZED ), pFilterInfo->fOptimized );
|
||||
hb_itemPutPtr( hb_arrayGetItemPtr( pItem, UR_FRI_CARGO ), pFilterInfo->lpvCargo );
|
||||
@@ -268,8 +291,8 @@ static BOOL hb_usrItemToFilterInfo( PHB_ITEM pItem, LPDBFILTERINFO pFilterInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_FRI_SIZE )
|
||||
{
|
||||
pFilterInfo->itmCobExpr = hb_arrayGetItemPtr( pItem, UR_FRI_BEXPR );
|
||||
pFilterInfo->abFilterText = hb_arrayGetItemPtr( pItem, UR_FRI_CEXPR );
|
||||
pFilterInfo->itmCobExpr = hb_usrArrayGet( pItem, UR_FRI_BEXPR, HB_IT_ANY );
|
||||
pFilterInfo->abFilterText = hb_usrArrayGet( pItem, UR_FRI_CEXPR, HB_IT_ANY );
|
||||
pFilterInfo->fFilter = hb_arrayGetL( pItem, UR_FRI_ACTIVE );
|
||||
pFilterInfo->fOptimized = hb_arrayGetL( pItem, UR_FRI_OPTIMIZED );
|
||||
pFilterInfo->lpvCargo = hb_arrayGetPtr( pItem, UR_FRI_CARGO );
|
||||
@@ -283,8 +306,10 @@ static PHB_ITEM hb_usrRelInfoToItem( LPDBRELINFO pRelInfo )
|
||||
PHB_ITEM pItem;
|
||||
|
||||
pItem = hb_itemArrayNew( UR_RI_SIZE );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_RI_BEXPR ), pRelInfo->itmCobExpr );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_RI_CEXPR ), pRelInfo->abKey );
|
||||
if( pRelInfo->itmCobExpr )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_RI_BEXPR ), pRelInfo->itmCobExpr );
|
||||
if( pRelInfo->abKey )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_RI_CEXPR ), pRelInfo->abKey );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_RI_SCOPED ), pRelInfo->isScoped );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_RI_OPTIMIZED ), pRelInfo->isOptimized );
|
||||
hb_itemPutNI( hb_arrayGetItemPtr( pItem, UR_RI_PARENT ), pRelInfo->lpaParent->uiArea );
|
||||
@@ -298,8 +323,8 @@ static BOOL hb_usrItemToRelInfo( PHB_ITEM pItem, LPDBRELINFO pRelInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_RI_SIZE )
|
||||
{
|
||||
pRelInfo->itmCobExpr = hb_arrayGetItemPtr( pItem, UR_RI_BEXPR );
|
||||
pRelInfo->abKey = hb_arrayGetItemPtr( pItem, UR_RI_CEXPR );
|
||||
pRelInfo->itmCobExpr = hb_usrArrayGet( pItem, UR_RI_BEXPR, HB_IT_ANY );
|
||||
pRelInfo->abKey = hb_usrArrayGet( pItem, UR_RI_CEXPR, HB_IT_ANY );
|
||||
pRelInfo->isScoped = hb_arrayGetL( pItem, UR_RI_SCOPED );
|
||||
pRelInfo->isOptimized = hb_arrayGetL( pItem, UR_RI_OPTIMIZED );
|
||||
pRelInfo->lpaParent = hb_usrGetAreaPointer( hb_arrayGetNI( pItem, UR_RI_PARENT ) );
|
||||
@@ -327,7 +352,7 @@ static BOOL hb_usrItemToLockInfo( PHB_ITEM pItem, LPDBLOCKINFO pLockInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_LI_SIZE )
|
||||
{
|
||||
pLockInfo->itmRecID = hb_arrayGetItemPtr( pItem, UR_LI_RECORD );
|
||||
pLockInfo->itmRecID = hb_usrArrayGet( pItem, UR_LI_RECORD, HB_IT_ANY );
|
||||
pLockInfo->uiMethod = hb_arrayGetNI( pItem, UR_LI_METHOD );
|
||||
pLockInfo->fResult = hb_arrayGetL( pItem, UR_LI_RESULT );
|
||||
return TRUE;
|
||||
@@ -340,13 +365,20 @@ static PHB_ITEM hb_usrScopeInfoToItem( LPDBSCOPEINFO pScopeInfo )
|
||||
PHB_ITEM pItem;
|
||||
|
||||
pItem = hb_itemArrayNew( UR_SI_SIZE );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_BFOR ), pScopeInfo->itmCobFor );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_CFOR ), pScopeInfo->lpstrFor );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_BWHILE ), pScopeInfo->itmCobWhile );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_CWHILE ), pScopeInfo->lpstrWhile );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_NEXT ), pScopeInfo->lNext );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_RECORD ), pScopeInfo->itmRecID );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_REST ), pScopeInfo->fRest );
|
||||
if( pScopeInfo->itmCobFor )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_BFOR ), pScopeInfo->itmCobFor );
|
||||
if( pScopeInfo->lpstrFor )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_CFOR ), pScopeInfo->lpstrFor );
|
||||
if( pScopeInfo->itmCobWhile )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_BWHILE ), pScopeInfo->itmCobWhile );
|
||||
if( pScopeInfo->lpstrWhile )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_CWHILE ), pScopeInfo->lpstrWhile );
|
||||
if( pScopeInfo->lNext )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_NEXT ), pScopeInfo->lNext );
|
||||
if( pScopeInfo->itmRecID )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_RECORD ), pScopeInfo->itmRecID );
|
||||
if( pScopeInfo->fRest )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_SI_REST ), pScopeInfo->fRest );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_SI_IGNOREFILTER ), pScopeInfo->fIgnoreFilter );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_SI_INCLUDEDELETED ), pScopeInfo->fIncludeDeleted );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_SI_LAST ), pScopeInfo->fLast );
|
||||
@@ -361,13 +393,13 @@ static BOOL hb_usrItemToScopeInfo( PHB_ITEM pItem, LPDBSCOPEINFO pScopeInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_SI_SIZE )
|
||||
{
|
||||
pScopeInfo->itmCobFor = hb_arrayGetItemPtr( pItem, UR_SI_BFOR );
|
||||
pScopeInfo->lpstrFor = hb_arrayGetItemPtr( pItem, UR_SI_CFOR );
|
||||
pScopeInfo->itmCobWhile = hb_arrayGetItemPtr( pItem, UR_SI_BWHILE );
|
||||
pScopeInfo->lpstrWhile = hb_arrayGetItemPtr( pItem, UR_SI_CWHILE );
|
||||
pScopeInfo->lNext = hb_arrayGetItemPtr( pItem, UR_SI_NEXT );
|
||||
pScopeInfo->itmRecID = hb_arrayGetItemPtr( pItem, UR_SI_RECORD );
|
||||
pScopeInfo->fRest = hb_arrayGetItemPtr( pItem, UR_SI_REST );
|
||||
pScopeInfo->itmCobFor = hb_usrArrayGet( pItem, UR_SI_BFOR, HB_IT_ANY );
|
||||
pScopeInfo->lpstrFor = hb_usrArrayGet( pItem, UR_SI_CFOR, HB_IT_ANY );
|
||||
pScopeInfo->itmCobWhile = hb_usrArrayGet( pItem, UR_SI_BWHILE, HB_IT_ANY );
|
||||
pScopeInfo->lpstrWhile = hb_usrArrayGet( pItem, UR_SI_CWHILE, HB_IT_ANY );
|
||||
pScopeInfo->lNext = hb_usrArrayGet( pItem, UR_SI_NEXT, HB_IT_ANY );
|
||||
pScopeInfo->itmRecID = hb_usrArrayGet( pItem, UR_SI_RECORD, HB_IT_ANY );
|
||||
pScopeInfo->fRest = hb_usrArrayGet( pItem, UR_SI_REST, HB_IT_ANY );
|
||||
pScopeInfo->fIgnoreFilter = hb_arrayGetL( pItem, UR_SI_IGNOREFILTER );
|
||||
pScopeInfo->fIncludeDeleted = hb_arrayGetL( pItem, UR_SI_INCLUDEDELETED );
|
||||
pScopeInfo->fLast = hb_arrayGetL( pItem, UR_SI_LAST );
|
||||
@@ -385,8 +417,10 @@ static PHB_ITEM hb_usrEvalInfoToItem( LPDBEVALINFO pEvalInfo )
|
||||
|
||||
pScope = hb_usrScopeInfoToItem( &pEvalInfo->dbsci );
|
||||
pItem = hb_itemArrayNew( UR_EI_SIZE );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_EI_BLOCK ), pEvalInfo->itmBlock );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_EI_CEXPR ), pEvalInfo->abBlock );
|
||||
if( pEvalInfo->itmBlock )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_EI_BLOCK ), pEvalInfo->itmBlock );
|
||||
if( pEvalInfo->abBlock )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_EI_CEXPR ), pEvalInfo->abBlock );
|
||||
hb_itemMove( hb_arrayGetItemPtr( pItem, UR_EI_SCOPE ), pScope );
|
||||
hb_itemRelease( pScope );
|
||||
|
||||
@@ -397,8 +431,8 @@ static BOOL hb_usrItemToEvalInfo( PHB_ITEM pItem, LPDBEVALINFO pEvalInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_EI_SIZE )
|
||||
{
|
||||
pEvalInfo->itmBlock = hb_arrayGetItemPtr( pItem, UR_EI_BLOCK );
|
||||
pEvalInfo->abBlock = hb_arrayGetItemPtr( pItem, UR_EI_CEXPR );
|
||||
pEvalInfo->itmBlock = hb_usrArrayGet( pItem, UR_EI_BLOCK, HB_IT_ANY );
|
||||
pEvalInfo->abBlock = hb_usrArrayGet( pItem, UR_EI_CEXPR, HB_IT_ANY );
|
||||
return hb_usrItemToScopeInfo( hb_arrayGetItemPtr( pItem, UR_EI_SCOPE ),
|
||||
&pEvalInfo->dbsci );
|
||||
}
|
||||
@@ -557,11 +591,16 @@ static PHB_ITEM hb_usrOrderInfoToItem( LPDBORDERINFO pOrderInfo )
|
||||
PHB_ITEM pItem;
|
||||
|
||||
pItem = hb_itemArrayNew( UR_ORI_SIZE );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_BAG ), pOrderInfo->atomBagName );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_TAG ), pOrderInfo->itmOrder );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_BLOCK ), pOrderInfo->itmCobExpr );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_RESULT ), pOrderInfo->itmResult );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_NEWVAL ), pOrderInfo->itmNewVal );
|
||||
if( pOrderInfo->atomBagName )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_BAG ), pOrderInfo->atomBagName );
|
||||
if( pOrderInfo->itmOrder )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_TAG ), pOrderInfo->itmOrder );
|
||||
if( pOrderInfo->itmCobExpr )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_BLOCK ), pOrderInfo->itmCobExpr );
|
||||
if( pOrderInfo->itmResult )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_RESULT ), pOrderInfo->itmResult );
|
||||
if( pOrderInfo->itmNewVal )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORI_NEWVAL ), pOrderInfo->itmNewVal );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_ORI_ALLTAGS ), pOrderInfo->fAllTags );
|
||||
|
||||
return pItem;
|
||||
@@ -571,11 +610,11 @@ static BOOL hb_usrItemToOrderInfo( PHB_ITEM pItem, LPDBORDERINFO pOrderInfo )
|
||||
{
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_ORI_SIZE )
|
||||
{
|
||||
pOrderInfo->atomBagName = hb_arrayGetItemPtr( pItem, UR_ORI_BAG );
|
||||
pOrderInfo->itmOrder = hb_arrayGetItemPtr( pItem, UR_ORI_TAG );
|
||||
pOrderInfo->itmCobExpr = hb_arrayGetItemPtr( pItem, UR_ORI_BLOCK );
|
||||
pOrderInfo->itmResult = hb_arrayGetItemPtr( pItem, UR_ORI_RESULT );
|
||||
pOrderInfo->itmNewVal = hb_arrayGetItemPtr( pItem, UR_ORI_NEWVAL );
|
||||
pOrderInfo->atomBagName = hb_usrArrayGet( pItem, UR_ORI_BAG, HB_IT_ANY );
|
||||
pOrderInfo->itmOrder = hb_usrArrayGet( pItem, UR_ORI_TAG, HB_IT_ANY );
|
||||
pOrderInfo->itmCobExpr = hb_usrArrayGet( pItem, UR_ORI_BLOCK, HB_IT_ANY );
|
||||
pOrderInfo->itmResult = hb_usrArrayGet( pItem, UR_ORI_RESULT, HB_IT_ANY );
|
||||
pOrderInfo->itmNewVal = hb_usrArrayGet( pItem, UR_ORI_NEWVAL, HB_IT_ANY );
|
||||
pOrderInfo->fAllTags = hb_arrayGetL( pItem, UR_ORI_ALLTAGS );
|
||||
return TRUE;
|
||||
}
|
||||
@@ -588,15 +627,22 @@ static PHB_ITEM hb_usrOrderCondInfoToItem( LPDBORDERCONDINFO pOrderCondInfo )
|
||||
|
||||
pItem = hb_itemArrayNew( UR_ORC_SIZE );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_ORC_ACTIVE ), pOrderCondInfo->fActive );
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORC_CFOR ), ( char * ) pOrderCondInfo->abFor );
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORC_CWHILE ), ( char * ) pOrderCondInfo->abWhile );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_BFOR ), pOrderCondInfo->itmCobFor );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_BWHILE ), pOrderCondInfo->itmCobWhile );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_BEVAL ), pOrderCondInfo->itmCobEval );
|
||||
if( pOrderCondInfo->abFor )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORC_CFOR ), ( char * ) pOrderCondInfo->abFor );
|
||||
if( pOrderCondInfo->abWhile )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORC_CWHILE ), ( char * ) pOrderCondInfo->abWhile );
|
||||
if( pOrderCondInfo->itmCobFor )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_BFOR ), pOrderCondInfo->itmCobFor );
|
||||
if( pOrderCondInfo->itmCobWhile )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_BWHILE ), pOrderCondInfo->itmCobWhile );
|
||||
if( pOrderCondInfo->itmCobEval )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_BEVAL ), pOrderCondInfo->itmCobEval );
|
||||
hb_itemPutNL( hb_arrayGetItemPtr( pItem, UR_ORC_STEP ), pOrderCondInfo->lStep );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_STARTREC ), pOrderCondInfo->itmStartRecID );
|
||||
if( pOrderCondInfo->itmStartRecID )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_STARTREC ), pOrderCondInfo->itmStartRecID );
|
||||
hb_itemPutNL( hb_arrayGetItemPtr( pItem, UR_ORC_NEXT ), pOrderCondInfo->lNextCount );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_RECORD ), pOrderCondInfo->itmRecID );
|
||||
if( pOrderCondInfo->itmRecID )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORC_RECORD ), pOrderCondInfo->itmRecID );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_ORC_REST ), pOrderCondInfo->fRest );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_ORC_DESCEND ), pOrderCondInfo->fDescending );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_ORC_SCOPED ), pOrderCondInfo->fScoped );
|
||||
@@ -620,15 +666,15 @@ static BOOL hb_usrItemToOrderCondInfo( PHB_ITEM pItem,
|
||||
if( pItem && hb_arrayLen( pItem ) == UR_ORC_SIZE )
|
||||
{
|
||||
pOrderCondInfo->fActive = hb_arrayGetL( pItem, UR_ORC_ACTIVE );
|
||||
pOrderCondInfo->abFor = ( BYTE * ) hb_arrayGetC( pItem, UR_ORC_CFOR );
|
||||
pOrderCondInfo->abWhile = ( BYTE * ) hb_arrayGetC( pItem, UR_ORC_CWHILE );
|
||||
pOrderCondInfo->itmCobFor = hb_arrayGetItemPtr( pItem, UR_ORC_BFOR );
|
||||
pOrderCondInfo->itmCobWhile = hb_arrayGetItemPtr( pItem, UR_ORC_BWHILE );
|
||||
pOrderCondInfo->itmCobEval = hb_arrayGetItemPtr( pItem, UR_ORC_BEVAL );
|
||||
pOrderCondInfo->abFor = ( BYTE * ) hb_usrArrayGetC( pItem, UR_ORC_CFOR );
|
||||
pOrderCondInfo->abWhile = ( BYTE * ) hb_usrArrayGetC( pItem, UR_ORC_CWHILE );
|
||||
pOrderCondInfo->itmCobFor = hb_usrArrayGet( pItem, UR_ORC_BFOR, HB_IT_ANY );
|
||||
pOrderCondInfo->itmCobWhile = hb_usrArrayGet( pItem, UR_ORC_BWHILE, HB_IT_ANY );
|
||||
pOrderCondInfo->itmCobEval = hb_usrArrayGet( pItem, UR_ORC_BEVAL, HB_IT_ANY );
|
||||
pOrderCondInfo->lStep = hb_arrayGetNL( pItem, UR_ORC_STEP );
|
||||
pOrderCondInfo->itmStartRecID = hb_arrayGetItemPtr( pItem, UR_ORC_STARTREC );
|
||||
pOrderCondInfo->itmStartRecID = hb_usrArrayGet( pItem, UR_ORC_STARTREC, HB_IT_ANY );
|
||||
pOrderCondInfo->lNextCount = hb_arrayGetNL( pItem, UR_ORC_NEXT );
|
||||
pOrderCondInfo->itmRecID = hb_arrayGetItemPtr( pItem, UR_ORC_RECORD );
|
||||
pOrderCondInfo->itmRecID = hb_usrArrayGet( pItem, UR_ORC_RECORD, HB_IT_ANY );
|
||||
pOrderCondInfo->fRest = hb_arrayGetL( pItem, UR_ORC_REST );
|
||||
pOrderCondInfo->fDescending = hb_arrayGetL( pItem, UR_ORC_DESCEND );
|
||||
pOrderCondInfo->fScoped = hb_arrayGetL( pItem, UR_ORC_SCOPED );
|
||||
@@ -647,6 +693,43 @@ static BOOL hb_usrItemToOrderCondInfo( PHB_ITEM pItem,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void hb_usrOrderCondFree( LPDBORDERCONDINFO pOrderCondInfo )
|
||||
{
|
||||
if( pOrderCondInfo->abFor )
|
||||
hb_xfree( pOrderCondInfo->abFor );
|
||||
if( pOrderCondInfo->abWhile )
|
||||
hb_xfree( pOrderCondInfo->abWhile );
|
||||
if( pOrderCondInfo->itmCobFor )
|
||||
hb_itemRelease( pOrderCondInfo->itmCobFor );
|
||||
if( pOrderCondInfo->itmCobWhile )
|
||||
hb_itemRelease( pOrderCondInfo->itmCobWhile );
|
||||
if( pOrderCondInfo->itmCobEval )
|
||||
hb_itemRelease( pOrderCondInfo->itmCobEval );
|
||||
if( pOrderCondInfo->itmStartRecID )
|
||||
hb_itemRelease( pOrderCondInfo->itmStartRecID );
|
||||
if( pOrderCondInfo->itmRecID )
|
||||
hb_itemRelease( pOrderCondInfo->itmRecID );
|
||||
hb_xfree( pOrderCondInfo );
|
||||
}
|
||||
|
||||
static void hb_usrOrderCondClone( LPDBORDERCONDINFO pOrderCondInfo )
|
||||
{
|
||||
if( pOrderCondInfo->abFor )
|
||||
pOrderCondInfo->abFor = ( BYTE * ) hb_strdup( ( char * ) pOrderCondInfo->abFor );
|
||||
if( pOrderCondInfo->abWhile )
|
||||
pOrderCondInfo->abWhile = ( BYTE * ) hb_strdup( ( char * ) pOrderCondInfo->abWhile );
|
||||
if( pOrderCondInfo->itmCobFor )
|
||||
pOrderCondInfo->itmCobFor = hb_itemNew( pOrderCondInfo->itmCobFor );
|
||||
if( pOrderCondInfo->itmCobWhile )
|
||||
pOrderCondInfo->itmCobWhile = hb_itemNew( pOrderCondInfo->itmCobWhile );
|
||||
if( pOrderCondInfo->itmCobEval )
|
||||
pOrderCondInfo->itmCobEval = hb_itemNew( pOrderCondInfo->itmCobEval );
|
||||
if( pOrderCondInfo->itmStartRecID )
|
||||
pOrderCondInfo->itmStartRecID = hb_itemNew( pOrderCondInfo->itmStartRecID );
|
||||
if( pOrderCondInfo->itmRecID )
|
||||
pOrderCondInfo->itmRecID = hb_itemNew( pOrderCondInfo->itmRecID );
|
||||
}
|
||||
|
||||
static PHB_ITEM hb_usrOrderCreateInfoToItem( LPDBORDERCREATEINFO pOrderCreateInfo )
|
||||
{
|
||||
PHB_ITEM pItem, pCond;
|
||||
@@ -658,12 +741,17 @@ static PHB_ITEM hb_usrOrderCreateInfoToItem( LPDBORDERCREATEINFO pOrderCreateInf
|
||||
hb_arraySet( pItem, UR_ORCR_CONDINFO, pCond );
|
||||
hb_itemRelease( pCond );
|
||||
}
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORCR_BAGNAME ), ( char * ) pOrderCreateInfo->abBagName );
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORCR_TAGNAME ), ( char * ) pOrderCreateInfo->atomBagName );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORCR_ORDER ), pOrderCreateInfo->itmOrder );
|
||||
if( pOrderCreateInfo->abBagName )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORCR_BAGNAME ), ( char * ) pOrderCreateInfo->abBagName );
|
||||
if( pOrderCreateInfo->atomBagName )
|
||||
hb_itemPutC( hb_arrayGetItemPtr( pItem, UR_ORCR_TAGNAME ), ( char * ) pOrderCreateInfo->atomBagName );
|
||||
if( pOrderCreateInfo->itmOrder )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORCR_ORDER ), pOrderCreateInfo->itmOrder );
|
||||
hb_itemPutL( hb_arrayGetItemPtr( pItem, UR_ORCR_UNIQUE ), pOrderCreateInfo->fUnique );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORCR_BKEY ), pOrderCreateInfo->itmCobExpr );
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORCR_CKEY ), pOrderCreateInfo->abExpr );
|
||||
if( pOrderCreateInfo->itmCobExpr )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORCR_BKEY ), pOrderCreateInfo->itmCobExpr );
|
||||
if( pOrderCreateInfo->abExpr )
|
||||
hb_itemCopy( hb_arrayGetItemPtr( pItem, UR_ORCR_CKEY ), pOrderCreateInfo->abExpr );
|
||||
|
||||
return pItem;
|
||||
}
|
||||
@@ -690,12 +778,13 @@ static BOOL hb_usrItemToOrderCreateInfo( PHB_ITEM pItem,
|
||||
{
|
||||
pOrderCreateInfo->lpdbOrdCondInfo = NULL;
|
||||
}
|
||||
pOrderCreateInfo->abBagName = ( BYTE * ) hb_arrayGetC( pItem, UR_ORCR_BAGNAME );
|
||||
pOrderCreateInfo->atomBagName = ( BYTE * ) hb_arrayGetC( pItem, UR_ORCR_TAGNAME );
|
||||
pOrderCreateInfo->itmOrder = hb_arrayGetItemPtr( pItem, UR_ORCR_ORDER );
|
||||
|
||||
pOrderCreateInfo->abBagName = ( BYTE * ) hb_usrArrayGetC( pItem, UR_ORCR_BAGNAME );
|
||||
pOrderCreateInfo->atomBagName = ( BYTE * ) hb_usrArrayGetC( pItem, UR_ORCR_TAGNAME );
|
||||
pOrderCreateInfo->itmOrder = hb_usrArrayGet( pItem, UR_ORCR_ORDER, HB_IT_ANY );
|
||||
pOrderCreateInfo->fUnique = hb_arrayGetL( pItem, UR_ORCR_UNIQUE );
|
||||
pOrderCreateInfo->itmCobExpr = hb_arrayGetItemPtr( pItem, UR_ORCR_BKEY );
|
||||
pOrderCreateInfo->abExpr = hb_arrayGetItemPtr( pItem, UR_ORCR_CKEY );
|
||||
pOrderCreateInfo->itmCobExpr = hb_usrArrayGet( pItem, UR_ORCR_BKEY, HB_IT_ANY );
|
||||
pOrderCreateInfo->abExpr = hb_usrArrayGet( pItem, UR_ORCR_CKEY, HB_IT_ANY );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
@@ -2082,6 +2171,7 @@ static ERRCODE hb_usrOrderCondition( AREAP pArea, LPDBORDERCONDINFO pOrderCondIn
|
||||
PHB_ITEM pItem = hb_usrOrderCondInfoToItem( pOrderCondInfo );
|
||||
hb_vmPush( pItem );
|
||||
hb_itemRelease( pItem );
|
||||
hb_usrOrderCondFree( pOrderCondInfo );
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3894,17 +3984,27 @@ HB_FUNC_UR_SUPER( ORDSETCOND )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
DBORDERCONDINFO dbOrderCondInfo;
|
||||
PHB_ITEM pItem = hb_param( 2, HB_IT_ARRAY );
|
||||
PHB_ITEM pItem = hb_param( 2, HB_IT_ANY );
|
||||
|
||||
if( hb_usrItemToOrderCondInfo( pItem, &dbOrderCondInfo ) )
|
||||
if( pItem && HB_IS_NIL( pItem ) )
|
||||
{
|
||||
hb_retni( SUPER_ORDSETCOND( pArea, &dbOrderCondInfo ) );
|
||||
hb_retni( SUPER_ORDSETCOND( pArea, NULL ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_usrErrorRT( pArea, EG_ARG, EDBCMD_NOVAR );
|
||||
hb_retni( FAILURE );
|
||||
LPDBORDERCONDINFO lpdbOrderCondInfo = ( LPDBORDERCONDINFO )
|
||||
hb_xgrab( sizeof( DBORDERCONDINFO ) );
|
||||
if( hb_usrItemToOrderCondInfo( pItem, lpdbOrderCondInfo ) )
|
||||
{
|
||||
hb_usrOrderCondClone( lpdbOrderCondInfo );
|
||||
hb_retni( SUPER_ORDSETCOND( pArea, lpdbOrderCondInfo ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_xfree( lpdbOrderCondInfo );
|
||||
hb_usrErrorRT( pArea, EG_ARG, EDBCMD_NOVAR );
|
||||
hb_retni( FAILURE );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user