From bb236e07b998fa6aeaa5fe1c8b963e6bb2765fd6 Mon Sep 17 00:00:00 2001 From: Antonio Linares Date: Thu, 13 Dec 2001 15:37:11 +0000 Subject: [PATCH] New function HB_DLLDO() added --- harbour/source/vm/eval.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/harbour/source/vm/eval.c b/harbour/source/vm/eval.c index e8af3a33d5..eb74ea1a2f 100644 --- a/harbour/source/vm/eval.c +++ b/harbour/source/vm/eval.c @@ -342,4 +342,30 @@ void hb_evalBlock( PHB_ITEM pCodeBlock, ... ) va_end( args ); hb_vmFunction( uiParams ); +} + +/* Executes a Harbour pcode dynamically loaded DLL function or procedure + * Syntax: HB_DllDo( [,] ) --> [] + */ + +HB_FUNC( HB_DLLDO ) +{ + PHB_DYNS pDynSym = hb_dynsymFind( hb_strupr( hb_parc( 1 ) ) ); + + if( pDynSym ) + { + USHORT uiPCount = hb_pcount(); + USHORT uiParam; + + hb_vmPushSymbol( pDynSym->pSymbol ); + hb_vmPushNil(); + + /* same logic here as from HB_FUNC( EVAL ) */ + for( uiParam = 2; uiParam <= uiPCount; uiParam++ ) + { + hb_vmPush( hb_stackItemFromBase( uiParam ) ); + } + + hb_vmDo( uiPCount - 1 ); + } } \ No newline at end of file