2013-09-16 11:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)

* doc/cmpopt.txt
  * doc/xhb-diff.txt
    * typos

  * src/rtl/hbsocket.c
    * simplified hb_socketSelect() code

  * src/rtl/mtran.c
    ! updated HB_TRACE message
This commit is contained in:
Przemysław Czerpak
2013-09-16 11:25:27 +02:00
parent 118a95c425
commit de6a55cbec
5 changed files with 42 additions and 36 deletions

View File

@@ -10,6 +10,17 @@
* Change, ! Fix, % Optimization, + Addition, - Removal, ; Comment
*/
2013-09-16 11:25 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* doc/cmpopt.txt
* doc/xhb-diff.txt
* typos
* src/rtl/hbsocket.c
* simplified hb_socketSelect() code
* src/rtl/mtran.c
! updated HB_TRACE message
2013-09-10 02:09 UTC+0200 Przemyslaw Czerpak (druzus/at/poczta.onet.pl)
* src/rtl/cdpapi.c
! added missing static in s_en_buffer declaration

View File

@@ -63,7 +63,7 @@ arguments are well known and can be calculated at compile time:
// can contain '&' character. Harbour checks
// if concatenation can change existing valid
// macro name or ignore '&' when -kM compiler
// switch which disable macro substitution
// switch which disables macro substitution
// is used
<nConst1> - <nConst2> => <nConst>
<dConst1> - <dConst2> => <dConst>
@@ -73,7 +73,7 @@ arguments are well known and can be calculated at compile time:
// can contain '&' character. Harbour checks
// if concatenation can change existing valid
// macro name or ignore '&' when -kM compiler
// switch which disable macro substitution
// switch which disables macro substitution
// is used
<nConst1> * <nConst2> => <nConst>
<nConst1> / <nConst2> => <nConst> // Clipper optimize only integers
@@ -85,7 +85,7 @@ arguments are well known and can be calculated at compile time:
// can contain '&' character. Harbour checks
// if after '&' is potentially valid macro
// name or ignore '&' when -kM compiler switch
// which disable macro substitution is used
// which disables macro substitution is used
<lConst1> == <lConst2> => <lConst>
<nConst1> == <nConst2> => <lConst>
<dConst1> == <dConst2> => <lConst>
@@ -94,7 +94,7 @@ arguments are well known and can be calculated at compile time:
// can contain '&' character. Harbour checks
// if after '&' is potentially valid macro
// name or ignore '&' when -kM compiler switch
// which disable macro substitution is used
// which disables macro substitution is used
NIL == <xConst> => <lConst>
<xConst> == NIL => <lConst>

View File

@@ -10,7 +10,7 @@ It describes status of both compiler at the end of October 2009:
Przemek,
(Przemyslaw Czerpak, druzus/at/acn.waw.pl)
(Przemyslaw Czerpak, druzus /at/ priv.onet.pl)
@@ -742,12 +742,12 @@ If it's possible then for macrocodeblocks Harbour compiler tries to
generate early eval code in which macros are expanded when codeblock
is created. Otherwise macros are expanded each time codeblock is
evaluated.
xHarbour has also similar extension but limited to only to macro
variables and it works only if other macros are not used in the
same expression. When more complicated examples are create xHarbour
compiler generates broken code which generate RTE or GPF during
execution. It also does not support codeblocks which contain mixed
macros and refuse to compile such code.
xHarbour has also similar extension but limited to macro variables
and it works only if other macros are not used in the same expression.
When more complicated examples are created xHarbour compiler generates
broken code which causes RTE or GPF during execution. It also does not
support codeblocks which contain mixed macros and refuse to compile
such code.
This example illustrates macros with declared symbols.

View File

