20000404-03:24 GMT+1 Victor Szakats <info@szelvesz.hu>

This commit is contained in:
Viktor Szakats
2000-04-04 01:27:00 +00:00
parent ffd9ff27eb
commit c7333102d0
21 changed files with 248 additions and 150 deletions

View File

@@ -1,3 +1,56 @@
20000404-03:24 GMT+1 Victor Szakats <info@szelvesz.hu>
* include/hbpp.h
+ Upped the buffer sizes.
* source/pp/ppcore.c
* tests/tstprag.prg
* Some #pragma names modified to be Xbase++ compatible.
AUTOMEMVARS -> AUTOMEMVAR
LINEINFO -> LINENUMBER
SHORTCUTTING -> SHORTCUT
FORCEMEMVARS -> DYNAMICMEMVAR
+ Added the Xbase++ compatible pragma symtax: #pragma NAME( ON/OFF )
+ #pragma now allows space between long pragma name and parameter:
#pragma Shortcut= ON or #pragma Shortcut( ON )
! Fixed some DebugPragma() calls.
! Fixed DebugPragma() to display zero as a value.
% Code simplified, variables elminitated.
! AUTOMEMVAR check fixed.
* source/rtl/tget.prg
+ Added XPP compatible _Assign and _End() methods.
! Home(), End(), Access(), ColorDisp(), UpdateBuffer()
fixed to return Self.
+ TODO added about Xbase++ compatible method.
* source/rtl/tgetlist.prg
+ The methods returning NIL are now returning Self to be more consistent
with the other classes.
* source/rtl/tbrowse.prg
+ TODO added about Xbase++ compatible methods.
* source/rtl/philes.c
* source/vm/arrayshb.c
+ Some TODOs added about Xbase++ extension (CURDIR(), FILE(), AEVAL()).
* include/hbsetup.ch
* include/memoedit.ch
* compiler/harbour.y
* rtl/binnumx.c
* rtl/browdbx.prg
* rtl/datesx.c
* rtl/isprint.c
* rtl/mousex.c
* rtl/oemansi.c
* rtl/philesx.c
* rtl/tbrowse.prg
* rtl/tget.prg
* vm/cmdarg.c
* utils/hbtest/hbtest.prg
! XBase++ -> Xbase++
20000403-23:40 GMT+2 Maurilio Longo <maurilio.longo@libero.it>
* source/rtl/gtos2/gtos2.c
@@ -57,7 +110,7 @@
* utils/hbtest/*
+ utils/hbtest/make_xpp.bat
+ utils/hbtest/make_xpp.cmd
+ HBTEST made compatible with XBase++ 1.10. Check the results.
+ HBTEST made compatible with Xbase++ 1.10. Check the results.
Comparison:
@@ -65,10 +118,10 @@
--------------- ------------- --------- ------ -------- ----- ----
CA-Clipper 5.2e hbtest5x.exe 504.832 2976 25 3001 ~1 s
Harbour (BCC55) hbtest.exe 566.272 3186 82 3268 ~4 s
XBase++ 1.10 hbtestxp.exe 1.375.232 1977 771 2748 ~2 s
Xbase++ 1.10 hbtestxp.exe 1.375.232 1977 771 2748 ~2 s
* source/rtl/philesx.c
! CURDRIVE() error handling made more like XBase++. Retry is allowed,
! CURDRIVE() error handling made more like Xbase++. Retry is allowed,
and the error text is the same. (not tested)
20000403-13:07 GMT+1 Victor Szakats <info@szelvesz.hu>

View File

@@ -72,8 +72,8 @@ typedef struct _COMMANDS
struct _COMMANDS * last;
} COMMANDS;
#define HB_PP_STR_SIZE 8192
#define HB_PP_BUFF_SIZE 2048
#define HB_PP_STR_SIZE 12288
#define HB_PP_BUFF_SIZE 4096
#define HB_SKIPTABSPACES( sptr ) while( *sptr == ' ' || *sptr == '\t' ) ( sptr )++

View File

@@ -54,7 +54,7 @@
/* Include new CA-Cl*pper 5.3[a,b] functions */
#define HB_COMPAT_C53
/* Include new Alaska XBase++ functions */
/* Include new Alaska Xbase++ functions */
#define HB_COMPAT_XPP
/* Include new CA-VO functions */
#define HB_COMPAT_VO

