From 2f5f0062d1caf0befa90abb9d660e29b8b74524f Mon Sep 17 00:00:00 2001 From: Antonio Linares Date: Tue, 12 Nov 2002 11:58:06 +0000 Subject: [PATCH] ":=" operator overloading support for locals and statics variables --- harbour/source/vm/hvm.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/harbour/source/vm/hvm.c b/harbour/source/vm/hvm.c index 7ac983e309..c55d502a27 100644 --- a/harbour/source/vm/hvm.c +++ b/harbour/source/vm/hvm.c @@ -4404,6 +4404,18 @@ static void hb_vmPopLocal( SHORT iLocal ) /* local variable or local parameter */ PHB_ITEM pLocal = hb_stackItemFromBase( iLocal ); + if( HB_IS_OBJECT( pLocal ) && hb_objHasMsg( pLocal, "__OpAssign" ) ) + { + HB_ITEM item; + + hb_itemInit( &item ); + hb_itemCopy( &item, hb_stackTopItem() ); + hb_vmOperatorCall( pLocal, &item, "__OPASSIGN" ); + hb_itemClear( &item ); + hb_stackPush(); + return; + } + if( HB_IS_BYREF( pLocal ) ) hb_itemCopy( hb_itemUnRef( pLocal ), hb_stackTopItem() ); else @@ -4428,6 +4440,18 @@ static void hb_vmPopStatic( USHORT uiStatic ) hb_stackTopItem()->type &= ~HB_IT_MEMOFLAG; pStatic = s_aStatics.item.asArray.value->pItems + hb_stack.iStatics + uiStatic - 1; + if( HB_IS_OBJECT( pStatic ) && hb_objHasMsg( pStatic, "__OpAssign" ) ) + { + HB_ITEM item; + + hb_itemInit( &item ); + hb_itemCopy( &item, hb_stackTopItem() ); + hb_vmOperatorCall( pStatic, &item, "__OPASSIGN" ); + hb_itemClear( &item ); + hb_stackPush(); + return; + } + if( HB_IS_BYREF( pStatic ) ) hb_itemCopy( hb_itemUnRef( pStatic ), ( hb_stackTopItem() ) ); else