@@ -2736,6 +2736,20 @@ int hb_socketSelectWriteEx( HB_SOCKET sd, HB_MAXINT timeout )
return ret;
}
static HB_SOCKET s_socketSelectCallback( PHB_ITEM pItem )
{
HB_SOCKET sd = HB_NO_SOCKET;
if( pItem )
{
if( HB_IS_NUMERIC( pItem ) )
sd = ( HB_SOCKET ) hb_itemGetNInt( pItem );
else if( HB_IS_POINTER( pItem ) )
sd = ( HB_SOCKET ) ( HB_PTRDIFF ) hb_itemGetPtr( pItem );
}
return sd;
}
int hb_socketSelect( PHB_ITEM pArrayRD, HB_BOOL fSetRD,
PHB_ITEM pArrayWR, HB_BOOL fSetWR,
PHB_ITEM pArrayEX, HB_BOOL fSetEX,
@@ -2749,6 +2763,9 @@ int hb_socketSelect( PHB_ITEM pArrayRD, HB_BOOL fSetRD,
fd_set fds[ 3 ], * pfds[ 3 ];
struct timeval tv, * ptv;
if( pFunc == NULL )
pFunc = s_socketSelectCallback;
pItemSets[ 0 ] = pArrayRD;
pItemSets[ 1 ] = pArrayWR;
pItemSets[ 2 ] = pArrayEX;
@@ -2766,18 +2783,7 @@ int hb_socketSelect( PHB_ITEM pArrayRD, HB_BOOL fSetRD,
FD_ZERO( &fds[ i ] );
for( ul = 1; ul <= nLen; ul++ )
{
if( pFunc )
sd = pFunc( hb_arrayGetItemPtr( pItemSets[ i ], ul ) );
else
{
HB_TYPE type = hb_arrayGetType( pItemSets[ i ], ul );
if( type & HB_IT_NUMERIC )
sd = ( HB_SOCKET ) hb_arrayGetNInt( pItemSets[ i ], ul );
else if( type & HB_IT_POINTER )
sd = ( HB_SOCKET ) ( HB_PTRDIFF ) hb_arrayGetPtr( pItemSets[ i ], ul );
else
sd = HB_NO_SOCKET;
}
sd = pFunc( hb_arrayGetItemPtr( pItemSets[ i ], ul ) );
if( sd != HB_NO_SOCKET )
{
if( maxsd < sd )
@@ -2811,18 +2817,7 @@ int hb_socketSelect( PHB_ITEM pArrayRD, HB_BOOL fSetRD,
nLen = hb_arrayLen( pItemSets[ i ] );
for( ul = 1; ul <= nLen; ul++ )
{
if( pFunc )
sd = pFunc( hb_arrayGetItemPtr( pItemSets[ i ], ul ) );
else
{
HB_TYPE type = hb_arrayGetType( pItemSets[ i ], ul );
if( type & HB_IT_NUMERIC )
sd = ( HB_SOCKET ) hb_arrayGetNInt( pItemSets[ i ], ul );
else if( type & HB_IT_POINTER )
sd = ( HB_SOCKET ) ( HB_PTRDIFF ) hb_arrayGetPtr( pItemSets[ i ], ul );
else
sd = HB_NO_SOCKET;
}
sd = pFunc( hb_arrayGetItemPtr( pItemSets[ i ], ul ) );
if( sd != HB_NO_SOCKET && FD_ISSET( ( HB_SOCKET_T ) sd, pfds[ i ] ) )
{
if( ++nPos != ul )

View File

@@ -56,7 +56,7 @@ HB_SIZE hb_strMemotran( char * pszResult, const char * pszString, HB_SIZE nStrin
HB_SIZE nStringPos = 0;
HB_SIZE nResultPos = 0;
HB_TRACE( HB_TR_DEBUG, ( "hb_strMemotran(%p, %p, %s, %" HB_PFS "u, %x, %x)", pszResult, pnResultLen, pszString, nStringLen, cHardCR, cSoftCR ) );
HB_TRACE( HB_TR_DEBUG, ( "hb_strMemotran(%p, %s, %" HB_PFS "u, %x, %x)", pszResult, pszString, nStringLen, cHardCR, cSoftCR ) );
while( nStringPos < nStringLen )
{