View File

@@ -43,7 +43,7 @@
#define ME_INIT 3 /* Initialization mode */
#define ME_REQUEST 4 /* Memoedit requests an input from */
/* the user function, e.g. after */
/* ME_PASTE */ /* XBase++ extension */
/* ME_PASTE */ /* Xbase++ extension */
/* User callback return codes */
#define ME_DEFAULT 0 /* Perform default action */
@@ -53,7 +53,7 @@
#define ME_TOGGLESCROLL 35 /* Toggle scrolling mode */
#define ME_WORDRIGHT 100 /* Perform word-right operation */
#define ME_BOTTOMRIGHT 101 /* Perform bottom-right operation */
#define ME_PASTE 110 /* Paste string into buffer */ /* XBase++ extension */
#define ME_PASTE 110 /* Paste string into buffer */ /* Xbase++ extension */
/* NOTE: Return codes 1-31 cause MEMOEDIT() to perform the */
/* edit action corresponding to the key whose value is returned. */

View File

@@ -255,7 +255,7 @@ Source : Crlf
;
Line : LINE NUM_INTEGER LITERAL Crlf
| LINE NUM_INTEGER LITERAL '@' LITERAL Crlf /* XBase++ style */
| LINE NUM_INTEGER LITERAL '@' LITERAL Crlf /* Xbase++ style */
;
Function : FunScope FUNCTION IdentName { hb_comp_cVarType = ' '; hb_compFunctionAdd( $3, ( HB_SYMBOLSCOPE ) $1, 0 ); } Params Crlf {}

View File

