From 1e7aadcf86cbe8f0dfd32e38026a11a76e4cf1fd Mon Sep 17 00:00:00 2001 From: Mindaugas Kavaliauskas Date: Thu, 6 Dec 2007 09:34:22 +0000 Subject: [PATCH] 2007-12-06 11:35 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/source/lang/msgltwin.c * more changes from LT to LTWIN * harbour/common.mak * restored missing msgltwin.c * harbour/include/hbapi.h * harbour/source/vm/hashes.c + added hash key support for pointer type --- harbour/ChangeLog | 9 +++++++++ harbour/common.mak | 1 + harbour/include/hbapi.h | 2 +- harbour/source/lang/msgltwin.c | 12 ++++++------ harbour/source/vm/hashes.c | 10 ++++++++++ 5 files changed, 27 insertions(+), 7 deletions(-) diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 4908d1ca36..6745c20fc8 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,15 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2007-12-06 11:35 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) + * harbour/source/lang/msgltwin.c + * more changes from LT to LTWIN + * harbour/common.mak + * restored missing msgltwin.c + * harbour/include/hbapi.h + * harbour/source/vm/hashes.c + + added hash key support for pointer type + 2007-12-06 00:20 UTC+0800 Pritpal Bedi (pritpal@vouchcac.com) * harbour/contrib/gtwvg/gtwvt.c ! Small addition in PaintText() wrongly omitted while cleaning. diff --git a/harbour/common.mak b/harbour/common.mak index c80c0458c7..17db815674 100644 --- a/harbour/common.mak +++ b/harbour/common.mak @@ -705,6 +705,7 @@ LANG_LIB_OBJS = \ $(OBJ_DIR)\msgis850$(OBJEXT) \ $(OBJ_DIR)\msgit$(OBJEXT) \ $(OBJ_DIR)\msgko$(OBJEXT) \ + $(OBJ_DIR)\msgltwin$(OBJEXT) \ $(OBJ_DIR)\msgnl$(OBJEXT) \ $(OBJ_DIR)\msgpl852$(OBJEXT) \ $(OBJ_DIR)\msgpliso$(OBJEXT) \ diff --git a/harbour/include/hbapi.h b/harbour/include/hbapi.h index c6d1270beb..9b32ff6c75 100644 --- a/harbour/include/hbapi.h +++ b/harbour/include/hbapi.h @@ -98,7 +98,7 @@ HB_EXTERN_BEGIN #define HB_IT_ANY ( ( HB_TYPE ) 0xFFFFFFFF ) #define HB_IT_COMPLEX ( ( HB_TYPE ) ( HB_IT_BLOCK | HB_IT_ARRAY | HB_IT_HASH | HB_IT_POINTER | /* HB_IT_MEMVAR | HB_IT_ENUM | HB_IT_EXTREF |*/ HB_IT_BYREF | HB_IT_STRING ) ) #define HB_IT_GCITEM ( ( HB_TYPE ) ( HB_IT_BLOCK | HB_IT_ARRAY | HB_IT_HASH | HB_IT_POINTER | HB_IT_BYREF ) ) -#define HB_IT_HASHKEY ( ( HB_TYPE ) ( HB_IT_INTEGER | HB_IT_LONG | HB_IT_DOUBLE | HB_IT_DATE | HB_IT_STRING ) ) +#define HB_IT_HASHKEY ( ( HB_TYPE ) ( HB_IT_INTEGER | HB_IT_LONG | HB_IT_DOUBLE | HB_IT_DATE | HB_IT_STRING | HB_IT_POINTER ) ) #if 0 diff --git a/harbour/source/lang/msgltwin.c b/harbour/source/lang/msgltwin.c index 10b9dce684..8dc016773b 100644 --- a/harbour/source/lang/msgltwin.c +++ b/harbour/source/lang/msgltwin.c @@ -4,7 +4,7 @@ /* * Harbour Project source code: - * Language Support Module ( LT ) + * Language Support Module ( LTWIN ) * * Copyright 2003 Mindaugas Kavaliauskas * www - http://www.harbour-project.org @@ -200,14 +200,14 @@ static HB_LANG s_lang = } }; -HB_LANG_ANNOUNCE( LT ); +HB_LANG_ANNOUNCE( LTWIN ); -HB_CALL_ON_STARTUP_BEGIN( hb_lang_Init_LT ) +HB_CALL_ON_STARTUP_BEGIN( hb_lang_Init_LTWIN ) hb_langRegister( &s_lang ); -HB_CALL_ON_STARTUP_END( hb_lang_Init_LT ) +HB_CALL_ON_STARTUP_END( hb_lang_Init_LTWIN ) #if defined(HB_PRAGMA_STARTUP) - #pragma startup hb_lang_Init_LT + #pragma startup hb_lang_Init_LTWIN #elif defined(HB_MSC_STARTUP) #if _MSC_VER >= 1010 #pragma data_seg( ".CRT$XIY" ) @@ -215,6 +215,6 @@ HB_CALL_ON_STARTUP_END( hb_lang_Init_LT ) #else #pragma data_seg( "XIY" ) #endif - static HB_$INITSYM hb_vm_auto_hb_lang_Init_LT = hb_lang_Init_LT; + static HB_$INITSYM hb_vm_auto_hb_lang_Init_LTWIN = hb_lang_Init_LTWIN; #pragma data_seg() #endif diff --git a/harbour/source/vm/hashes.c b/harbour/source/vm/hashes.c index 3ecf693ec4..539a7a27d0 100644 --- a/harbour/source/vm/hashes.c +++ b/harbour/source/vm/hashes.c @@ -160,6 +160,16 @@ static int hb_hashItemCmp( PHB_ITEM pKey1, PHB_ITEM pKey2, BOOL fIgnoreCase ) else return 1; } + else if( HB_IS_POINTER( pKey1 ) ) + { + if( HB_IS_POINTER( pKey2 ) ) + return pKey1->item.asPointer.value < pKey2->item.asPointer.value ? -1 : + ( pKey1->item.asPointer.value > pKey2->item.asPointer.value ? 1 : 0 ); + else if( HB_IS_STRING( pKey2 ) || HB_IS_DATE( pKey2 ) ) + return -1; + else + return 1; + } else if( HB_IS_NUMINT( pKey1 ) && HB_IS_NUMINT( pKey2 ) ) { HB_LONG l1 = HB_ITEM_GET_NUMINTRAW( pKey1 ),