19990907-02:30 GMT+1

This commit is contained in:
Viktor Szakats
1999-09-07 00:44:21 +00:00
parent c3a842d991
commit 4d26144d36
19 changed files with 382 additions and 249 deletions

View File

@@ -1,3 +1,60 @@
19990907-02:30 GMT+1 Victor Szel <info@szelvesz.hu>
* include/external.ch
source/runner/stdalone/external.prg
+ Updated to reflect the recent changes.
* source/rtl/itemapi.c
! hb_itemGetCPtr() will now return an empty string ("") on error and not
a NULL pointer.
! Leak fixed in hb_evalLaunch() when the function to evaluate was passed
as a string. (hb_itemGetC() changed to hb_itemGetCPtr())
* source/rtl/arrays.c
source/rtl/extend.c
source/rdd/dbcmd.c
include/extend.h
* Some array functions renamed to be consistent with the similar Item API
function names.
hb_arrayGetString -> hb_arrayGetCPtr
hb_arrayGetStringLen -> hb_arrayGetCLen
hb_arrayGetBool -> hb_arrayGetL
hb_arrayGetDouble -> hb_arrayGetND
hb_arrayGetDate -> hb_arrayGetDS
* hb_arrayGetCPtr() now calls hb_itemGetCPtr() instead of using redundant
code.
+ hb_arrayGetC() added keep it in sync with the Item API.
% Further simplified the hb_arrayGet*()/hb_arraySet()/+some more functions.
* source/rdd/dbcmd.c
funclist.txt
+ DBF() function added. (not tested yet)
* source/rdd/dbf1.c
source/rdd/delim1.c
source/rdd/sdf1.c
source/rdd/dbf0.prg
source/rdd/delim0.prg
source/rdd/sdf0.prg
* The forcelink function names changed. The C functions got a "C" appended
at the end, the Harbour ones got an underscore at the beginning, this
way it's more Clipper like, but it was also inevitable, since previously
the forcelink function HB_DBF() was colliding with the standard Clipper
function named DBF() (HB_DBF() from C).
* source/rdd/dbcmd.c
source/rdd/rddsys.prg
source/vm/hvm.c
include/rddapi.h
* Instead of calling rddShutDown() from a Harbour EXIT function, now
the same functions C version is called by the Virtual Machine on exit.
This way it's more Clipper compatible, since in CA-Cl*pper the RDDSYS
doesn't need to clean-up on exit. RDDSYS.PRG is now exchangeable with
the Clipper one.
! hb_rddShutDown() fixed a possible GPF if there was no rddSetDefault()
calls at all (when RDDSYS was overridden by a dummy one).
* source/rtl/setkey.prg
* Not CA-Clipper compatible functions (extensions) renamed to avoid
possible collision with existing code:
SETKEYGET() -> HB_SETKEYGET()
SETKEYSAVE() -> HB_SETKEYSAVE()
SETKEYCHECK() -> HB_SETKEYCHECK()
The function names are valid even if compiled with /10 switch.
19990907-01:00 GMT+1 Victor Szel <info@szelvesz.hu>
* source/rtl/arrays.c
! hb_arrayScan() fixed, so that it can also search for a NIL value. Like
@@ -23,7 +80,7 @@
* tests/working/rtl_test.prg
+ Some PAD?() tests added with new types, byref. Some new MIN()/MAX() tests
added. ASCAN() tests added.
+ /SKIP: switch added, to make it possible to temporarly skip specific
+ /SKIP: switch added, to make it possible to temporarly skip specific
tests. (RTL_TEST /SKIP:100,102)
+ EVAL(), :EVAL() tests added. Some are commented out, due to bugs.
* source/rtl/itemapi.c
@@ -261,33 +318,33 @@
19990903-14:35 GMT+2 Ryszard Glab <rglab@imid.med.pl>
*source/rtl/codebloc.c
* corrected bug if nested codeblocks without local variables
references were created
* corrected bug if nested codeblocks without local variables
references were created
19990903-14:00 GMT+2 Ryszard Glab <rglab@imid.med.pl>
*include/hb_vmpub.h
* added a second parameter for HB_DYNS_FUNC
* added a second parameter for HB_DYNS_FUNC
*source/vm/dynsym.c
*include/extend.h
* added a second parameter for hb_dynsymEval() function
*source/rtl/memvars.c
* new function __mvDBGINFO() for memvars debugging
(documentation included in memvars.c)
* new function __mvDBGINFO() for memvars debugging
(documentation included in memvars.c)
*include/memvars.ch
* new MV_PRIVATE definition
* new MV_PRIVATE definition
*source/rtl/mouseapi.c
* added (char*) type cast to make C++ compilers happy
* added (char*) type cast to make C++ compilers happy
19990903-08:00 GMT+1 Victor Szel <info@szelvesz.hu>
* include/hbdefs.h
include/extend.h
! IT_OBJECT() checked for IT_ARRAY type, correct to IT_OBJECT, which
is equal to IT_ARRAY, so there was no bug, but it's not a good practice
is equal to IT_ARRAY, so there was no bug, but it's not a good practice
to take shortcuts like this.
* Type checking macros moved to extend.h from hbdefs.h
* source/vm/hvm.c
@@ -322,7 +379,7 @@
formatting errors corrected.
+ Error value substitution support added to:
hb_vmNot(), hb_vmNegate(), hb_vmInString(), hb_vmInc(), hb_vmDec().
! hb_vmEqual(), hb_vmNotEqual() fixed for those where it returned
! hb_vmEqual(), hb_vmNotEqual() fixed for those where it returned
a constant FALSE, blocks, arrays, etc. It confused the stack.
! Fixed all hb_vmOperatorCall() calls since they were not popping the
values from the stack. ( did not test this )
@@ -399,7 +456,7 @@
! hb_err*() caller now expect E_BREAK, too.
! hb_setRelease() called close_binary() instead of close_text() for
hb_set_extrahan. Fixed.
- Removed a bunch of (now) unneeded include files and OS branched.
- Removed a bunch of (now) unneeded include files and OS branched.
Source looks kind of clean now.
* config/rules.cf
make_tpl.*
@@ -463,9 +520,9 @@
* hb_fsExtOpen
+ some HB_SYMBOL_UNUSED added.
NOTE [vszel]:
1.) I've #ifdef-ed out the new stuff for __CYGWIN__ since
setdisk()/getdisk() were neither declared nor present in any
NOTE [vszel]:
1.) I've #ifdef-ed out the new stuff for __CYGWIN__ since
setdisk()/getdisk() were neither declared nor present in any
libraries.
2.) I've added some new header files to FILESYS.C. Please check them
on your system, whether they are correct.
@@ -513,7 +570,7 @@
Like CLIPPER.EXE.
* Indentation more or less fixed.
* Zeros changed to NULL and '\0'.
% Inc()/Dec() logic cleaned-up. Note that there are many more places where
% Inc()/Dec() logic cleaned-up. Note that there are many more places where
such logic cleaning and variable scoping optim. could be done.
I'm also not sure if the debug_msg() calls should only be made when
warnings are turned on, IMHO they should always appear when DEBUG is on.
@@ -554,8 +611,8 @@
* corrected generation of line number opcodes
* corrected the support for local variables when nested
codeblocks are used
* the step value is popped correctly at the end of FOR/NEXT loop
(the nested loops are working correctly now)
* the step value is popped correctly at the end of FOR/NEXT loop
(the nested loops are working correctly now)
*source/rtl/codebloc.c
* corrected the support for local variables when nested

