2003-01-24 14:00 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
This commit is contained in:
@@ -8,6 +8,18 @@
|
||||
2002-12-01 23:12 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2003-01-24 14:00 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>
|
||||
* source/vm/hvm.c
|
||||
* hb_inkeyPoll() is removed from hb_vmDo(), the code fragment with
|
||||
hb_ReadKey() is added to hb_vmExecute() - borrowed from xHarbour.
|
||||
* source/vm/estack.c
|
||||
* source/vm/extend.c
|
||||
* include/hbapi.h
|
||||
* include/hstack.h
|
||||
* HB_API_MACROS and HB_STACK_MACROS are default options now - borrowed from xHarbour.
|
||||
* source/rtl/version.c
|
||||
! Memory leak fixed.
|
||||
|
||||
2003-01-20 00:20 UTC+0100 Martin Vogel <vogel@inttec.de>
|
||||
* contrib/libct/Makefile
|
||||
* contrib/libct/Makefile.bc
|
||||
|
||||
@@ -291,6 +291,12 @@ extern PHB_ITEM HB_EXPORT hb_param( int iParam, int iMask ); /* retrieve a gener
|
||||
extern PHB_ITEM HB_EXPORT hb_paramError( int iParam ); /* Returns either the generic parameter or a NIL item if param not provided */
|
||||
extern BOOL HB_EXPORT hb_extIsArray( int iParam );
|
||||
|
||||
#ifndef HB_NO_DEFAULT_API_MACROS
|
||||
#ifndef HB_API_MACROS
|
||||
#define HB_API_MACROS
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HB_API_MACROS
|
||||
|
||||
#include "hbapiitm.h"
|
||||
|
||||
@@ -64,6 +64,10 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifndef HB_NO_DEFAULT_STACK_MACROS
|
||||
#define HB_STACK_MACROS
|
||||
#endif
|
||||
|
||||
/* stack managed by the virtual machine */
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -65,16 +65,22 @@
|
||||
|
||||
HB_FUNC( OS )
|
||||
{
|
||||
hb_retc_buffer( hb_verPlatform() );
|
||||
char * ptr = hb_verPlatform();
|
||||
hb_retc( ptr );
|
||||
hb_xfree( ptr );
|
||||
}
|
||||
|
||||
HB_FUNC( HB_COMPILER )
|
||||
{
|
||||
hb_retc_buffer( hb_verCompiler() );
|
||||
char * ptr = hb_verCompiler();
|
||||
hb_retc( ptr );
|
||||
hb_xfree( ptr );
|
||||
}
|
||||
|
||||
HB_FUNC( VERSION )
|
||||
{
|
||||
hb_retc_buffer( hb_verHarbour() );
|
||||
char * ptr = hb_verHarbour();
|
||||
hb_retc( ptr );
|
||||
hb_xfree( ptr );
|
||||
}
|
||||
|
||||
|
||||
@@ -54,10 +54,6 @@
|
||||
#define HB_OS_WIN_32_USED
|
||||
#endif
|
||||
|
||||
#ifdef HB_STACK_MACROS
|
||||
#undef HB_STACK_MACROS
|
||||
#endif
|
||||
|
||||
#include "hbapi.h"
|
||||
#include "hbdefs.h"
|
||||
#include "hbstack.h"
|
||||
@@ -199,7 +195,7 @@ void hb_stackOldFrame( HB_STACK_STATE * pStack )
|
||||
hb_stack.iStatics = pStack->iStatics;
|
||||
}
|
||||
|
||||
#if !defined(HB_STACK_MACROS)
|
||||
#undef hb_stackItem
|
||||
HB_ITEM_PTR hb_stackItem( LONG iItemPos )
|
||||
{
|
||||
if( iItemPos < 0 )
|
||||
@@ -208,6 +204,7 @@ HB_ITEM_PTR hb_stackItem( LONG iItemPos )
|
||||
return ( * ( hb_stack.pItems + iItemPos ) );
|
||||
}
|
||||
|
||||
#undef hb_stackItemFromTop
|
||||
HB_ITEM_PTR hb_stackItemFromTop( int nFromTop )
|
||||
{
|
||||
if( nFromTop > 0 )
|
||||
@@ -216,6 +213,7 @@ HB_ITEM_PTR hb_stackItemFromTop( int nFromTop )
|
||||
return ( * ( hb_stack.pPos + nFromTop ) );
|
||||
}
|
||||
|
||||
#undef hb_stackItemFromBase
|
||||
HB_ITEM_PTR hb_stackItemFromBase( int nFromBase )
|
||||
{
|
||||
if( nFromBase <= 0 )
|
||||
@@ -224,11 +222,13 @@ HB_ITEM_PTR hb_stackItemFromBase( int nFromBase )
|
||||
return ( * ( hb_stack.pBase + nFromBase + 1 ) );
|
||||
}
|
||||
|
||||
#undef hb_stackTopItem
|
||||
HB_ITEM_PTR hb_stackTopItem( void )
|
||||
{
|
||||
return * hb_stack.pPos;
|
||||
}
|
||||
|
||||
#undef hb_stackBaseItem
|
||||
HB_ITEM_PTR hb_stackBaseItem( void )
|
||||
{
|
||||
return * hb_stack.pBase;
|
||||
@@ -236,22 +236,24 @@ HB_ITEM_PTR hb_stackBaseItem( void )
|
||||
|
||||
/* Returns SELF object, an evaluated codeblock or NIL for normal func/proc
|
||||
*/
|
||||
#undef hb_stackSelfItem
|
||||
HB_ITEM_PTR hb_stackSelfItem( void )
|
||||
{
|
||||
return * ( hb_stack.pBase + 1 );
|
||||
}
|
||||
|
||||
#undef hb_stackTopOffset
|
||||
LONG hb_stackTopOffset( void )
|
||||
{
|
||||
return hb_stack.pPos - hb_stack.pItems;
|
||||
}
|
||||
|
||||
#undef hb_stackBaseOffset
|
||||
LONG hb_stackBaseOffset( void )
|
||||
{
|
||||
return hb_stack.pBase - hb_stack.pItems + 1;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* NOTE: DEBUG function */
|
||||
void hb_stackDispLocal( void )
|
||||
|
||||
@@ -68,10 +68,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef HB_API_MACROS
|
||||
#undef HB_API_MACROS
|
||||
#endif
|
||||
|
||||
#include "hbapi.h"
|
||||
#include "hbapiitm.h"
|
||||
#include "hbset.h"
|
||||
@@ -476,6 +472,7 @@ int HB_EXPORT hb_parinfo( int iParam )
|
||||
}
|
||||
}
|
||||
|
||||
#undef hb_pcount
|
||||
int HB_EXPORT hb_pcount( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_pcount()"));
|
||||
@@ -483,6 +480,7 @@ int HB_EXPORT hb_pcount( void )
|
||||
return ( int ) ( hb_stackBaseItem() )->item.asSymbol.paramcnt;
|
||||
}
|
||||
|
||||
#undef hb_ret
|
||||
void HB_EXPORT hb_ret( void )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_ret()"));
|
||||
@@ -490,6 +488,7 @@ void HB_EXPORT hb_ret( void )
|
||||
hb_itemClear( &hb_stack.Return );
|
||||
}
|
||||
|
||||
#undef hb_reta
|
||||
void HB_EXPORT hb_reta( ULONG ulLen ) /* undocumented hb_reta() */
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_reta(%lu)", ulLen));
|
||||
@@ -497,6 +496,7 @@ void HB_EXPORT hb_reta( ULONG ulLen ) /* undocumented hb_reta() */
|
||||
hb_arrayNew( &hb_stack.Return, ulLen );
|
||||
}
|
||||
|
||||
#undef hb_retc
|
||||
void HB_EXPORT hb_retc( char * szText )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retc(%s)", szText));
|
||||
@@ -504,6 +504,7 @@ void HB_EXPORT hb_retc( char * szText )
|
||||
hb_itemPutC( &hb_stack.Return, szText );
|
||||
}
|
||||
|
||||
#undef hb_retc_buffer
|
||||
void HB_EXPORT hb_retc_buffer( char * szText )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retc_buffer(%s)", szText));
|
||||
@@ -511,6 +512,7 @@ void HB_EXPORT hb_retc_buffer( char * szText )
|
||||
hb_itemPutCPtr( &hb_stack.Return, szText, strlen( szText ) );
|
||||
}
|
||||
|
||||
#undef hb_retc_const
|
||||
void HB_EXPORT hb_retc_const( char * szText )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retc_const(%s)", szText));
|
||||
@@ -518,6 +520,7 @@ void HB_EXPORT hb_retc_const( char * szText )
|
||||
hb_itemPutCConst( &hb_stack.Return, szText );
|
||||
}
|
||||
|
||||
#undef hb_retclen
|
||||
void HB_EXPORT hb_retclen( char * szText, ULONG ulLen )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retclen(%s, %lu)", szText, ulLen));
|
||||
@@ -525,6 +528,7 @@ void HB_EXPORT hb_retclen( char * szText, ULONG ulLen )
|
||||
hb_itemPutCL( &hb_stack.Return, szText, ulLen );
|
||||
}
|
||||
|
||||
#undef hb_retclen_buffer
|
||||
void HB_EXPORT hb_retclen_buffer( char * szText, ULONG ulLen )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retclen_buffer(%s, %lu)", szText, ulLen));
|
||||
@@ -534,6 +538,7 @@ void HB_EXPORT hb_retclen_buffer( char * szText, ULONG ulLen )
|
||||
|
||||
/* szDate must have YYYYMMDD format */
|
||||
|
||||
#undef hb_retds
|
||||
void HB_EXPORT hb_retds( char * szDate )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retds(%s)", szDate));
|
||||
@@ -541,6 +546,7 @@ void HB_EXPORT hb_retds( char * szDate )
|
||||
hb_itemPutDS( &hb_stack.Return, szDate );
|
||||
}
|
||||
|
||||
#undef hb_retd
|
||||
void HB_EXPORT hb_retd( long lYear, long lMonth, long lDay )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retd(%04i, %02i, %02i)", lYear, lMonth, lDay));
|
||||
@@ -548,6 +554,7 @@ void HB_EXPORT hb_retd( long lYear, long lMonth, long lDay )
|
||||
hb_itemPutD( &hb_stack.Return, lYear, lMonth, lDay );
|
||||
}
|
||||
|
||||
#undef hb_retdl
|
||||
void HB_EXPORT hb_retdl( long lJulian )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retdl(%ld)", lJulian));
|
||||
@@ -555,6 +562,7 @@ void HB_EXPORT hb_retdl( long lJulian )
|
||||
hb_itemPutDL( &hb_stack.Return, lJulian );
|
||||
}
|
||||
|
||||
#undef hb_retl
|
||||
void HB_EXPORT hb_retl( int iLogical )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retl(%d)", iLogical));
|
||||
@@ -562,6 +570,7 @@ void HB_EXPORT hb_retl( int iLogical )
|
||||
hb_itemPutL( &hb_stack.Return, iLogical ? TRUE : FALSE );
|
||||
}
|
||||
|
||||
#undef hb_retnd
|
||||
void HB_EXPORT hb_retnd( double dNumber )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retnd(%lf)", dNumber));
|
||||
@@ -569,6 +578,7 @@ void HB_EXPORT hb_retnd( double dNumber )
|
||||
hb_itemPutND( &hb_stack.Return, dNumber );
|
||||
}
|
||||
|
||||
#undef hb_retni
|
||||
void HB_EXPORT hb_retni( int iNumber )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retni(%d)", iNumber));
|
||||
@@ -576,6 +586,7 @@ void HB_EXPORT hb_retni( int iNumber )
|
||||
hb_itemPutNI( &hb_stack.Return, iNumber );
|
||||
}
|
||||
|
||||
#undef hb_retnl
|
||||
void HB_EXPORT hb_retnl( long lNumber )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retnl(%ld)", lNumber));
|
||||
@@ -583,6 +594,7 @@ void HB_EXPORT hb_retnl( long lNumber )
|
||||
hb_itemPutNL( &hb_stack.Return, lNumber );
|
||||
}
|
||||
|
||||
#undef hb_retnlen
|
||||
void HB_EXPORT hb_retnlen( double dNumber, int iWidth, int iDec )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retnlen(%lf, %d, %d)", dNumber, iWidth, iDec));
|
||||
@@ -590,6 +602,7 @@ void HB_EXPORT hb_retnlen( double dNumber, int iWidth, int iDec )
|
||||
hb_itemPutNLen( &hb_stack.Return, dNumber, iWidth, iDec );
|
||||
}
|
||||
|
||||
#undef hb_retndlen
|
||||
void HB_EXPORT hb_retndlen( double dNumber, int iWidth, int iDec )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retndlen(%lf, %d, %d)", dNumber, iWidth, iDec));
|
||||
@@ -597,6 +610,7 @@ void HB_EXPORT hb_retndlen( double dNumber, int iWidth, int iDec )
|
||||
hb_itemPutNDLen( &hb_stack.Return, dNumber, iWidth, iDec );
|
||||
}
|
||||
|
||||
#undef hb_retnilen
|
||||
void HB_EXPORT hb_retnilen( int iNumber, int iWidth )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retnilen(%d, %d)", iNumber, iWidth));
|
||||
@@ -604,6 +618,7 @@ void HB_EXPORT hb_retnilen( int iNumber, int iWidth )
|
||||
hb_itemPutNILen( &hb_stack.Return, iNumber, iWidth );
|
||||
}
|
||||
|
||||
#undef hb_retnllen
|
||||
void HB_EXPORT hb_retnllen( long lNumber, int iWidth )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_retnllen(%ld, %d)", lNumber, iWidth));
|
||||
|
||||
@@ -83,6 +83,8 @@
|
||||
#include "hbvm.h"
|
||||
#include "hbpcode.h"
|
||||
#include "hbset.h"
|
||||
#include "hbinkey.ch"
|
||||
#include "inkey.ch"
|
||||
|
||||
#ifdef HB_MACRO_STATEMENTS
|
||||
#include "hbpp.h"
|
||||
@@ -446,6 +448,25 @@ void HB_EXPORT hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols )
|
||||
hb_ulOpcodesCalls[ ulLastOpcode ]++;
|
||||
}
|
||||
|
||||
#ifndef HB_GUI
|
||||
if( hb_set.HB_SET_CANCEL )
|
||||
{
|
||||
static unsigned short s_iCancel = 0;
|
||||
|
||||
if( ++s_iCancel == 65535 )
|
||||
{
|
||||
int ch = hb_gt_ReadKey( hb_set.HB_SET_EVENTMASK );
|
||||
|
||||
switch( ch )
|
||||
{
|
||||
case HB_K_ALT_C: /* Check for extended Alt+C */
|
||||
case K_ALT_C: /* Check for normal Alt+C */
|
||||
hb_vmRequestCancel();/* Request cancellation */
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
switch( pCode[ w ] )
|
||||
{
|
||||
/* Operators ( mathematical / character / misc ) */
|
||||
@@ -3070,9 +3091,11 @@ void hb_vmDo( USHORT uiParams )
|
||||
if( bProfiler )
|
||||
ulClock = ( ULONG ) clock();
|
||||
|
||||
/* Poll the console keyboard
|
||||
#ifndef HB_GUI
|
||||
hb_inkeyPoll(); /* Poll the console keyboard */
|
||||
hb_inkeyPoll();
|
||||
#endif
|
||||
*/
|
||||
|
||||
pItem = hb_stackNewFrame( &sStackState, uiParams );
|
||||
pSym = pItem->item.asSymbol.value;
|
||||
|
||||
Reference in New Issue
Block a user