2003-01-24 14:00 UTC+0300 Alexander Kresin <alex@belacy.belgorod.su>

This commit is contained in:
Alexander S.Kresin
2003-01-24 11:01:55 +00:00
parent e16efe4f88
commit dcd06c1da2
7 changed files with 82 additions and 14 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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
{

View File

@@ -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 );
}

View File

@@ -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 )

View File

@@ -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));

View File

@@ -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;