From aed2388134151a9d7dfd83fa874f13d64ec00c71 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Sat, 19 Jun 2010 10:46:53 +0000 Subject: [PATCH] 2010-06-19 12:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * src/vm/extend.c * include/hbapi.h * hb_*nsize() functions renamed to hb_*ns(): hb_parns(), hb_retns(), hb_storns() + Added hb_parnsdef(). --- harbour/ChangeLog | 7 +++++++ harbour/include/hbapi.h | 9 +++++---- harbour/src/vm/extend.c | 38 +++++++++++++++++++++++++++++++------- 3 files changed, 43 insertions(+), 11 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 6b2496fc1a..27a9e04dda 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,13 @@ The license applies to all entries newer than 2009-04-28. */ +2010-06-19 12:46 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) + * src/vm/extend.c + * include/hbapi.h + * hb_*nsize() functions renamed to hb_*ns(): + hb_parns(), hb_retns(), hb_storns() + + Added hb_parnsdef(). + 2010-06-19 12:27 UTC+0200 Viktor Szakats (harbour.01 syenar.hu) * bin/hb-func.sh * bin/postinst.sh diff --git a/harbour/include/hbapi.h b/harbour/include/hbapi.h index 0e94acc936..284aab98e2 100644 --- a/harbour/include/hbapi.h +++ b/harbour/include/hbapi.h @@ -641,7 +641,8 @@ extern HB_EXPORT long hb_parnl( int iParam ); /* retrieve a numeric para extern HB_EXPORT long hb_parnldef( int iParam, long lDefValue ); /* retrieve a numeric parameter as a long, return default value if parameter isn't numeric */ extern HB_EXPORT HB_MAXINT hb_parnint( int iParam ); /* retrieve a numeric parameter as a HB_MAXINT */ extern HB_EXPORT HB_MAXINT hb_parnintdef( int iParam, HB_MAXINT lDefValue ); /* retrieve a numeric parameter as a HB_MAXINT, return default value if parameter isn't numeric */ -extern HB_EXPORT HB_SIZE hb_parnsize( int iParam ); /* retrieve a numeric parameter as a HB_SIZE */ +extern HB_EXPORT HB_SIZE hb_parns( int iParam ); /* retrieve a numeric parameter as a HB_SIZE */ +extern HB_EXPORT HB_SIZE hb_parnsdef( int iParam, HB_SIZE nDefValue ); /* retrieve a numeric parameter as a HB_SIZE, return default value if parameter isn't numeric */ extern HB_EXPORT void * hb_parptr( int iParam ); /* retrieve a parameter as a pointer */ extern HB_EXPORT void * hb_parptrGC( const HB_GC_FUNCS * pFuncs, int iParam ); /* retrieve a parameter as a pointer if it's a pointer to GC allocated block */ #ifndef HB_LONG_LONG_OFF @@ -686,7 +687,7 @@ extern HB_EXPORT void hb_retnd( double dNumber ); /* returns a double */ extern HB_EXPORT void hb_retni( int iNumber ); /* returns a integer number */ extern HB_EXPORT void hb_retnl( long lNumber );/* returns a long number */ extern HB_EXPORT void hb_retnint( HB_MAXINT lNumber );/* returns a long number */ -extern HB_EXPORT void hb_retnsize( HB_SIZE nNumber );/* returns a size */ +extern HB_EXPORT void hb_retns( HB_SIZE nNumber );/* returns a size */ extern HB_EXPORT void hb_retnlen( double dNumber, int iWidth, int iDec ); /* returns a double, with specific width and decimals */ extern HB_EXPORT void hb_retndlen( double dNumber, int iWidth, int iDec ); /* returns a double, with specific width and decimals */ extern HB_EXPORT void hb_retnilen( int iNumber, int iWidth ); /* returns a integer number, with specific width */ @@ -730,7 +731,7 @@ extern HB_EXPORT void hb_retnlllen( HB_LONGLONG lNumber, int iWidth ); /* retu #define hb_retnllen( lNumber, iWidth ) hb_itemPutNLLen( hb_stackReturnItem(), lNumber, iWidth ) #define hb_retnlllen( lNumber, iWidth ) hb_itemPutNLLLen( hb_stackReturnItem(), lNumber, iWidth ) #define hb_retnint( iNumber ) hb_itemPutNInt( hb_stackReturnItem(), iNumber ) -#define hb_retnsize( nNumber ) hb_itemPutNSize( hb_stackReturnItem(), nNumber ) +#define hb_retns( nNumber ) hb_itemPutNSize( hb_stackReturnItem(), nNumber ) #define hb_retnintlen( lNumber, iWidth ) hb_itemPutNIntLen( hb_stackReturnItem(), lNumber, iWidth ) #define hb_retptr( pointer ) hb_itemPutPtr( hb_stackReturnItem(), pointer ) #define hb_retptrGC( pointer ) hb_itemPutPtrGC( hb_stackReturnItem(), pointer ) @@ -751,7 +752,7 @@ extern HB_EXPORT int hb_storni( int iValue, int iParam ); /* stores an intege extern HB_EXPORT int hb_stornl( long lValue, int iParam ); /* stores a long on a variable by reference */ extern HB_EXPORT int hb_stornd( double dValue, int iParam ); /* stores a double on a variable by reference */ extern HB_EXPORT int hb_stornint( HB_MAXINT lValue, int iParam ); /* stores a HB_MAXINT on a variable by reference */ -extern HB_EXPORT int hb_stornsize( HB_SIZE nValue, int iParam ); /* stores a HB_SIZE on a variable by reference */ +extern HB_EXPORT int hb_storns( HB_SIZE nValue, int iParam ); /* stores a HB_SIZE on a variable by reference */ extern HB_EXPORT int hb_storptr( void * pointer, int iParam ); /* stores a pointer on a variable by reference */ extern HB_EXPORT int hb_storptrGC( void * pointer, int iParam ); /* stores a pointer to GC block on a variable by reference */ #ifndef HB_LONG_LONG_OFF diff --git a/harbour/src/vm/extend.c b/harbour/src/vm/extend.c index 6dcae925c4..5a303d6de8 100644 --- a/harbour/src/vm/extend.c +++ b/harbour/src/vm/extend.c @@ -673,11 +673,11 @@ HB_MAXINT hb_parnintdef( int iParam, HB_MAXINT lDefValue ) return lDefValue; } -HB_SIZE hb_parnsize( int iParam ) +HB_SIZE hb_parns( int iParam ) { HB_STACK_TLS_PRELOAD - HB_TRACE(HB_TR_DEBUG, ("hb_parnsize(%d)", iParam)); + HB_TRACE(HB_TR_DEBUG, ("hb_parns(%d)", iParam)); if( iParam >= -1 && iParam <= hb_pcount() ) { @@ -697,6 +697,30 @@ HB_SIZE hb_parnsize( int iParam ) return 0; } +HB_SIZE hb_parnsdef( int iParam, HB_SIZE nDefValue ) +{ + HB_STACK_TLS_PRELOAD + + HB_TRACE(HB_TR_DEBUG, ("hb_parnsdef(%d, %" HB_PFS "d)", iParam, nDefValue)); + + if( iParam >= -1 && iParam <= hb_pcount() ) + { + PHB_ITEM pItem = ( iParam == -1 ) ? hb_stackReturnItem() : hb_stackItemFromBase( iParam ); + + if( HB_IS_BYREF( pItem ) ) + pItem = hb_itemUnRef( pItem ); + + if( HB_IS_LONG( pItem ) ) + return ( HB_SIZE ) pItem->item.asLong.value; + else if( HB_IS_INTEGER( pItem ) ) + return ( HB_SIZE ) pItem->item.asInteger.value; + else if( HB_IS_DOUBLE( pItem ) ) + return ( HB_SIZE ) pItem->item.asDouble.value; + } + + return nDefValue; +} + void * hb_parptr( int iParam ) { HB_STACK_TLS_PRELOAD @@ -1540,12 +1564,12 @@ void hb_retnint( HB_MAXINT lNumber ) hb_itemPutNInt( hb_stackReturnItem(), lNumber ); } -#undef hb_retnsize -void hb_retnsize( HB_SIZE nNumber ) +#undef hb_retns +void hb_retns( HB_SIZE nNumber ) { HB_STACK_TLS_PRELOAD - HB_TRACE(HB_TR_DEBUG, ("hb_retnsize(%" HB_PFS "d )", nNumber)); + HB_TRACE(HB_TR_DEBUG, ("hb_retns(%" HB_PFS "d )", nNumber)); hb_itemPutNInt( hb_stackReturnItem(), nNumber ); } @@ -1961,11 +1985,11 @@ int hb_stornint( HB_MAXINT lValue, int iParam ) return 0; } -int hb_stornsize( HB_SIZE nValue, int iParam ) +int hb_storns( HB_SIZE nValue, int iParam ) { HB_STACK_TLS_PRELOAD - HB_TRACE(HB_TR_DEBUG, ("hb_stornsize(%" HB_PFS "d, %d)", nValue, iParam)); + HB_TRACE(HB_TR_DEBUG, ("hb_storns(%" HB_PFS "d, %d)", nValue, iParam)); if( iParam == -1 ) {