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:
Przemyslaw Czerpak
2010-05-19 23:42:29 +00:00
parent ee5bc58260
commit dd2ee1d1a5
4 changed files with 38 additions and 4 deletions

View File

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

View File

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

View File

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

View File

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