View File

@@ -62,7 +62,7 @@ DBCREATEIND ;S;
DBDELETE ;R;
DBEDIT ;N;
DBEVAL ;S;
DBF ;N;
DBF ;R;
DBFILTER ;S;
DBGOBOTTOM ;R;
DBGOTO ;R;

View File

@@ -288,13 +288,15 @@ extern BOOL hb_arrayLast( PHB_ITEM pArray, PHB_ITEM pResult );
extern BOOL hb_arrayRelease( PHB_ITEM pArray ); /* releases an array - don't call it - use ItemRelease() !!! */
extern BOOL hb_arraySet( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem ); /* sets an array element */
extern BOOL hb_arrayGet( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem ); /* retrieves an item */
extern char * hb_arrayGetString( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the string contained on an array element */
extern ULONG hb_arrayGetStringLen( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the string length contained on an array element */
extern BOOL hb_arrayGetBool( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the logical value contained on an array element */
extern ULONG hb_arrayCopyC( PHB_ITEM pArray, ULONG ulIndex, char * szBuffer, ULONG ulLen );
extern char * hb_arrayGetC( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the string contained on an array element */
extern char * hb_arrayGetCPtr( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the string pointer on an array element */
extern ULONG hb_arrayGetCLen( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the string length contained on an array element */
extern BOOL hb_arrayGetL( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the logical value contained on an array element */
extern int hb_arrayGetNI( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the int value contained on an array element */
extern long hb_arrayGetNL( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the long numeric value contained on an array element */
extern double hb_arrayGetDouble( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the double value contained on an array element */
extern char * hb_arrayGetDate( PHB_ITEM pArray, ULONG ulIndex, char * szDate ); /* retrieves the date value contained on an array element */
extern double hb_arrayGetND( PHB_ITEM pArray, ULONG ulIndex ); /* retrieves the double value contained on an array element */
extern char * hb_arrayGetDS( PHB_ITEM pArray, ULONG ulIndex, char * szDate ); /* retrieves the date value contained on an array element */
extern WORD hb_arrayGetType( PHB_ITEM pArray, ULONG ulIndex );
extern BOOL hb_arrayFill( PHB_ITEM pArray, PHB_ITEM pValue, ULONG ulStart, ULONG ulCount );
extern ULONG hb_arrayScan( PHB_ITEM pArray, PHB_ITEM pValue, ULONG ulStart, ULONG ulCount );

View File

@@ -46,11 +46,10 @@ EXTERNAL __DYNSGETINDEX
//
EXTERNAL ERRORSYS
EXTERNAL ERRORNEW
EXTERNAL EVAL
EXTERNAL LEN
EXTERNAL EMPTY
EXTERNAL VALTYPE
EXTERNAL ERRORBLOCK
EXTERNAL WORD
EXTERNAL PROCNAME
EXTERNAL PROCLINE
EXTERNAL __QUIT
@@ -81,20 +80,6 @@ EXTERNAL ACLONE
//
//symbols from file: rtl\classes.c
//
EXTERNAL __OBJGETMSGLIST
EXTERNAL __OBJGETMETHODLIST
EXTERNAL __OBJGETVALUELIST
EXTERNAL __OBJSETVALUELIST
EXTERNAL __OBJHASDATA
EXTERNAL __OBJHASMETHOD
EXTERNAL __OBJADDDATA
EXTERNAL __OBJADDINLINE
EXTERNAL __OBJADDMETHOD
EXTERNAL __OBJDELDATA
EXTERNAL __OBJDELINLINE
EXTERNAL __OBJDELMETHOD
EXTERNAL __OBJMODINLINE
EXTERNAL __OBJMODMETHOD
EXTERNAL __CLSADDMSG
EXTERNAL __CLSNEW
EXTERNAL __CLSDELMSG
@@ -120,6 +105,7 @@ EXTERNAL OUTERR
EXTERNAL QQOUT
EXTERNAL QOUT
EXTERNAL SETPOS
EXTERNAL SETPOSBS
EXTERNAL DEVPOS
EXTERNAL DEVOUT
EXTERNAL DISPOUT
@@ -178,6 +164,7 @@ EXTERNAL DIRECTORY
//symbols from file: rtl\do.c
//
EXTERNAL DO
EXTERNAL EVAL
//
//symbols from file: rtl\environ.c
//
@@ -188,6 +175,8 @@ EXTERNAL __RUN
//
//symbols from file: rtl\errorapi.c
//
EXTERNAL ERRORBLOCK
EXTERNAL DOSERROR
EXTERNAL __ERRRT_BASE
//
//symbols from file: rtl\extend.c
@@ -207,6 +196,12 @@ EXTERNAL FSEEK
EXTERNAL FILE
EXTERNAL FREADSTR
EXTERNAL CURDIR
EXTERNAL DIRCHANGE
EXTERNAL MAKEDIR
EXTERNAL DIRREMOVE
EXTERNAL DISKSPACE
EXTERNAL DISKCHANGE
EXTERNAL DISKNAME
EXTERNAL BIN2I
EXTERNAL BIN2L
EXTERNAL BIN2W
@@ -231,6 +226,7 @@ EXTERNAL HARDCR
//
EXTERNAL INKEY
EXTERNAL __KEYBOARD
EXTERNAL __KEYPUT
EXTERNAL NEXTKEY
EXTERNAL LASTKEY
//
@@ -260,6 +256,13 @@ EXTERNAL __MVXRELEASE
EXTERNAL __MVRELEASE
EXTERNAL __MVSCOPE
EXTERNAL __MVCLEAR
EXTERNAL __MVDBGINFO
//
//symbols from file: rtl\mouseapi.c
//
//
//symbols from file: rtl\mousexxx.c
//
//
//symbols from file: rtl\msgxxx.c
//
@@ -270,6 +273,7 @@ EXTERNAL MEMOTRAN
//
//symbols from file: rtl\set.c
//
EXTERNAL SETCANCEL
EXTERNAL __SETCENTURY
EXTERNAL SET
//
@@ -351,6 +355,20 @@ EXTERNAL __MENUTO
//
//symbols from file: rtl\objfunc.prg
//
EXTERNAL __OBJHASDATA
EXTERNAL __OBJHASMETHOD
EXTERNAL __OBJGETMSGLIST
EXTERNAL __OBJGETMETHODLIST
EXTERNAL __OBJGETVALUELIST
EXTERNAL __OBJSETVALUELIST
EXTERNAL __OBJADDMETHOD
EXTERNAL __OBJADDINLINE
EXTERNAL __OBJADDDATA
EXTERNAL __OBJMODMETHOD
EXTERNAL __OBJMODINLINE
EXTERNAL __OBJDELMETHOD
EXTERNAL __OBJDELINLINE
EXTERNAL __OBJDELDATA
//
//symbols from file: rtl\readvar.prg
//
@@ -359,9 +377,9 @@ EXTERNAL READVAR
//symbols from file: rtl\setkey.prg
//
EXTERNAL SETKEY
EXTERNAL SETKEYGET
EXTERNAL SETKEYSAVE
EXTERNAL SETKEYCHECK
EXTERNAL HB_SETKEYGET
EXTERNAL HB_SETKEYSAVE
EXTERNAL HB_SETKEYCHECK
//
//symbols from file: rtl\tbcolumn.prg
//
@@ -397,18 +415,21 @@ EXTERNAL __XRESTSCREEN
//
//symbols from file: rdd\dbcmd.c
//
EXTERNAL DBF
EXTERNAL SDF
EXTERNAL DELIM
EXTERNAL _DBF
EXTERNAL _SDF
EXTERNAL _DELIM
EXTERNAL RDDSYS
EXTERNAL AFIELDS
EXTERNAL ALIAS
EXTERNAL BOF
EXTERNAL DBAPPEND
EXTERNAL DBCLOSEALL
EXTERNAL DBCLOSEAREA
EXTERNAL DBCOMMIT
EXTERNAL DBCOMMITALL
EXTERNAL DBCREATE
EXTERNAL DBDELETE
EXTERNAL DBF
EXTERNAL DBGOBOTTOM
EXTERNAL DBGOTO
EXTERNAL DBGOTOP
@@ -435,13 +456,13 @@ EXTERNAL FLOCK
EXTERNAL FOUND
EXTERNAL HEADER
EXTERNAL LASTREC
EXTERNAL LOCK
EXTERNAL LUPDATE
EXTERNAL NETERR
EXTERNAL RDDLIST
EXTERNAL RDDNAME
EXTERNAL RDDREGISTER
EXTERNAL RDDSETDEFAULT
EXTERNAL RDDSHUTDOWN
EXTERNAL RECCOUNT
EXTERNAL RECNO
EXTERNAL RECSIZE
@@ -451,17 +472,17 @@ EXTERNAL USED
//
//symbols from file: rdd\dbf1.c
//
EXTERNAL _DBF
EXTERNAL _DBFC
EXTERNAL DBF_GETFUNCTABLE
//
//symbols from file: rdd\delim1.c
//
EXTERNAL _DELIM
EXTERNAL _DELIMC
EXTERNAL DELIM_GETFUNCTABLE
//
//symbols from file: rdd\sdf1.c
//
EXTERNAL _SDF
EXTERNAL _SDFC
EXTERNAL SDF_GETFUNCTABLE
//
//symbols from file: rdd\dbf0.prg
@@ -640,6 +661,19 @@ EXTERNAL GT_STRRIGHT
//
EXTERNAL TFILEREAD
//
//symbols from file: tools\nconvert.prg
//
EXTERNAL ISBIN
EXTERNAL ISOCTAL
EXTERNAL ISDEC
EXTERNAL ISHEXA
EXTERNAL DECTOBIN
EXTERNAL DECTOOCTAL
EXTERNAL DECTOHEXA
EXTERNAL BINTODEC
EXTERNAL OCTALTODEC
EXTERNAL HEXATODEC
//
//symbols from file: tools\numtxten.prg
//
EXTERNAL NUMTOTXTEN

View File

@@ -16,6 +16,7 @@ extern void hb_rddSelectWorkAreaNumber( int iArea );
extern void hb_rddSelectWorkAreaSymbol( PHB_SYMB pSymAlias );
extern void hb_rddGetFieldValue( HB_ITEM_PTR pItem, PHB_SYMB pFieldSymbol );
extern void hb_rddPutFieldValue( HB_ITEM_PTR pItem, PHB_SYMB pFieldSymbol );
extern void hb_rddShutDown( void );
/* RDD method return codes */

View File

@@ -57,9 +57,9 @@ typedef struct _AREANODE
typedef AREANODE * LPAREANODE;
extern HARBOUR HB_DBF( void );
extern HARBOUR HB_SDF( void );
extern HARBOUR HB_DELIM( void );
extern HARBOUR HB__DBF( void );
extern HARBOUR HB__SDF( void );
extern HARBOUR HB__DELIM( void );
extern HARBOUR HB_RDDSYS( void );
HARBOUR HB_AFIELDS( void );
@@ -72,6 +72,7 @@ HARBOUR HB_DBCOMMIT( void );
HARBOUR HB_DBCOMMITALL( void );
HARBOUR HB_DBCREATE( void );
HARBOUR HB_DBDELETE( void );
HARBOUR HB_DBF( void );
HARBOUR HB_DBGOBOTTOM( void );
HARBOUR HB_DBGOTO( void );
HARBOUR HB_DBGOTOP( void );
@@ -105,7 +106,6 @@ HARBOUR HB_RDDLIST( void );
HARBOUR HB_RDDNAME( void );
HARBOUR HB_RDDREGISTER( void );
HARBOUR HB_RDDSETDEFAULT( void );
HARBOUR HB_RDDSHUTDOWN( void );
HARBOUR HB_RECCOUNT( void );
HARBOUR HB_RECNO( void );
HARBOUR HB_RECSIZE( void );
@@ -175,10 +175,10 @@ static ERRCODE CreateFields( AREAP pArea, PHB_ITEM pStruct )
for( uiCount = 0; uiCount < pStruct->item.asArray.value->ulLen; uiCount++ )
{
pFieldDesc = pStruct->item.asArray.value->pItems + uiCount;
pFieldInfo.uiType = toupper( hb_arrayGetString( pFieldDesc, 2 )[ 0 ] );
pFieldInfo.atomName = ( BYTE * ) hb_arrayGetString( pFieldDesc, 1 );
pFieldInfo.uiLen = ( USHORT ) hb_arrayGetDouble( pFieldDesc, 3 );
pFieldInfo.uiDec = ( USHORT ) hb_arrayGetDouble( pFieldDesc, 4 );
pFieldInfo.uiType = toupper( hb_arrayGetCPtr( pFieldDesc, 2 )[ 0 ] );
pFieldInfo.atomName = ( BYTE * ) hb_arrayGetCPtr( pFieldDesc, 1 );
pFieldInfo.uiLen = ( USHORT ) hb_arrayGetND( pFieldDesc, 3 );
pFieldInfo.uiDec = ( USHORT ) hb_arrayGetND( pFieldDesc, 4 );
SELF_ADDFIELD( pArea, &pFieldInfo );
}
@@ -325,7 +325,7 @@ static ERRCODE Open( AREAP pArea, LPDBOPENINFO pOpenInfo )
( ( PHB_DYNS ) pArea->atomAlias )->hArea = pOpenInfo->uiArea;
pArea->lpExtendInfo->fExclusive = !pOpenInfo->fShared;
pArea->lpExtendInfo->fReadOnly = pOpenInfo->fReadonly;
return SUCCESS;
}
@@ -465,9 +465,9 @@ static void hb_rddCheck( void )
szDefDriver[ 0 ] = '\0';
/* Force link the built-in RDD's */
HB_DBF();
HB_SDF();
HB_DELIM();
HB__DBF();
HB__SDF();
HB__DELIM();
HB_RDDSYS();
}
}
@@ -565,7 +565,7 @@ static int hb_rddRegister( char * szDriver, USHORT uiType )
static USHORT hb_rddSelect( char * szAlias )
{
PHB_DYNS pSymAlias;
pSymAlias = hb_dynsymFind( szAlias );
if( pSymAlias && pSymAlias->hArea )
return pSymAlias->hArea;
@@ -671,7 +671,7 @@ void hb_rddSelectWorkAreaAlias( char * szName )
PHB_DYNS pSymArea;
char * szAlias;
WORD wLen;
wLen = strlen( szName );
szAlias = ( char * ) hb_xgrab( wLen + 1 );
strcpy( szAlias, szName );
@@ -812,7 +812,7 @@ HARBOUR HB_ALIAS( void )
USHORT uiArea;
LPAREANODE pAreaNode;
char * szAlias;
uiArea = hb_parni( 1 );
uiArea = uiArea ? uiArea : uiCurrArea;
pAreaNode = pWorkAreas;
@@ -836,6 +836,30 @@ HARBOUR HB_ALIAS( void )
hb_retc( "" );
}
HARBOUR HB_DBF( void )
{
LPAREANODE pAreaNode = pWorkAreas;
while( pAreaNode )
{
if( ( ( AREAP ) pAreaNode->pArea )->uiArea == uiCurrArea )
{
if( ( ( AREAP ) pAreaNode->pArea )->atomAlias &&
( ( PHB_DYNS ) ( ( AREAP ) pAreaNode->pArea )->atomAlias )->hArea )
{
char * szAlias = ( char * ) hb_xgrab( HARBOUR_MAX_RDD_ALIAS_LENGTH + 1 );
SELF_ALIAS( ( AREAP ) pAreaNode->pArea, ( BYTE * ) szAlias );
hb_retc( szAlias );
hb_xfree( szAlias );
return;
}
break;
}
pAreaNode = pAreaNode->pNext;
}
hb_retc( "" );
}
HARBOUR HB_BOF( void )
{
BOOL bBof = TRUE;
@@ -938,7 +962,7 @@ HARBOUR HB_DBCREATE( void )
return;
}
if( strlen( hb_arrayGetString( pFieldDesc, 1 ) ) == 0 )
if( strlen( hb_arrayGetCPtr( pFieldDesc, 1 ) ) == 0 )
{
hb_errRT_DBCMD( EG_ARG, 1014, 0, "DBCREATE" );
return;
@@ -1003,7 +1027,7 @@ HARBOUR HB_DBCREATE( void )
SELF_CREATEMEMFILE( ( AREAP ) pTempArea, &pInfo );
hb_itemRelease( pFileExt );
}
SELF_RELEASE( ( AREAP ) pTempArea );
hb_xfree( szFileName );
hb_xfree( pFileName );
@@ -1029,7 +1053,7 @@ HARBOUR HB_DBGOBOTTOM( void )
HARBOUR HB_DBGOTO( void )
{
PHB_ITEM pItem;
if( !pCurrArea )
{
hb_errRT_DBCMD( EG_NOTABLE, 2001, 0, "DBGOTOP" );
@@ -1108,7 +1132,7 @@ HARBOUR HB_DBSELECTAREA( void )
{
szAlias = hb_parc( 1 );
hb_strUpper( szAlias, strlen( szAlias ) );
if( ( uiNewArea = hb_rddSelect( szAlias ) ) == 0 )
{
hb_errRT_BASE( EG_NOALIAS, 1002, 0, szAlias );
@@ -1365,7 +1389,7 @@ HARBOUR HB_DBUSEAREA( void )
pInfo.atomAlias = ( BYTE * ) szAlias;
pInfo.fShared = ISLOG( 5 ) ? hb_parl( 5 ) : !hb_set.HB_SET_EXCLUSIVE;
pInfo.fReadonly = ISLOG( 6 ) ? hb_parl( 6 ) : FALSE;
if( SELF_OPEN( ( AREAP ) pCurrArea->pArea, &pInfo ) == FAILURE )
{
SELF_RELEASE( ( AREAP ) pCurrArea->pArea );
@@ -1434,7 +1458,7 @@ HARBOUR HB_DBUSEAREA( void )
HARBOUR HB_DELETED( void )
{
BOOL bDeleted = FALSE;
if( pCurrArea )
SELF_DELETED( ( AREAP ) pCurrArea->pArea, &bDeleted );
hb_retl( bDeleted );
@@ -1452,7 +1476,7 @@ HARBOUR HB_EOF( void )
HARBOUR HB_FCOUNT( void )
{
USHORT uiFields = 0;
if( pCurrArea )
SELF_FIELDCOUNT( ( AREAP ) pCurrArea->pArea, &uiFields );
hb_retni( uiFields );
@@ -1462,7 +1486,7 @@ HARBOUR HB_FIELDGET( void )
{
PHB_ITEM pItem;
USHORT uiField;
pItem = hb_itemNew( 0 );
uiField = hb_parni( 1 );
@@ -1477,7 +1501,7 @@ HARBOUR HB_FIELDNAME( void )
{
USHORT uiFields, uiIndex;
char * szName;
if( pCurrArea )
{
uiIndex = hb_parni( 1 );
@@ -1502,7 +1526,7 @@ HARBOUR HB_FIELDPOS( void )
USHORT uiCount;
char * szName;
LPFIELD pField;
if( pCurrArea )
{
szName = hb_parc( 1 );
@@ -1527,7 +1551,7 @@ HARBOUR HB_FIELDPUT( void )
{
USHORT uiIndex;
PHB_ITEM pItem;
uiIndex = hb_parni( 1 );
if( pCurrArea && uiIndex )
{
@@ -1698,12 +1722,13 @@ HARBOUR HB_RDDSETDEFAULT( void )
}
}
HARBOUR HB_RDDSHUTDOWN( void )
void hb_rddShutDown( void )
{
LPRDDNODE pRddNode;
hb_rddCloseAll();
hb_xfree( szDefDriver );
if( szDefDriver )
hb_xfree( szDefDriver );
while( pRddList )
{
pRddNode = pRddList;
@@ -1724,7 +1749,7 @@ HARBOUR HB_RECCOUNT( void )
HARBOUR HB_RECNO( void )
{
PHB_ITEM pRecNo;
pRecNo = hb_itemPutNL( NULL, 0 );
if( pCurrArea )
SELF_RECNO( ( AREAP ) pCurrArea->pArea, pRecNo );
@@ -1771,7 +1796,7 @@ HARBOUR HB_RLOCK( void )
HARBOUR HB_SELECT( void )
{
char * szAlias;
szAlias = hb_parc( 1 );
if( strlen( szAlias ) > 0 )
hb_retni( hb_rddSelect( szAlias ) );

View File

@@ -24,11 +24,11 @@
#include "rddsys.ch"
ANNOUNCE DBF
ANNOUNCE _DBF
init procedure DBFInit
REQUEST _DBF
REQUEST _DBFC
rddRegister( "DBF", RDT_FULL )

View File

@@ -84,11 +84,11 @@ typedef struct _DBFMEMO
typedef DBFMEMO * LPDBFMEMO;
HARBOUR HB__DBF( void );
HARBOUR HB__DBFC( void );
HARBOUR HB_DBF_GETFUNCTABLE( void );
HB_INIT_SYMBOLS_BEGIN( dbf1__InitSymbols )
{ "_DBF", FS_PUBLIC, HB__DBF, 0 },
{ "_DBFC", FS_PUBLIC, HB__DBFC, 0 },
{ "DBF_GETFUNCTABLE", FS_PUBLIC, HB_DBF_GETFUNCTABLE, 0 }
HB_INIT_SYMBOLS_END( dbf1__InitSymbols )
#if ! defined(__GNUC__)
@@ -1591,7 +1591,7 @@ static RDDFUNCS dbfTable = { 0, /* Super Bof */
0 /* Super WhoCares */
};
HARBOUR HB__DBF( void )
HARBOUR HB__DBFC( void )
{
}

View File

@@ -24,11 +24,11 @@
#include "rddsys.ch"
ANNOUNCE DELIM
ANNOUNCE _DELIM
init procedure DELIMInit
REQUEST _DELIM
REQUEST _DELIMC
rddRegister( "DELIM", RDT_TRANSFER )

View File

@@ -29,11 +29,11 @@
#include "rddapi.h"
#include "rddsys.ch"
HARBOUR HB__DELIM( void );
HARBOUR HB__DELIMC( void );
HARBOUR HB_DELIM_GETFUNCTABLE( void );
HB_INIT_SYMBOLS_BEGIN( delim1__InitSymbols )
{ "_DELIM", FS_PUBLIC, HB__DELIM, 0 },
{ "_DELIMC", FS_PUBLIC, HB__DELIMC, 0 },
{ "DELIM_GETFUNCTABLE", FS_PUBLIC, HB_DELIM_GETFUNCTABLE, 0 }
HB_INIT_SYMBOLS_END( delim1__InitSymbols )
#if ! defined(__GNUC__)
@@ -48,7 +48,7 @@ static RDDFUNCS delimSuper = { 0 };
static RDDFUNCS delimTable = { 0 };
HARBOUR HB__DELIM( void )
HARBOUR HB__DELIMC( void )
{
}

View File

@@ -34,9 +34,3 @@ init procedure RddInit
return
exit procedure RddExit
rddShutdown()
return

View File

@@ -24,11 +24,11 @@
#include "rddsys.ch"
ANNOUNCE SDF
ANNOUNCE _SDF
init procedure SDFInit
REQUEST _SDF
REQUEST _SDFC
rddRegister( "SDF", RDT_TRANSFER )

View File

@@ -29,11 +29,11 @@
#include "rddapi.h"
#include "rddsys.ch"
HARBOUR HB__SDF( void );
HARBOUR HB__SDFC( void );
HARBOUR HB_SDF_GETFUNCTABLE( void );
HB_INIT_SYMBOLS_BEGIN( sdf1__InitSymbols )
{ "_SDF", FS_PUBLIC, HB__SDF, 0 },
{ "_SDFC", FS_PUBLIC, HB__SDFC, 0 },
{ "SDF_GETFUNCTABLE", FS_PUBLIC, HB_SDF_GETFUNCTABLE, 0 }
HB_INIT_SYMBOLS_END( sdf1__InitSymbols )
#if ! defined(__GNUC__)
@@ -48,7 +48,7 @@ static RDDFUNCS sdfSuper = { 0 };
static RDDFUNCS sdfTable = { 0 };
HARBOUR HB__SDF( void )
HARBOUR HB__SDFC( void )
{
}

View File

@@ -222,40 +222,34 @@ BOOL hb_arrayError( PHB_ITEM pArray, ULONG ulIndex, BOOL bAssign )
BOOL hb_arraySet( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem )
{
if( IS_ARRAY( pArray ) )
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
{
hb_itemCopy( pArray->item.asArray.value->pItems + ( ulIndex - 1 ), pItem );
return TRUE;
}
hb_itemCopy( pArray->item.asArray.value->pItems + ( ulIndex - 1 ), pItem );
return TRUE;
}
return FALSE;
else
return FALSE;
}
BOOL hb_arrayGet( PHB_ITEM pArray, ULONG ulIndex, PHB_ITEM pItem )
{
if( IS_ARRAY( pArray ) )
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
{
hb_itemCopy( pItem, pArray->item.asArray.value->pItems + ( ulIndex - 1 ) );
return TRUE;
}
hb_itemCopy( pItem, pArray->item.asArray.value->pItems + ( ulIndex - 1 ) );
return TRUE;
}
else
{
hb_itemClear( pItem );
return FALSE;
}
hb_itemClear( pItem );
return FALSE;
}
char * hb_arrayGetDate( PHB_ITEM pArray, ULONG ulIndex, char * szDate )
char * hb_arrayGetDS( PHB_ITEM pArray, ULONG ulIndex, char * szDate )
{
if( IS_ARRAY( pArray ) )
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
hb_itemGetDS( pArray->item.asArray.value->pItems + ulIndex - 1, szDate );
hb_itemGetDS( pArray->item.asArray.value->pItems + ulIndex - 1, szDate );
}
else
{
@@ -266,86 +260,76 @@ char * hb_arrayGetDate( PHB_ITEM pArray, ULONG ulIndex, char * szDate )
return szDate;
}
BOOL hb_arrayGetBool( PHB_ITEM pArray, ULONG ulIndex )
BOOL hb_arrayGetL( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetL( pArray->item.asArray.value->pItems + ulIndex - 1 );
}
return FALSE;
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetL( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return FALSE;
}
int hb_arrayGetNI( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetNI( pArray->item.asArray.value->pItems + ulIndex - 1 );
}
return 0;
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetNI( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return 0;
}
long hb_arrayGetNL( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetNL( pArray->item.asArray.value->pItems + ulIndex - 1 );
}
return 0;
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetNL( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return 0;
}
double hb_arrayGetDouble( PHB_ITEM pArray, ULONG ulIndex )
double hb_arrayGetND( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetND( pArray->item.asArray.value->pItems + ulIndex - 1 );
}
return 0;
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetND( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return 0;
}
char * hb_arrayGetString( PHB_ITEM pArray, ULONG ulIndex )
ULONG hb_arrayCopyC( PHB_ITEM pArray, ULONG ulIndex, char * szBuffer, ULONG ulLen )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
{
PHB_ITEM pItem = pArray->item.asArray.value->pItems + ulIndex - 1;
if( IS_STRING( pItem ) )
return pItem->item.asString.value;
}
}
return "";
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemCopyC( pArray->item.asArray.value->pItems + ulIndex - 1, szBuffer, ulLen );
else
return 0;
}
ULONG hb_arrayGetStringLen( PHB_ITEM pArray, ULONG ulIndex )
char * hb_arrayGetC( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetCLen( pArray->item.asArray.value->pItems + ulIndex - 1 );
}
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetC( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return NULL;
}
return 0;
char * hb_arrayGetCPtr( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetCPtr( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return "";
}
ULONG hb_arrayGetCLen( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemGetCLen( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return 0;
}
WORD hb_arrayGetType( PHB_ITEM pArray, ULONG ulIndex )
{
if( IS_ARRAY( pArray ) )
{
if( ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemType( pArray->item.asArray.value->pItems + ulIndex - 1 );
}
return 0;
if( IS_ARRAY( pArray ) && ulIndex > 0 && ulIndex <= pArray->item.asArray.value->ulLen )
return hb_itemType( pArray->item.asArray.value->pItems + ulIndex - 1 );
else
return 0;
}
BOOL hb_arrayLast( PHB_ITEM pArray, PHB_ITEM pResult )

View File

@@ -97,7 +97,7 @@ char * hb_parc( int iParam, ... )
ulArrayIndex = va_arg( va, ULONG );
va_end( va );
return hb_arrayGetString( pItem, ulArrayIndex );
return hb_arrayGetCPtr( pItem, ulArrayIndex );
}
}
@@ -130,7 +130,7 @@ ULONG hb_parclen( int iParam, ... )
ulArrayIndex = va_arg( va, ULONG );
va_end( va );
return hb_arrayGetStringLen( pItem, ulArrayIndex );
return hb_arrayGetCLen( pItem, ulArrayIndex );
}
}
@@ -166,7 +166,7 @@ ULONG hb_parcsiz( int iParam, ... )
ulArrayIndex = va_arg( va, ULONG );
va_end( va );
return hb_arrayGetStringLen( pItem, ulArrayIndex ) + 1;
return hb_arrayGetCLen( pItem, ulArrayIndex ) + 1;
}
}
@@ -206,7 +206,7 @@ char * hb_pards( int iParam, ... )
ulArrayIndex = va_arg( va, ULONG );
va_end( va );
hb_arrayGetDate( pItem, ulArrayIndex, stack.szDate );
hb_arrayGetDS( pItem, ulArrayIndex, stack.szDate );
return stack.szDate; /* this guaranties good behavior when multithreading */
}
@@ -250,7 +250,7 @@ int hb_parl( int iParam, ... )
ulArrayIndex = va_arg( va, ULONG );
va_end( va );
return hb_arrayGetBool( pItem, ulArrayIndex ) ? 1 : 0;
return hb_arrayGetL( pItem, ulArrayIndex ) ? 1 : 0;
}
}
@@ -289,7 +289,7 @@ double hb_parnd( int iParam, ... )
ulArrayIndex = va_arg( va, ULONG );
va_end( va );
return hb_arrayGetDouble( pItem, ulArrayIndex );
return hb_arrayGetND( pItem, ulArrayIndex );
}
}

View File

@@ -90,7 +90,7 @@ PHB_ITEM hb_evalLaunch( PEVALINFO pEvalInfo )
if( IS_STRING( pEvalInfo->pItems[ 0 ] ) )
{
hb_vmPushSymbol( hb_dynsymGet( hb_itemGetC( pEvalInfo->pItems[ 0 ] ) )->pSymbol );
hb_vmPushSymbol( hb_dynsymGet( hb_itemGetCPtr( pEvalInfo->pItems[ 0 ] ) )->pSymbol );
hb_vmPushNil();
while( w <= pEvalInfo->paramCount )
hb_vmPush( pEvalInfo->pItems[ w++ ] );
@@ -367,7 +367,7 @@ char * hb_itemGetCPtr( PHB_ITEM pItem )
if( pItem && IS_STRING( pItem ) )
return pItem->item.asString.value;
else
return NULL;
return "";
}
ULONG hb_itemGetCLen( PHB_ITEM pItem )

View File

@@ -128,24 +128,25 @@ return bReturn
/* $DOC$
* $FUNCNAME$
* SetKeyGet
* HB_SetKeyGet
* $CATEGORY$
* ?
* $ONELINER$
* Determine a set-key code block & condition-block
* $SYNTAX$
* SETKEYGET( <nKey> [, <bConditionByRef> ] )
* HB_SETKEYGET( <nKey> [, <bConditionByRef> ] )
* $ARGUMENTS$
* <anKey> is an numeric key value
* <bConditionByRef> is an optional return-parameter
* $RETURNS$
* Current assigned action-block
* $DESCRIPTION$
* The SetKeyGet() function returns the current code-block assigned to a
* key, and optionally assignes the condition-block to the return-parameter
* The HB_SetKeyGet() function returns the current code-block assigned to
* a key, and optionally assignes the condition-block to the
* return-parameter
* $EXAMPLES$
* local bOldF10, bOldF10Cond
* bOldF10 := SetKeyGet( K_F10, @bOldF10Cond )
* bOldF10 := HB_SetKeyGet( K_F10, @bOldF10Cond )
* ... // some other processing
* SetKey( K_F10, bOldF10, bOldF10Cond )
* $TESTS$
@@ -153,12 +154,12 @@ return bReturn
* $STATUS$
* C
* $COMPLIANCE$
* SETKEYGET() is a new function and hence not CA-Clipper compliant.
* HB_SETKEYGET() is a new function and hence not CA-Clipper compliant.
* $SEEALSO$
* SETKEY(), SETKEYSAVE(), SETKEYCHECK()
* SETKEY(), HB_SETKEYSAVE(), HB_SETKEYCHECK()
* $END$
*/
Function SetKeyGet( nKey, bCondition )
Function HB_SetKeyGet( nKey, bCondition )
local nFound
if valType( nKey ) = "N" .and. nKey <> 0
@@ -178,40 +179,40 @@ return NIL //bReturn
/* $DOC$
* $FUNCNAME$
* SetKeySave
* HB_SetKeySave
* $CATEGORY$
* ?
* $ONELINER$
* Returns a copy of internal set-key list, optionally overwriting
* $SYNTAX$
* SETKEYSAVE( [ <OldKeys> ] )
* HB_SETKEYSAVE( [ <OldKeys> ] )
* $ARGUMENTS$
* <OldKeys> is an optional set-key list from a previous call to
* SetKeySave(), or NIL to clear current set-key list
* HB_SetKeySave(), or NIL to clear current set-key list
* $RETURNS$
* Current set-key list
* $DESCRIPTION$
* SetKeySave() is designed to act like the set() function which returns
* the current state of an environment setting, and optionally assigning
* a new value. In this case, the "environment setting" is the internal
* set-key list, and the optional new value is either a value returned
* from a previous call to SetKeySave() - to restore that list, or the
* value of NIL to clear the current list.
* HB_SetKeySave() is designed to act like the set() function which
* returns the current state of an environment setting, and optionally
* assigning a new value. In this case, the "environment setting" is the
* internal set-key list, and the optional new value is either a value
* returned from a previous call to SetKeySave() - to restore that list,
* or the value of NIL to clear the current list.
* $EXAMPLES$
* local aKeys := SetKeySave( NIL ) // removes all current set=keys
* local aKeys := HB_SetKeySave( NIL ) // removes all current set=keys
* ... // some other processing
* SetKeySave( aKeys )
* HB_SetKeySave( aKeys )
* $TESTS$
* None definable
* $STATUS$
* C
* $COMPLIANCE$
* SETKEYSAVE() is new.
* HB_SETKEYSAVE() is new.
* $SEEALSO$
* SETKEY()
* $END$
*/
Function SetKeySave( OldKeys )
Function HB_SetKeySave( OldKeys )
local aReturn := aClone( aSetKeys )
if pcount() != 0 .or. valtype( OldKeys ) = "A"
@@ -230,13 +231,13 @@ return aReturn
/* $DOC$
* $FUNCNAME$
* SetKeyCheck
* HB_SetKeyCheck
* $CATEGORY$
* ?
* $ONELINER$
* Impliments common hot-key activation code
* $SYNTAX$
* SetKeyCheck( <nKey> [, <p1> ][, <p2> ][, <p3> ] )
* HB_SetKeyCheck( <nKey> [, <p1> ][, <p2> ][, <p3> ] )
* $ARGUMENTS$
* <nKey> is a numeric key value to be tested
* code-block, if executed
@@ -247,20 +248,20 @@ return aReturn
* If there is a hot-key association (before checking any condition):
* - if there is a condition-block, it is passed one parameter - <nKey>
* - when the hot-key code-block is called, it is passed 1 to 4 parameters,
* depending on the parameters passed to SetKeyCheck(). Any parameters
* so passed are directly passed to the code-block, with an additional
* parameter being <nKey>
* depending on the parameters passed to HB_SetKeyCheck(). Any
* parameters so passed are directly passed to the code-block, with an
* additional parameter being <nKey>
* $DESCRIPTION$
* SetKeyCheck() is intended as a common interface to the SetKey()
* HB_SetKeyCheck() is intended as a common interface to the SetKey()
* functionality for such functions as ACHOICE(), DBEDIT(), MEMOEDIT(),
* ACCEPT, INPUT, READ, and WAIT
* $EXAMPLES$
* // within ReadModal()
* if SetKeyCheck( K_ALT_X, GetActive() )
* if HB_SetKeyCheck( K_ALT_X, GetActive() )
* ... // some other processing
* endif
* // within TBrowse handler
* case SetKeyCheck( nInkey, oTBrowse )
* case HB_SetKeyCheck( nInkey, oTBrowse )
* return
* case nInKey == K_ESC
* ... // some other processing
@@ -269,12 +270,12 @@ return aReturn
* $STATUS$
* C
* $COMPLIANCE$
* SetKeyCheck() is new.
* HB_SetKeyCheck() is new.
* $SEEALSO$
* SETKEY(), SETKEYSAVE()
* SETKEY(), HB_SETKEYSAVE()
* $END$
*/
Function SetKeyCheck( nKey, p1, p2, p3 )
Function HB_SetKeyCheck( nKey, p1, p2, p3 )
local nFound, aKey, bBlock
if ( nFound := aScan( aSetKeys, {|x| x[ KEY ] = nKey } ) ) > 0
@@ -299,4 +300,4 @@ Function SetKeyCheck( nKey, p1, p2, p3 )
endif
return .f.
return .f.

View File

@@ -1,4 +1,4 @@
/*
/*
* $Id$
*/
@@ -46,11 +46,10 @@ EXTERNAL __DYNSGETINDEX
//
EXTERNAL ERRORSYS
EXTERNAL ERRORNEW
EXTERNAL EVAL
EXTERNAL LEN
EXTERNAL EMPTY
EXTERNAL VALTYPE
EXTERNAL ERRORBLOCK
EXTERNAL WORD
EXTERNAL PROCNAME
EXTERNAL PROCLINE
EXTERNAL __QUIT
@@ -81,20 +80,6 @@ EXTERNAL ACLONE
//
//symbols from file: rtl\classes.c
//
EXTERNAL __OBJGETMSGLIST
EXTERNAL __OBJGETMETHODLIST
EXTERNAL __OBJGETVALUELIST
EXTERNAL __OBJSETVALUELIST
EXTERNAL __OBJHASDATA
EXTERNAL __OBJHASMETHOD
EXTERNAL __OBJADDDATA
EXTERNAL __OBJADDINLINE
EXTERNAL __OBJADDMETHOD
EXTERNAL __OBJDELDATA
EXTERNAL __OBJDELINLINE
EXTERNAL __OBJDELMETHOD
EXTERNAL __OBJMODINLINE
EXTERNAL __OBJMODMETHOD
EXTERNAL __CLSADDMSG
EXTERNAL __CLSNEW
EXTERNAL __CLSDELMSG
@@ -120,6 +105,7 @@ EXTERNAL OUTERR
EXTERNAL QQOUT
EXTERNAL QOUT
EXTERNAL SETPOS
EXTERNAL SETPOSBS
EXTERNAL DEVPOS
EXTERNAL DEVOUT
EXTERNAL DISPOUT
@@ -178,6 +164,7 @@ EXTERNAL DIRECTORY
//symbols from file: rtl\do.c
//
EXTERNAL DO
EXTERNAL EVAL
//
//symbols from file: rtl\environ.c
//
@@ -188,6 +175,8 @@ EXTERNAL __RUN
//
//symbols from file: rtl\errorapi.c
//
EXTERNAL ERRORBLOCK
EXTERNAL DOSERROR
EXTERNAL __ERRRT_BASE
//
//symbols from file: rtl\extend.c
@@ -207,6 +196,12 @@ EXTERNAL FSEEK
EXTERNAL FILE
EXTERNAL FREADSTR
EXTERNAL CURDIR
EXTERNAL DIRCHANGE
EXTERNAL MAKEDIR
EXTERNAL DIRREMOVE
EXTERNAL DISKSPACE
EXTERNAL DISKCHANGE
EXTERNAL DISKNAME
EXTERNAL BIN2I
EXTERNAL BIN2L
EXTERNAL BIN2W
@@ -231,6 +226,7 @@ EXTERNAL HARDCR
//
EXTERNAL INKEY
EXTERNAL __KEYBOARD
EXTERNAL __KEYPUT
EXTERNAL NEXTKEY
EXTERNAL LASTKEY
//
@@ -260,6 +256,13 @@ EXTERNAL __MVXRELEASE
EXTERNAL __MVRELEASE
EXTERNAL __MVSCOPE
EXTERNAL __MVCLEAR
EXTERNAL __MVDBGINFO
//
//symbols from file: rtl\mouseapi.c
//
//
//symbols from file: rtl\mousexxx.c
//
//
//symbols from file: rtl\msgxxx.c
//
@@ -270,6 +273,7 @@ EXTERNAL MEMOTRAN
//
//symbols from file: rtl\set.c
//
EXTERNAL SETCANCEL
EXTERNAL __SETCENTURY
EXTERNAL SET
//
@@ -351,6 +355,20 @@ EXTERNAL __MENUTO
//
//symbols from file: rtl\objfunc.prg
//
EXTERNAL __OBJHASDATA
EXTERNAL __OBJHASMETHOD
EXTERNAL __OBJGETMSGLIST
EXTERNAL __OBJGETMETHODLIST
EXTERNAL __OBJGETVALUELIST
EXTERNAL __OBJSETVALUELIST
EXTERNAL __OBJADDMETHOD
EXTERNAL __OBJADDINLINE
EXTERNAL __OBJADDDATA
EXTERNAL __OBJMODMETHOD
EXTERNAL __OBJMODINLINE
EXTERNAL __OBJDELMETHOD
EXTERNAL __OBJDELINLINE
EXTERNAL __OBJDELDATA
//
//symbols from file: rtl\readvar.prg
//
@@ -359,9 +377,9 @@ EXTERNAL READVAR
//symbols from file: rtl\setkey.prg
//
EXTERNAL SETKEY
EXTERNAL SETKEYGET
EXTERNAL SETKEYSAVE
EXTERNAL SETKEYCHECK
EXTERNAL HB_SETKEYGET
EXTERNAL HB_SETKEYSAVE
EXTERNAL HB_SETKEYCHECK
//
//symbols from file: rtl\tbcolumn.prg
//
@@ -397,18 +415,21 @@ EXTERNAL __XRESTSCREEN
//
//symbols from file: rdd\dbcmd.c
//
EXTERNAL DBF
EXTERNAL SDF
EXTERNAL DELIM
EXTERNAL _DBF
EXTERNAL _SDF
EXTERNAL _DELIM
EXTERNAL RDDSYS
EXTERNAL AFIELDS
EXTERNAL ALIAS
EXTERNAL BOF
EXTERNAL DBAPPEND
EXTERNAL DBCLOSEALL
EXTERNAL DBCLOSEAREA
EXTERNAL DBCOMMIT
EXTERNAL DBCOMMITALL
EXTERNAL DBCREATE
EXTERNAL DBDELETE
EXTERNAL DBF
EXTERNAL DBGOBOTTOM
EXTERNAL DBGOTO
EXTERNAL DBGOTOP
@@ -435,13 +456,13 @@ EXTERNAL FLOCK
EXTERNAL FOUND
EXTERNAL HEADER
EXTERNAL LASTREC
EXTERNAL LOCK
EXTERNAL LUPDATE
EXTERNAL NETERR
EXTERNAL RDDLIST
EXTERNAL RDDNAME
EXTERNAL RDDREGISTER
EXTERNAL RDDSETDEFAULT
EXTERNAL RDDSHUTDOWN
EXTERNAL RECCOUNT
EXTERNAL RECNO
EXTERNAL RECSIZE
@@ -451,17 +472,17 @@ EXTERNAL USED
//
//symbols from file: rdd\dbf1.c
//
EXTERNAL _DBF
EXTERNAL _DBFC
EXTERNAL DBF_GETFUNCTABLE
//
//symbols from file: rdd\delim1.c
//
EXTERNAL _DELIM
EXTERNAL _DELIMC
EXTERNAL DELIM_GETFUNCTABLE
//
//symbols from file: rdd\sdf1.c
//
EXTERNAL _SDF
EXTERNAL _SDFC
EXTERNAL SDF_GETFUNCTABLE
//
//symbols from file: rdd\dbf0.prg
@@ -640,6 +661,19 @@ EXTERNAL GT_STRRIGHT
//
EXTERNAL TFILEREAD
//
//symbols from file: tools\nconvert.prg
//
EXTERNAL ISBIN
EXTERNAL ISOCTAL
EXTERNAL ISDEC
EXTERNAL ISHEXA
EXTERNAL DECTOBIN
EXTERNAL DECTOOCTAL
EXTERNAL DECTOHEXA
EXTERNAL BINTODEC
EXTERNAL OCTALTODEC
EXTERNAL HEXATODEC
//
//symbols from file: tools\numtxten.prg
//
EXTERNAL NUMTOTXTEN

View File

@@ -185,6 +185,7 @@ void hb_vmQuit( void )
hb_itemClear( &stack.Return );
hb_arrayRelease( &aStatics );
hb_rddShutDown();
hb_errExit();
hb_clsReleaseAll();
hb_vmReleaseLocalSymbols(); /* releases the local modules linked list */