@@ -113,7 +113,7 @@ static int NextParm( char **, char * );
static BOOL OpenInclude( char *, PATHNAMES *, PHB_FNAME, BOOL bStandardOnly, char * );
/* These are related to pragma support */
static int ParsePragma( char * );
static void ParsePragma( char * );
static BOOL StringToBool( char *, BOOL );
static int StringToInt( char *, int );
static BOOL IsOnOffSwitch( char *, BOOL );
@@ -359,7 +359,7 @@ int hb_pp_ParseDirective( char * sLine )
return -1;
else if( i == 6 && memcmp( sDirective, "PRAGMA", 6 ) == 0 )
ParsePragma( sLine ); /* --- #pragma --- */
ParsePragma( sLine ); /* --- #pragma --- */
else
hb_compGenError( hb_pp_szErrors, 'F', HB_PP_ERR_WRONG_DIRECTIVE, sDirective, NULL );
@@ -2442,55 +2442,47 @@ static BOOL OpenInclude( char * szFileName, PATHNAMES * pSearch, PHB_FNAME pMain
hb_comp_files.iFiles++;
return TRUE;
}
return ( FALSE );
return FALSE;
}
/* Size of abreviated pragma commands */
#define PRAGMAS_LEN 8
/* TODO: Add support for:
CompileModule /M
QuietMode /Q
RequestLib /R
TempPath /T
StdHeader /U
CheckSyntax /S
*/
static int ParsePragma( char * sLine )
static void ParsePragma( char * sLine )
{
char pragma[ MAX_NAME ];
HB_TRACE(HB_TR_DEBUG, ("ParsePragma(%s)", sLine));
HB_SKIPTABSPACES( sLine );
NextWord( &sLine, pragma, FALSE );
if( HB_ISOPTSEP( pragma[ 0 ] ) )
if( HB_ISOPTSEP( sLine[ 0 ] ) )
{
switch( pragma[ 1 ] )
switch( sLine[ 1 ] )
{
case 'a':
case 'A':
hb_comp_bAutoMemvarAssume = IsOnOffSwitch( pragma, hb_comp_bAutoMemvarAssume );
DebugPragma( pragma, -1, hb_comp_bAutoMemvarAssume );
hb_comp_bAutoMemvarAssume = IsOnOffSwitch( sLine, hb_comp_bAutoMemvarAssume );
DebugPragma( sLine, -1, hb_comp_bAutoMemvarAssume );
break;
case 'b':
case 'B':
hb_comp_bDebugInfo = IsOnOffSwitch( pragma, hb_comp_bDebugInfo );
hb_comp_bDebugInfo = IsOnOffSwitch( sLine, hb_comp_bDebugInfo );
hb_comp_bLineNumbers = hb_comp_bDebugInfo;
DebugPragma( pragma, -1, hb_comp_bDebugInfo );
DebugPragma( sLine, -1, hb_comp_bDebugInfo );
break;
case 'e':
case 'E':
if( pragma[ 2 ] == 's' ||
pragma[ 2 ] == 'S' )
if( sLine[ 2 ] == 's' ||
sLine[ 2 ] == 'S' )
{
switch( pragma[ 3 ] )
switch( sLine[ 3 ] )
{
case '\0':
case '0':
@@ -2508,59 +2500,59 @@ static int ParsePragma( char * sLine )
default:
hb_compGenError( hb_pp_szErrors, 'F', HB_PP_ERR_PRAGMA_BAD_VALUE, NULL, NULL );
}
DebugPragma( pragma, hb_comp_iExitLevel, FALSE );
DebugPragma( sLine, hb_comp_iExitLevel, FALSE );
}
break;
case 'l':
case 'L':
hb_comp_bLineNumbers = IsOnOffSwitch( pragma, hb_comp_bLineNumbers );
DebugPragma( pragma, -1, hb_comp_bLineNumbers );
hb_comp_bLineNumbers = IsOnOffSwitch( sLine, hb_comp_bLineNumbers );
DebugPragma( sLine, -1, hb_comp_bLineNumbers );
break;
case 'n':
case 'N':
hb_comp_bStartProc = IsOnOffSwitch( pragma, hb_comp_bStartProc );
DebugPragma( pragma, -1, hb_comp_bStartProc );
hb_comp_bStartProc = IsOnOffSwitch( sLine, hb_comp_bStartProc );
DebugPragma( sLine, -1, hb_comp_bStartProc );
break;
case 'p':
case 'P':
hb_comp_bPPO = IsOnOffSwitch( pragma, hb_comp_bPPO );
DebugPragma( pragma, -1, hb_comp_bPPO );
hb_comp_bPPO = IsOnOffSwitch( sLine, hb_comp_bPPO );
DebugPragma( sLine, -1, hb_comp_bPPO );
break;
case 'v':
case 'V':
hb_comp_bForceMemvars = IsOnOffSwitch( pragma, hb_comp_bForceMemvars );
DebugPragma( pragma, -1, hb_comp_bForceMemvars );
hb_comp_bForceMemvars = IsOnOffSwitch( sLine, hb_comp_bForceMemvars );
DebugPragma( sLine, -1, hb_comp_bForceMemvars );
break;
case 'w':
case 'W':
if( pragma[ 2 ] != '\0' )
if( sLine[ 2 ] != '\0' )
{
/* Check for +/- */
if( pragma[ strlen( pragma ) - 1 ] == '+' ||
pragma[ strlen( pragma ) - 1 ] == '-' )
hb_comp_iWarnings = IsOnOffSwitch( pragma, hb_comp_iWarnings != 0 ) ? 1 : 0;
if( sLine[ strlen( sLine ) - 1 ] == '+' ||
sLine[ strlen( sLine ) - 1 ] == '-' )
hb_comp_iWarnings = IsOnOffSwitch( sLine, hb_comp_iWarnings != 0 ) ? 1 : 0;
else
{
/* There is -w<0,1,2,3> probably */
hb_comp_iWarnings = pragma[ 2 ] - '0';
hb_comp_iWarnings = sLine[ 2 ] - '0';
if( hb_comp_iWarnings < 0 || hb_comp_iWarnings > 3 )
hb_compGenError( hb_pp_szErrors, 'F', HB_PP_ERR_PRAGMA_BAD_VALUE, NULL, NULL );
DebugPragma( pragma, -1, hb_comp_iWarnings );
DebugPragma( sLine, -1, hb_comp_iWarnings );
}
}
break;
case 'z':
case 'Z':
hb_comp_bShortCuts = IsOnOffSwitch( pragma, hb_comp_bShortCuts );
DebugPragma( pragma, -1, hb_comp_bShortCuts );
hb_comp_bShortCuts = IsOnOffSwitch( sLine, hb_comp_bShortCuts );
DebugPragma( sLine, -1, hb_comp_bShortCuts );
break;
default:
@@ -2569,160 +2561,162 @@ static int ParsePragma( char * sLine )
}
else
{
char * temp = hb_strupr( pragma );
char * temp = hb_strupr( sLine );
if( memcmp( pragma, "AUTOMEMVARS", PRAGMAS_LEN ) == 0 )
if( memcmp( temp, "AUTOMEMVAR", PRAGMAS_LEN ) == 0 )
{
hb_comp_bAutoMemvarAssume = StringToBool( temp, hb_comp_bAutoMemvarAssume );
DebugPragma( pragma, -1, hb_comp_bAutoMemvarAssume );
DebugPragma( sLine, -1, hb_comp_bAutoMemvarAssume );
}
else if( memcmp( temp, "DEBUGINFO", PRAGMAS_LEN ) == 0 )
{
hb_comp_bDebugInfo = StringToBool( temp, hb_comp_bDebugInfo );
hb_comp_bLineNumbers = hb_comp_bDebugInfo;
DebugPragma( pragma, -1, hb_comp_bDebugInfo );
DebugPragma( sLine, -1, hb_comp_bDebugInfo );
}
else if( memcmp( temp, "ENABLEWARNINGS", PRAGMAS_LEN ) == 0 )
{
hb_comp_iWarnings = StringToBool( temp, hb_comp_iWarnings != 0 ) ? 1 : 0;
DebugPragma( pragma, hb_comp_iWarnings, FALSE );
DebugPragma( sLine, hb_comp_iWarnings, FALSE );
}
else if( memcmp( temp, "EXITSEVERITY", PRAGMAS_LEN ) == 0 )
{
hb_comp_iExitLevel = StringToInt( temp, hb_comp_iExitLevel );
if( hb_comp_iExitLevel < 0 || hb_comp_iExitLevel > 2 )
if( hb_comp_iExitLevel != HB_EXITLEVEL_DEFAULT &&
hb_comp_iExitLevel != HB_EXITLEVEL_SETEXIT &&
hb_comp_iExitLevel != HB_EXITLEVEL_DELTARGET )
hb_compGenError( hb_pp_szErrors, 'F', HB_PP_ERR_PRAGMA_BAD_VALUE, NULL, NULL );
DebugPragma( pragma, hb_comp_iExitLevel, FALSE );
DebugPragma( sLine, hb_comp_iExitLevel, FALSE );
}
else if( memcmp( temp, "FORCEMEMVARS", PRAGMAS_LEN ) == 0 )
else if( memcmp( temp, "DYNAMICMEMVAR", PRAGMAS_LEN ) == 0 )
{
hb_comp_bForceMemvars = StringToBool( temp, hb_comp_bForceMemvars );
DebugPragma( pragma, -1, hb_comp_bForceMemvars );
DebugPragma( sLine, -1, hb_comp_bForceMemvars );
}
else if( memcmp( temp, "LINEINFO", PRAGMAS_LEN ) == 0 )
else if( memcmp( temp, "LINENUMBER", PRAGMAS_LEN ) == 0 )
{
hb_comp_bLineNumbers = StringToBool( temp, hb_comp_bLineNumbers );
DebugPragma( pragma, -1, hb_comp_bLineNumbers );
DebugPragma( sLine, -1, hb_comp_bLineNumbers );
}
else if( memcmp( temp, "NOSTARTPROC", PRAGMAS_LEN ) == 0 )
{
hb_comp_bStartProc = StringToBool( temp, hb_comp_bStartProc );
DebugPragma( pragma, hb_comp_bStartProc, FALSE );
DebugPragma( sLine, -1, hb_comp_bStartProc );
}
else if( memcmp( temp, "PREPROCESSING", PRAGMAS_LEN ) == 0 )
{
hb_comp_bPPO = StringToBool( temp, hb_comp_bPPO );
DebugPragma( pragma, -1, hb_comp_bPPO );
DebugPragma( sLine, -1, hb_comp_bPPO );
}
else if( memcmp( temp, "SHORTCUTTING", PRAGMAS_LEN ) == 0 )
else if( memcmp( temp, "SHORTCUT", PRAGMAS_LEN ) == 0 )
{
hb_comp_bShortCuts = StringToBool( temp, hb_comp_bShortCuts );
DebugPragma( pragma, -1, hb_comp_bShortCuts );
DebugPragma( sLine, -1, hb_comp_bShortCuts );
}
else if( memcmp( temp, "WARNINGLEVEL", PRAGMAS_LEN ) == 0 )
{
hb_comp_iWarnings = StringToInt( temp, hb_comp_iWarnings );
if( hb_comp_iWarnings < 0 || hb_comp_iWarnings > 3 )
hb_compGenError( hb_pp_szErrors, 'F', HB_PP_ERR_PRAGMA_BAD_VALUE, NULL, NULL );
DebugPragma( pragma, -1, hb_comp_iWarnings );
DebugPragma( sLine, hb_comp_iWarnings, FALSE );
}
else if( memcmp( temp, "TRACEPRAGMAS", PRAGMAS_LEN ) == 0 )
{
s_bTracePragma = StringToBool( temp, s_bTracePragma );
DebugPragma( pragma, -1, s_bTracePragma );
DebugPragma( sLine, -1, s_bTracePragma );
}
}
return 0;
}
/* Checks for ON/OFF within the string, sets bDefault if not found */
static BOOL StringToBool( char * str, BOOL bDefault )
{
char * pos;
BOOL bRet = bDefault;
pos = strchr( str, '=' );
if( pos )
{
long lPos = pos - str + 1;
if( str[ lPos ] == 'O' )
{
if( strlen( str ) >= 2 &&
str[ lPos + 1 ] == 'N' )
bRet = TRUE;
else if( strlen( str ) >= 3 &&
str[ lPos + 1 ] == 'F' &&
str[ lPos + 2 ] == 'F' )
bRet = FALSE;
}
}
return bRet;
}
/* Checks for +/- within the string, sets bDefault if not found */
static BOOL IsOnOffSwitch( char * str, BOOL bDefault )
static BOOL IsOnOffSwitch( char * str, BOOL bValue )
{
BOOL bRet = bDefault;
long lPos = strlen( str ) - 1;
if( str[ lPos ] == '+' )
bRet = TRUE;
bValue = TRUE;
else if( str[ lPos ] == '-' )
bRet = FALSE;
bValue = FALSE;
return bRet;
return bValue;
}
/* Returns value after =, sets iDefault if not found */
static int StringToInt( char * str, int iDefault )
/* Checks for ON/OFF within the string, sets bDefault if not found */
static BOOL StringToBool( char * str, BOOL bValue )
{
char * pos;
int iRet = iDefault;
char * pos = strchr( str, '=' );
pos = strchr( str, '=' );
if( ! pos )
pos = strchr( str, '(' );
if( pos )
{
long lPos = pos - str + 1;
pos++;
if( lPos && str[ lPos ] )
iRet = str[ lPos ] - '0';
HB_SKIPTABSPACES( pos );
if( strlen( pos ) >= 2 &&
pos[ 0 ] == 'O' &&
pos[ 1 ] == 'N' )
bValue = TRUE;
else if( strlen( pos ) >= 3 &&
pos[ 0 ] == 'O' &&
pos[ 1 ] == 'F' &&
pos[ 2 ] == 'F' )
bValue = FALSE;
}
return iRet;
return bValue;
}
/* Returns value after =, sets iDefault if not found */
static int StringToInt( char * str, int iValue )
{
char * pos = strchr( str, '=' );
if( ! pos )
pos = strchr( str, '(' );
if( pos )
{
pos++;
HB_SKIPTABSPACES( pos );
if( *pos >= '0' && *pos <= '9' )
iValue = *pos - '0';
}
return iValue;
}
/* This is only to debug pragmas now */
static void DebugPragma( char * szStr, int iValue, BOOL bValue )
static void DebugPragma( char * str, int iValue, BOOL bValue )
{
if( s_bTracePragma )
{
char * ptr = strchr( szStr, '=' );
char * temp = ( char * ) hb_xgrab( strlen( szStr ) + 1 );
char * pos = strchr( str, '=' );
char * temp = ( char * ) hb_xgrab( strlen( str ) + 1 );
BOOL bIsSwitch = TRUE;
*temp = '\0';
* temp = '\0';
/* strip =... from szStr. Just cosmetic */
if( ptr )
/* strip =... from str. Just cosmetic */
if( pos )
{
int i = 0;
while( szStr[ i ] != '=' )
temp[ i ] = szStr[ i++ ];
while( str[ i ] != '=' )
temp[ i ] = str[ i++ ];
temp[ i ] = '\0';
bIsSwitch = FALSE;
}
if( iValue > 0 )
printf( "#pragma %s set to %i\n", bIsSwitch ? szStr : temp, iValue );
if( iValue >= 0 )
printf( "#pragma %s set to %i\n", bIsSwitch ? str : temp, iValue );
else
printf( "#pragma %s is %s\n", bIsSwitch ? szStr : temp, bValue ? "ON" : "OFF" );
printf( "#pragma %s is %s\n", bIsSwitch ? str : temp, bValue ? "ON" : "OFF" );
hb_xfree( temp );
}

View File

@@ -33,7 +33,7 @@
*
*/
/* NOTE: XBase++ compatible functions */
/* NOTE: Xbase++ compatible functions */
#include "hbapi.h"
#include "hbapiitm.h"

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* DBSKIPPER() function for XBase++
* DBSKIPPER() function for Xbase++
*
* Copyright 1999 Paul Tucker <ptucker@sympatico.ca>
* www - http://www.harbour-project.org
@@ -35,7 +35,7 @@
#include "hbsetup.ch"
/* NOTE: XBase++ has a standard function named dbSkipper(), it's not a
/* NOTE: Xbase++ has a standard function named dbSkipper(), it's not a
standard CA-Cl*pper 5.x function, though. */
/* NOTE: This function is exactly the same as Skipped() in BROWDB.PRG */

View File

@@ -37,8 +37,8 @@
#ifdef HB_COMPAT_XPP
/* NOTE: XBase++ compatible function */
/* NOTE: XBase++ checks for the parameter count at compile time */
/* NOTE: Xbase++ compatible function */
/* NOTE: Xbase++ checks for the parameter count at compile time */
HB_FUNC( STOD )
{

View File

@@ -64,7 +64,7 @@
#endif
/* NOTE: The parameter is an extension over CA-Cl*pper, it's also supported
by XBase++. [vszakats] */
by Xbase++. [vszakats] */
HB_FUNC( ISPRINTER )
{

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* NUMBUTTONS(), SETMOUSE() XBase++ compatible functions.
* NUMBUTTONS(), SETMOUSE() Xbase++ compatible functions.
*
* Copyright 1999 Victor Szakats <info@szelvesz.hu>
* www - http://www.harbour-project.org
@@ -37,7 +37,7 @@
#include "hbapiitm.h"
#include "hbapigt.h"
/* NOTE: XBase++ compatible functions */
/* NOTE: Xbase++ compatible functions */
#ifdef HB_COMPAT_XPP

View File

@@ -4,7 +4,7 @@
/*
* Harbour Project source code:
* OEM <-> ANSI string conversion functions (Win32 specific, XBase++ ext.)
* OEM <-> ANSI string conversion functions (Win32 specific, Xbase++ ext.)
*
* Copyright 1999 Victor Szakats <info@szelvesz.hu>
* www - http://www.harbour-project.org
@@ -87,14 +87,14 @@ HB_FUNC( HB_OEMTOANSI )
#ifdef HB_COMPAT_XPP
/* NOTE: XBase++ compatible function */
/* NOTE: Xbase++ compatible function */
HB_FUNC( CONVTOOEMCP )
{
HB_FUNCNAME( HB_ANSITOOEM )();
}
/* NOTE: XBase++ compatible function */
/* NOTE: Xbase++ compatible function */
HB_FUNC( CONVTOANSICP )
{

View File

@@ -154,6 +154,9 @@ HB_FUNC( FSEEK )
hb_retnl( 0 );
}
/* TODO: Xbase++ has an extension where the second parameter can specify
the required attribute. */
HB_FUNC( FILE )
{
hb_retl( ISCHAR( 1 ) ? hb_fsFile( ( BYTE * ) hb_parc( 1 ) ) : FALSE );
@@ -190,6 +193,8 @@ HB_FUNC( FREADSTR )
/* NOTE: This function should not return the leading and trailing */
/* (back)slashes. [vszakats] */
/* TODO: Xbase++ is able to change to the specified directory. */
HB_FUNC( CURDIR )
{
USHORT uiErrorOld = hb_fsError();

View File

@@ -41,7 +41,7 @@
#ifdef HB_COMPAT_XPP
/* NOTE: XBase++ compatible */
/* NOTE: Xbase++ compatible */
HB_FUNC( CURDRIVE )
{

View File

@@ -36,6 +36,14 @@
/* NOTE: Don't use SAY in this module, use DispOut(), DispOutAt() instead,
otherwise it will not be CA-Cl*pper compatible. [vszakats] */
/* TODO: :firstScrCol() --> nScreenCol
Determines screen column where the first table column is displayed.
Xbase++ compatible method */
/* TODO: :viewArea() --> aViewArea
Determines the coordinates for the data area of a TBrowse object.
Xbase++ compatible method */
/* TOFIX: Clipper will determine the column width when the TBROWSE is displayed
at the first time. (while Harbour does that when adding the column)
Clipper will leave NIL in the :width variable until determined. Also

View File

@@ -34,12 +34,18 @@
*/
#include "hbclass.ch"
#include "hbsetup.ch"
#include "color.ch"
#include "common.ch"
#include "setcurs.ch"
#include "getexit.ch"
#include "inkey.ch"
/* TODO: :posInBuffer( <nRow>, <nCol> ) --> nPos
Determines a position within the edit buffer based on screen
coordinates.
Xbase++ compatible method */
#define GET_CLR_UNSELECTED 0
#define GET_CLR_ENHANCED 1
@@ -76,19 +82,25 @@ CLASS TGet
METHOD New( nRow, nCol, bVarBlock, cVarName, cPicture, cColorSpec )
METHOD Assign() INLINE ::VarPut( ::unTransform() )
METHOD Assign()
#ifdef HB_COMPAT_XPP
MESSAGE _Assign METHOD Assign()
#endif
METHOD Display()
METHOD ColorDisp( cColorSpec ) INLINE ::ColorSpec := cColorSpec, ::Display()
METHOD ColorDisp( cColorSpec ) INLINE ::ColorSpec := cColorSpec, ::Display(), Self
METHOD KillFocus()
METHOD Reset()
METHOD SetFocus()
METHOD Undo()
METHOD UnTransform()
METHOD UpdateBuffer() INLINE ::Assign()
METHOD UpdateBuffer() INLINE ::Assign(), Self
METHOD VarGet()
METHOD VarPut()
METHOD End()
#ifdef HB_COMPAT_XPP
MESSAGE _End METHOD End()
#endif
METHOD Home()
MESSAGE Left() METHOD _Left()
MESSAGE Right() METHOD _Right()
@@ -117,7 +129,7 @@ CLASS TGet
METHOD Input( cChar )
METHOD PutMask( cBuffer, lEdit )
METHOD HasScroll() INLINE ( ::nDispLen != ::nMaxLen )
METHOD HasScroll() INLINE ::nDispLen != ::nMaxLen
ENDCLASS
@@ -251,7 +263,15 @@ return Self
//---------------------------------------------------------------------------//
METHOD Display(lForced) CLASS TGet
METHOD Assign() CLASS TGet
::VarPut( ::unTransform() )
return Self
//---------------------------------------------------------------------------//
METHOD Display( lForced ) CLASS TGet
local nOldCursor := SetCursor( SC_NONE )
@@ -294,7 +314,7 @@ METHOD End() CLASS TGet
::Display(.f.)
endif
return nil
return Self
//---------------------------------------------------------------------------//
@@ -306,7 +326,7 @@ METHOD Home() CLASS TGet
::Display(.f.)
endif
return nil
return Self
//---------------------------------------------------------------------------//

View File

@@ -129,7 +129,7 @@ METHOD Reader() CLASS TGetList
oGet:killFocus()
endif
return nil
return Self
METHOD GetApplyKey( nKey ) CLASS TGetList
@@ -137,7 +137,7 @@ METHOD GetApplyKey( nKey ) CLASS TGetList
if ! ( ( bKeyBlock := Setkey( nKey ) ) == nil )
::GetDoSetKey( bKeyBlock )
return nil
return Self
endif
do case
@@ -245,7 +245,7 @@ METHOD GetApplyKey( nKey ) CLASS TGetList
endif
endcase
return nil
return Self
METHOD GetPreValidate() CLASS TGetList
@@ -334,7 +334,7 @@ METHOD GetDoSetKey( bKeyBlock ) CLASS TGetList
oGet:ExitState := GE_ESCAPE
endif
return nil
return Self
METHOD Settle( nPos ) CLASS TGetList
@@ -414,7 +414,7 @@ METHOD PostActiveGet() CLASS TGetList
::ReadVar( ::GetReadVar() )
::ShowScoreBoard()
return nil
return Self
METHOD GetReadVar() CLASS TGetList
@@ -471,7 +471,7 @@ METHOD ShowScoreboard() CLASS TGetList
SetCursor( nOldCursor )
endif
return nil
return Self
METHOD DateMsg() CLASS TGetList
@@ -494,7 +494,7 @@ METHOD DateMsg() CLASS TGetList
endif
return nil
return Self
METHOD ReadVar( cNewVarName ) CLASS TGetList

View File

@@ -222,6 +222,9 @@ HB_FUNC( ASCAN )
hb_retnl( 0 );
}
/* TODO: In Xbase++ fifth parameter determines whether array elements
are passed by reference to the code block. [vszakats] */
HB_FUNC( AEVAL )
{
PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );

View File

@@ -331,7 +331,7 @@ void hb_cmdargProcessVM( void )
#endif
hb_conOutErr( hb_conNewLine(), 0 );
hb_conOutErr( "Alaska XBase++ extensions: ", 0 );
hb_conOutErr( "Alaska Xbase++ extensions: ", 0 );
#if defined( HB_COMPAT_XPP )
hb_conOutErr( "Yes", 0 );
#else

View File

@@ -12,7 +12,16 @@
function Main()
#pragma ShortCutting=On
#pragma Shortcut=On
#pragma Shortcut= On
#pragma Shortcut = On
#pragma Shortcut(On)
#pragma Shortcut( On)
#pragma Shortcut( OFF )
#pragma Shortcut( On )
#pragma Shortcut( ON )
#pragma Shortcut( ON
/* or #pragma /Z+ */
if .t. .and. .f.
@@ -24,7 +33,13 @@ function Main()
endif
#pragma /Z-
/* or #pragma ShortCutting=Off */
/* or #pragma Shortcut=Off */
#pragma Exitseverity=0
#pragma Exitseverity=1
#pragma Exitseverity(0)
#pragma Exitseverity( 0 )
#pragma Exitseverity( 1 )
/* Pragmas with bad values will cause an error */
#pragma WarningLevel=8

View File

@@ -44,7 +44,7 @@
/* NOTE: It's worth to make tests with and without the /z switch */
/* NOTE: Guard all Harbour extensions with __HARBOUR__ #ifdefs */
/* NOTE: Use ":className()" instead of ":className" to make your code work
with XBase++. XBase++ seem to take differenciate between the
with Xbase++. Xbase++ seem to take differenciate between the
object method and object variable form. In CA-Clipper and Harbour
both syntax is accepted. Same goes for ":Eval()" */