2010-05-20 01:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbapi.h
* harbour/src/vm/hashes.c
+ added new C function hb_hashGetCItemPos()
* harbour/src/rtl/hbcom.c
! fixed typo located by Bisz István
This commit is contained in:
@@ -17,6 +17,14 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2010-05-20 01:42 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/include/hbapi.h
|
||||
* harbour/src/vm/hashes.c
|
||||
+ added new C function hb_hashGetCItemPos()
|
||||
|
||||
* harbour/src/rtl/hbcom.c
|
||||
! fixed typo located by Bisz István
|
||||
|
||||
2010-05-19 10:35 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* utils/hbmk2/hbmk2.pt_BR.po
|
||||
* utils/hbmk2/hbmk2.hu_HU.po
|
||||
|
||||
@@ -869,6 +869,7 @@ extern HB_EXPORT void * hb_hashId( PHB_ITEM pHash ); /* retrieves the hash un
|
||||
extern HB_EXPORT PHB_ITEM hb_hashGetItemPtr( PHB_ITEM pHash, PHB_ITEM pKey, int iFlags );
|
||||
extern HB_EXPORT PHB_ITEM hb_hashGetItemRefPtr( PHB_ITEM pHash, PHB_ITEM pKey );
|
||||
extern HB_EXPORT PHB_ITEM hb_hashGetCItemPtr( PHB_ITEM pHash, const char * pszKey );
|
||||
extern HB_EXPORT HB_SIZE hb_hashGetCItemPos( PHB_ITEM pHash, const char * pszKey );
|
||||
extern HB_EXPORT PHB_ITEM hb_hashGetKeyAt( PHB_ITEM pHash, HB_SIZE ulPos );
|
||||
extern HB_EXPORT PHB_ITEM hb_hashGetValueAt( PHB_ITEM pHash, HB_SIZE ulPos );
|
||||
|
||||
|
||||
@@ -716,7 +716,7 @@ int hb_comFlowControl( int iPort, int *piFlow, int iFlow )
|
||||
if( iFlow >= 0 )
|
||||
{
|
||||
if( iFlow & HB_COM_FLOW_DCD )
|
||||
tio.c_cflag &= CLOCAL;
|
||||
tio.c_cflag &= ~CLOCAL;
|
||||
else
|
||||
tio.c_cflag |= CLOCAL;
|
||||
}
|
||||
|
||||
@@ -495,6 +495,30 @@ PHB_ITEM hb_hashGetCItemPtr( PHB_ITEM pHash, const char * pszKey )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HB_SIZE hb_hashGetCItemPos( PHB_ITEM pHash, const char * pszKey )
|
||||
{
|
||||
HB_SIZE ulPos = 0;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_hashGetCItemPos(%p,%s)", pHash, pszKey));
|
||||
|
||||
if( HB_IS_HASH( pHash ) )
|
||||
{
|
||||
HB_STACK_TLS_PRELOAD
|
||||
/* we will not make any copy of pKey (autoadd is disabled) so it's
|
||||
* safe to use hb_itemPutCConst()
|
||||
*/
|
||||
PHB_ITEM pKey = hb_itemPutCConst( hb_stackAllocItem(), pszKey );
|
||||
|
||||
if( hb_hashFind( pHash->item.asHash.value, pKey, &ulPos ) )
|
||||
ulPos++;
|
||||
else
|
||||
ulPos = 0;
|
||||
hb_stackPop();
|
||||
}
|
||||
|
||||
return ulPos;
|
||||
}
|
||||
|
||||
PHB_ITEM hb_hashGetItemRefPtr( PHB_ITEM pHash, PHB_ITEM pKey )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_hashGetItemRefPtr(%p,%p)", pHash, pKey));
|
||||
@@ -705,9 +729,10 @@ PHB_ITEM hb_hashGetValueAt( PHB_ITEM pHash, HB_SIZE ulPos )
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_hashGetValueAt(%p,%lu)", pHash, ulPos));
|
||||
|
||||
if( HB_IS_HASH( pHash ) && ulPos > 0 && ulPos <= pHash->item.asHash.value->ulLen )
|
||||
return HB_IS_BYREF( &pHash->item.asHash.value->pPairs[ ulPos - 1 ].value ) ?
|
||||
hb_itemUnRef( &pHash->item.asHash.value->pPairs[ ulPos - 1 ].value ) :
|
||||
&pHash->item.asHash.value->pPairs[ ulPos - 1 ].value;
|
||||
{
|
||||
PHB_ITEM pValue = &pHash->item.asHash.value->pPairs[ ulPos - 1 ].value;
|
||||
return HB_IS_BYREF( pValue ) ? hb_itemUnRef( pValue ) : pValue;
|
||||
}
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user