2010-06-15 12:56 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/contrib/xhb/xhbcomp.prg
  * harbour/contrib/xhb/xhbmsgs.c
    + added emulation for some xHarbour extensions in ==, = and !=
      operators.
         <block> == <block>
         <hash> = <hash>      // it does not work correctly in xHarbour
         <hash> != <hash>
This commit is contained in:
Przemyslaw Czerpak
2010-06-15 10:57:10 +00:00
parent 73a06f6c8f
commit a7be129b2f
3 changed files with 29 additions and 0 deletions

View File

@@ -16,6 +16,15 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-06-15 12:56 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/xhb/xhbcomp.prg
* harbour/contrib/xhb/xhbmsgs.c
+ added emulation for some xHarbour extensions in ==, = and !=
operators.
<block> == <block>
<hash> = <hash> // it does not work correctly in xHarbour
<hash> != <hash>
2010-06-15 12:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/include/hbdefs.h
* harbour/include/hbvmpub.h

View File

@@ -72,6 +72,7 @@ INIT PROCEDURE xhb_Init()
ASSOCIATE CLASS _Numeric WITH TYPE Numeric
ASSOCIATE CLASS _Array WITH TYPE Array
ASSOCIATE CLASS _Hash WITH TYPE Hash
ASSOCIATE CLASS _Block WITH TYPE Block
RETURN
@@ -129,4 +130,11 @@ CREATE CLASS Hash INHERIT __HBHash FUNCTION _Hash
OPERATOR "+" FUNCTION XHB_PLUS()
OPERATOR "-" FUNCTION XHB_MINUS()
OPERATOR "$$" FUNCTION XHB_INCLUDE()
OPERATOR "=" FUNCTION XHB_EQUAL()
OPERATOR "<>" FUNCTION XHB_NOTEQUAL()
ENDCLASS
CREATE CLASS Block FUNCTION _Block
OPTIONAL INHERIT HBBlock
OPERATOR "==" FUNCTION XHB_EEQUAL()
ENDCLASS

View File

@@ -133,6 +133,10 @@ HB_FUNC( XHB_EEQUAL )
double dValue = hb_itemGetND( pValue );
hb_retl( ( double ) uc == dValue );
}
else if( HB_IS_BLOCK( pSelf ) && HB_IS_BLOCK( pValue ) )
{
hb_retl( hb_codeblockId( pSelf ) == hb_codeblockId( pValue ) );
}
else
{
PHB_ITEM pResult = hb_errRT_BASE_Subst( EG_ARG, 1070, NULL, "==", 2, pSelf, pValue );
@@ -158,6 +162,10 @@ HB_FUNC( XHB_EQUAL )
double dValue = hb_itemGetND( pValue );
hb_retl( ( double ) uc == dValue );
}
else if( HB_IS_HASH( pSelf ) && HB_IS_HASH( pValue ) )
{
hb_retl( hb_hashId( pSelf ) == hb_hashId( pValue ) );
}
else
{
PHB_ITEM pResult = hb_errRT_BASE_Subst( EG_ARG, 1071, NULL, "=", 2, pSelf, pValue );
@@ -183,6 +191,10 @@ HB_FUNC( XHB_NOTEQUAL )
double dValue = hb_itemGetND( pValue );
hb_retl( ( double ) uc != dValue );
}
else if( HB_IS_HASH( pSelf ) && HB_IS_HASH( pValue ) )
{
hb_retl( hb_hashId( pSelf ) != hb_hashId( pValue ) );
}
else
{
PHB_ITEM pResult = hb_errRT_BASE_Subst( EG_ARG, 1072, NULL, "<>", 2, pSelf, pValue );