2006-05-19 21:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/bin/hb-func.sh
* added support -go[0-3] and other -g* switches to xhb* scripts
* harbour/include/hbapi.h
+ added ISSYMBOL() macro
* formatting
* harbour/include/hbapirdd.h
* changed definition of SUPERTABLE for optional dynamic overloading
this modification will not effect existing code
* harbour/include/hbrddfpt.h
* harbour/source/rdd/dbffpt/dbffpt1.c
* added support for NIL value in SIX3 FPT files
* harbour/include/hbcomp.h
* harbour/source/compiler/harbour.c
* harbour/source/compiler/genc.c
* harbour/source/compiler/gencli.c
* harbour/source/compiler/genhrb.c
* harbour/source/compiler/genjava.c
! message symbols are not function symbols - cleaned the HB_FS_MESSAGE
usage and fix the problem with registering static function in global
symbol table
* harbour/source/compiler/gencc.c
! fixed typo in compilation for platforms 64 bit LONG
* harbour/include/hbvmpub.h
* harbour/source/compiler/cmdcheck.c
* harbour/source/vm/asort.c
* harbour/source/vm/evalhb.c
* formatting
* harbour/source/rdd/dbcmd.c
* formatting and some minor clean-up
* harbour/source/rdd/workarea.c
* added default SYSNAME method
! fixed possible memory leak when APPEND failed in TRANSREC method
* harbour/source/rdd/hsx/hsx.c
! fixed using HS_ADD()/HS_REPLACE() without STRING/BLOCK expression
* harbour/source/rtl/cdpapi.c
* cleaned GCC4 warning
* harbour/source/rtl/do.c
* changed to keep parameter references in DO() function. Now it works
like IIF()/EVAL()
* harbour/source/vm/classes.c
* removed some definitions repared from hbapi.h
+ added support to passing function references as HB_IT_SYMBOL
* harbour/source/vm/dynlibhb.c
! fixed GPF in HB_LIBDO called with wrong parameter
* harbour/source/vm/hvm.c
! fixed hb_rddGetFieldValue() to not operate on unallocated stack area
it could cause unpredictable results when RDD had to access HVM, f.e.
for evaluation some pending relations. The whole code should be
carefully checked and to not operate on hb_stackTopItem() if other
functions are called to make the HVM fully reentrant.
+ added commented out support for passing HB_IT_SYMBOL as function
pointer
* formatting
* harbour/source/vm/itemapi.c
* return "S" for HB_IT_SYMBOL by hb_itemType()
* formatting
This commit is contained in:
@@ -8,6 +8,79 @@
|
||||
2002-12-01 13:30 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
|
||||
2006-05-23 14:21 UTC+0300 Chen Kedem <niki@actcom.co.il>
|
||||
* doc/whatsnew.txt
|
||||
+ Add information about the upcoming alpha build 46.
|
||||
|
||||
* doc/en/compiler.txt
|
||||
+ Add a line for -gc3 switch.
|
||||
|
||||
* source/compiler/hbusage.c
|
||||
+ Add a line for -gc3 switch.
|
||||
* Bumped the copyright year from 2005 to 2006.
|
||||
|
||||
2006-05-19 21:05 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/bin/hb-func.sh
|
||||
* added support -go[0-3] and other -g* switches to xhb* scripts
|
||||
|
||||
* harbour/include/hbapi.h
|
||||
+ added ISSYMBOL() macro
|
||||
* formatting
|
||||
|
||||
* harbour/include/hbapirdd.h
|
||||
* changed definition of SUPERTABLE for optional dynamic overloading
|
||||
this modification will not effect existing code
|
||||
|
||||
* harbour/include/hbrddfpt.h
|
||||
* harbour/source/rdd/dbffpt/dbffpt1.c
|
||||
* added support for NIL value in SIX3 FPT files
|
||||
|
||||
* harbour/include/hbcomp.h
|
||||
* harbour/source/compiler/harbour.c
|
||||
* harbour/source/compiler/genc.c
|
||||
* harbour/source/compiler/gencli.c
|
||||
* harbour/source/compiler/genhrb.c
|
||||
* harbour/source/compiler/genjava.c
|
||||
! message symbols are not function symbols - cleaned the HB_FS_MESSAGE
|
||||
usage and fix the problem with registering static function in global
|
||||
symbol table
|
||||
|
||||
* harbour/source/compiler/gencc.c
|
||||
! fixed typo in compilation for platforms 64 bit LONG
|
||||
|
||||
* harbour/include/hbvmpub.h
|
||||
* harbour/source/compiler/cmdcheck.c
|
||||
* harbour/source/vm/asort.c
|
||||
* harbour/source/vm/evalhb.c
|
||||
* formatting
|
||||
|
||||
* harbour/source/rdd/dbcmd.c
|
||||
* formatting and some minor clean-up
|
||||
|
||||
* harbour/source/rdd/workarea.c
|
||||
* added default SYSNAME method
|
||||
! fixed possible memory leak when APPEND failed in TRANSREC method
|
||||
|
||||
* harbour/source/rdd/hsx/hsx.c
|
||||
! fixed using HS_ADD()/HS_REPLACE() without STRING/BLOCK expression
|
||||
|
||||
* harbour/source/rtl/cdpapi.c
|
||||
* cleaned GCC4 warning
|
||||
|
||||
* harbour/source/rtl/do.c
|
||||
* changed to keep parameter references in DO() function. Now it works
|
||||
like IIF()/EVAL()
|
||||
|
||||
* harbour/source/vm/classes.c
|
||||
* removed some definitions repared from hbapi.h
|
||||
+ added support to passing function references as HB_IT_SYMBOL
|
||||
|
||||
* harbour/source/vm/dynlibhb.c
|
||||
! fixed GPF in HB_LIBDO called with wrong parameter
|
||||
|
||||
* harbour/source/vm/hvm.c
|
||||
! fixed hb_rddGetFieldValue() to not operate on unallocated stack area
|
||||
2006-05-14 09:36 UTC+0200 Chen Kedem <niki@actcom.co.il>
|
||||
for evaluation some pending relations. The whole code should be
|
||||
carefully checked and to not operate on hb_stackTopItem() if other
|
||||
|
||||
@@ -253,8 +253,9 @@ while [ \$n -lt \${#P[@]} ]; do
|
||||
-l[^-]*) HB_USRLIBS="\${HB_USRLIBS} \${v}" ;;
|
||||
-L[^-]*) HB_USRLPATH="\${HB_USRLPATH} \${v}" ;;
|
||||
-main=*) HB_MAIN_FUNC="\${v#*=}" ;;
|
||||
-gc|-gc[0-9]) HB_GEN="C"; p="\${v}" ;;
|
||||
-gh) HB_GEN="H"; p="\${v}" ;;
|
||||
-g[cohwij]) HB_GEN="\${v#-g}"; p="\${v}" ;;
|
||||
-gc[0-9]) HB_GEN="c"; p="\${v}" ;;
|
||||
-go[0-9]) HB_GEN="o"; p="\${v}" ;;
|
||||
-*) p="\${v}" ;;
|
||||
*) [ -z \${FILEOUT} ] && FILEOUT="\${v##*/}"; p="\${v}" ;;
|
||||
esac
|
||||
@@ -413,10 +414,10 @@ hb_cc()
|
||||
hb_cmp()
|
||||
{
|
||||
${hb_cmpname} "\$@" \${HB_OPT} \${HB_PATHS} && \\
|
||||
( [ "\${HB_GEN}" = "H" ] || \\
|
||||
( [ "\${HB_GEN//c/}" != "" ] || \\
|
||||
( [ -f "\${FOUTC}" ] && \\
|
||||
hb_cc -c "\${FOUTC}" -o "\${FOUTO}" && \\
|
||||
( [ "\${HB_GEN}" = "C" ] || rm -f "\${FOUTC}" ) ) )
|
||||
( [ "\${HB_GEN}" = "c" ] || rm -f "\${FOUTC}" ) ) )
|
||||
}
|
||||
|
||||
hb_link()
|
||||
|
||||
@@ -211,6 +211,7 @@ HB_EXTERN_BEGIN
|
||||
#define ISOBJECT( n ) ( hb_extIsObject( n ) )
|
||||
#define ISBLOCK( n ) ( hb_param( n, HB_IT_BLOCK ) != NULL ) /* Not available in CA-Cl*pper. */
|
||||
#define ISPOINTER( n ) ( hb_param( n, HB_IT_POINTER ) != NULL ) /* Not available in CA-Cl*pper. */
|
||||
#define ISSYMBOL( n ) ( hb_param( n, HB_IT_SYMBOL ) != NULL ) /* Not available in CA-Cl*pper. */
|
||||
|
||||
|
||||
#ifdef _HB_API_INTERNAL_
|
||||
@@ -336,7 +337,7 @@ typedef struct _HB_BASEARRAY
|
||||
PHB_ITEM pItems; /* pointer to the array items */
|
||||
ULONG ulLen; /* number of items in the array */
|
||||
HB_COUNTER ulHolders; /* number of holders of this array */
|
||||
USHORT * puiClsTree; /* remember array of super called ID Tree */
|
||||
USHORT * puiClsTree; /* remember array of super called ID Tree */
|
||||
USHORT uiClass; /* offset to the classes base if it is an object */
|
||||
USHORT uiPrevCls; /* for fixing after access super */
|
||||
} HB_BASEARRAY, * PHB_BASEARRAY, * HB_BASEARRAY_PTR;
|
||||
@@ -617,6 +618,11 @@ extern BOOL hb_objHasMsg( PHB_ITEM pObject, char * szString ); /* returns TR
|
||||
extern void hb_objSendMsg( PHB_ITEM pObj, char *sMsg, ULONG ulArg, ... );
|
||||
extern USHORT hb_objGetClass( PHB_ITEM pItem );
|
||||
|
||||
/* profiler for object management */
|
||||
extern void * hb_mthRequested( void ); /* profiler from classes.c */
|
||||
extern void hb_mthAddTime( void *, ULONG ); /* profiler from classes.c */
|
||||
|
||||
|
||||
/* dynamic symbol table management */
|
||||
extern HB_EXPORT PHB_DYNS hb_dynsymGet( char * szName ); /* finds and creates a dynamic symbol if not found */
|
||||
extern HB_EXPORT PHB_DYNS hb_dynsymGetCase( char * szName ); /* finds and creates a dynamic symbol if not found - case sensitive */
|
||||
@@ -634,6 +640,9 @@ extern HB_EXPORT HB_HANDLE hb_dynsymMemvarHandle( PHB_DYNS pDynSym ); /* return
|
||||
extern HB_EXPORT HB_HANDLE hb_dynsymAreaHandle( PHB_DYNS pDynSym ); /* return work area number bound with given dynamic symbol */
|
||||
extern HB_EXPORT void hb_dynsymSetAreaHandle( PHB_DYNS pDynSym, int iArea ); /* set work area number for a given dynamic symbol */
|
||||
|
||||
/* Symbol management */
|
||||
extern PHB_SYMB hb_symbolNew( char * szName ); /* create a new symbol */
|
||||
|
||||
/* Command line and environment argument management */
|
||||
extern HB_EXPORT void hb_cmdargInit( int argc, char * argv[] ); /* initialize command line argument API's */
|
||||
extern int hb_cmdargARGC( void ); /* retrieve command line argument count */
|
||||
@@ -648,37 +657,34 @@ extern HB_EXPORT void hb_winmainArgInit( HANDLE hInstance, HANDLE hPrevInstance,
|
||||
extern HB_EXPORT BOOL hb_winmainArgGet( HANDLE * phInstance, HANDLE * phPrevInstance, int * piCmdShow ); /* Retrieve WinMain() parameters */
|
||||
#endif
|
||||
|
||||
/* Symbol management */
|
||||
extern PHB_SYMB hb_symbolNew( char * szName ); /* create a new symbol */
|
||||
|
||||
/* Codeblock management */
|
||||
extern HB_EXPORT void * hb_codeblockId( PHB_ITEM pItem ); /* retrieves the codeblock unique ID */
|
||||
extern HB_EXPORT void * hb_codeblockId( PHB_ITEM pItem ); /* retrieves the codeblock unique ID */
|
||||
extern HB_CODEBLOCK_PTR hb_codeblockNew( const BYTE * pBuffer, USHORT uiLocals, const BYTE * pLocalPosTable, PHB_SYMB pSymbols ); /* create a code-block */
|
||||
extern HB_CODEBLOCK_PTR hb_codeblockMacroNew( BYTE * pBuffer, USHORT usLen );
|
||||
extern void hb_codeblockDelete( HB_ITEM_PTR pItem ); /* delete a codeblock */
|
||||
extern PHB_ITEM hb_codeblockGetVar( PHB_ITEM pItem, LONG iItemPos ); /* get local variable referenced in a codeblock */
|
||||
extern PHB_ITEM hb_codeblockGetRef( HB_CODEBLOCK_PTR pCBlock, PHB_ITEM pRefer ); /* get local variable passed by reference */
|
||||
extern void hb_codeblockEvaluate( HB_ITEM_PTR pItem ); /* evaluate a codeblock */
|
||||
extern void hb_codeblockDelete( HB_ITEM_PTR pItem ); /* delete a codeblock */
|
||||
extern PHB_ITEM hb_codeblockGetVar( PHB_ITEM pItem, LONG iItemPos ); /* get local variable referenced in a codeblock */
|
||||
extern PHB_ITEM hb_codeblockGetRef( HB_CODEBLOCK_PTR pCBlock, PHB_ITEM pRefer ); /* get local variable passed by reference */
|
||||
extern void hb_codeblockEvaluate( HB_ITEM_PTR pItem ); /* evaluate a codeblock */
|
||||
|
||||
/* memvars subsystem */
|
||||
extern HB_HANDLE hb_memvarValueNew( HB_ITEM_PTR pSource, BOOL bTrueMemvar ); /* create a new global value */
|
||||
extern void hb_memvarsInit( void ); /* initialize the memvar API system */
|
||||
extern void hb_memvarsRelease( void ); /* clear all PUBLIC and PRIVATE variables */
|
||||
extern void hb_memvarsFree( void ); /* release the memvar API system */
|
||||
extern void hb_memvarValueIncRef( HB_HANDLE hValue ); /* increase the reference count of a global value */
|
||||
extern void hb_memvarValueDecRef( HB_HANDLE hValue ); /* decrease the reference count of a global value */
|
||||
extern void hb_memvarValueDecGarbageRef( HB_HANDLE hValue ); /* decrease the reference count of a detached local variable */
|
||||
extern void hb_memvarSetValue( PHB_SYMB pMemvarSymb, HB_ITEM_PTR pItem ); /* copy an item into a symbol */
|
||||
extern ERRCODE hb_memvarGet( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb ); /* copy an symbol value into an item */
|
||||
extern void hb_memvarGetValue( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb ); /* copy an symbol value into an item, with error trapping */
|
||||
extern void hb_memvarGetRefer( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb ); /* copy a reference to a symbol value into an item, with error trapping */
|
||||
extern ULONG hb_memvarGetPrivatesBase( void ); /* retrieve current PRIVATE variables stack base */
|
||||
extern void hb_memvarSetPrivatesBase( ULONG ulBase ); /* release PRIVATE variables created after specified base */
|
||||
extern void hb_memvarNewParameter( PHB_SYMB pSymbol, PHB_ITEM pValue );
|
||||
extern char * hb_memvarGetStrValuePtr( char * szVarName, ULONG *pulLen );
|
||||
extern void hb_memvarCreateFromItem( PHB_ITEM pMemvar, BYTE bScope, PHB_ITEM pValue );
|
||||
extern int hb_memvarScope( char * szVarName, ULONG ulLength ); /* retrieve scope of a dynamic variable symbol */
|
||||
extern HB_ITEM_PTR hb_memvarDetachLocal( HB_ITEM_PTR pLocal ); /* Detach a local variable from the eval stack */
|
||||
extern HB_HANDLE hb_memvarValueNew( HB_ITEM_PTR pSource, BOOL bTrueMemvar ); /* create a new global value */
|
||||
extern void hb_memvarsInit( void ); /* initialize the memvar API system */
|
||||
extern void hb_memvarsRelease( void ); /* clear all PUBLIC and PRIVATE variables */
|
||||
extern void hb_memvarsFree( void ); /* release the memvar API system */
|
||||
extern void hb_memvarValueIncRef( HB_HANDLE hValue ); /* increase the reference count of a global value */
|
||||
extern void hb_memvarValueDecRef( HB_HANDLE hValue ); /* decrease the reference count of a global value */
|
||||
extern void hb_memvarValueDecGarbageRef( HB_HANDLE hValue ); /* decrease the reference count of a detached local variable */
|
||||
extern void hb_memvarSetValue( PHB_SYMB pMemvarSymb, HB_ITEM_PTR pItem ); /* copy an item into a symbol */
|
||||
extern ERRCODE hb_memvarGet( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb ); /* copy an symbol value into an item */
|
||||
extern void hb_memvarGetValue( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb ); /* copy an symbol value into an item, with error trapping */
|
||||
extern void hb_memvarGetRefer( HB_ITEM_PTR pItem, PHB_SYMB pMemvarSymb ); /* copy a reference to a symbol value into an item, with error trapping */
|
||||
extern ULONG hb_memvarGetPrivatesBase( void ); /* retrieve current PRIVATE variables stack base */
|
||||
extern void hb_memvarSetPrivatesBase( ULONG ulBase ); /* release PRIVATE variables created after specified base */
|
||||
extern void hb_memvarNewParameter( PHB_SYMB pSymbol, PHB_ITEM pValue );
|
||||
extern char * hb_memvarGetStrValuePtr( char * szVarName, ULONG *pulLen );
|
||||
extern void hb_memvarCreateFromItem( PHB_ITEM pMemvar, BYTE bScope, PHB_ITEM pValue );
|
||||
extern int hb_memvarScope( char * szVarName, ULONG ulLength ); /* retrieve scope of a dynamic variable symbol */
|
||||
extern PHB_ITEM hb_memvarDetachLocal( HB_ITEM_PTR pLocal ); /* Detach a local variable from the eval stack */
|
||||
|
||||
/* console I/O subsystem */
|
||||
extern void hb_conInit( void ); /* initialize the console API system */
|
||||
@@ -789,7 +795,6 @@ extern HB_EXPORT BOOL hb_iswinnt(void); /* return .T. if OS == WinNt, 2000, XP
|
||||
extern char * hb_getenv( const char * name );
|
||||
|
||||
/* Version tracking related things */
|
||||
|
||||
#ifdef HB_FILE_VER_STATIC
|
||||
#define HB_FILE_VER( id ) static char s_hb_file_ver[] = id;
|
||||
#else
|
||||
|
||||
@@ -230,12 +230,6 @@ typedef DBORDERCONDINFO * LPDBORDERCONDINFO;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* DBORDERCREATE
|
||||
* -------------
|
||||
* The Create Order Info structure
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
BYTE * abConstrName; /* Name of relational integrity constraint */
|
||||
@@ -246,6 +240,13 @@ typedef struct
|
||||
|
||||
typedef DBCONSTRAINTINFO * LPDBCONSTRAINTINFO;
|
||||
|
||||
|
||||
/*
|
||||
* DBORDERCREATE
|
||||
* -------------
|
||||
* The Create Order Info structure
|
||||
*/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
LPDBORDERCONDINFO lpdbOrdCondInfo; /* Conditional information */
|
||||
@@ -301,7 +302,7 @@ typedef struct
|
||||
BOOL fIncludeDeleted; /* process should include deleted records */
|
||||
BOOL fLast; /* last record of the current scope required */
|
||||
BOOL fIgnoreDuplicates; /* process should ignore duplicate key value */
|
||||
BOOL fBackword; /* skip backword */
|
||||
BOOL fBackward; /* skip backward */
|
||||
BOOL fOptimized; /* Is (should be) scope optimized */
|
||||
} DBSCOPEINFO;
|
||||
|
||||
@@ -610,7 +611,7 @@ typedef USHORT ( * DBENTRYP_ISI )( AREAP area, PHB_ITEM p1, USHORT p2, PHB_ITEM
|
||||
typedef USHORT ( * DBENTRYP_BIB )( AREAP area, BOOL p1, PHB_ITEM p2, BOOL p3 );
|
||||
typedef USHORT ( * DBENTRYP_VPL )( AREAP area, void * p1, LONG p2 );
|
||||
typedef USHORT ( * DBENTRYP_VPLP )( AREAP area, void * p1, LONG * p2 );
|
||||
typedef USHORT ( * DBENTRYP_LSP )( AREAP area, LONG p1, BOOL * p2 );
|
||||
typedef USHORT ( * DBENTRYP_LSP )( AREAP area, ULONG p1, BOOL * p2 );
|
||||
|
||||
/* this methods DO USE take a Workarea but an RDDNODE */
|
||||
|
||||
@@ -755,12 +756,14 @@ typedef struct _RDDFUNCS
|
||||
|
||||
|
||||
/* non WorkArea functions */
|
||||
|
||||
DBENTRYP_R init; /* init RDD after registration */
|
||||
DBENTRYP_R exit; /* unregister RDD */
|
||||
DBENTRYP_RVV drop; /* remove table */
|
||||
DBENTRYP_RVV exists; /* check if table exist */
|
||||
DBENTRYP_RSLV rddInfo; /* RDD info */
|
||||
|
||||
|
||||
/* Special and reserved methods */
|
||||
|
||||
DBENTRYP_SVP whoCares; /* */
|
||||
@@ -952,167 +955,174 @@ typedef RDDNODE * LPRDDNODE;
|
||||
|
||||
/*--------------------* SUPER Methods *------------------------*/
|
||||
|
||||
#ifndef _SUPERTABLE
|
||||
#define _SUPERTABLE(w) SUPERTABLE
|
||||
#endif
|
||||
#ifndef __SUPERTABLE
|
||||
#define __SUPERTABLE(w) SUPERTABLE
|
||||
#endif
|
||||
|
||||
/* Movement and positioning methods */
|
||||
|
||||
#define SUPER_BOF(w, sp) ((*(SUPERTABLE)->bof)(w, sp))
|
||||
#define SUPER_EOF(w, sp) ((*(SUPERTABLE)->eof)(w, sp))
|
||||
#define SUPER_FOUND(w, sp) ((*(SUPERTABLE)->found)(w, sp))
|
||||
#define SUPER_GOTO(w, l) ((*(SUPERTABLE)->go)(w, l))
|
||||
#define SUPER_GOTOID(w, sp) ((*(SUPERTABLE)->goToId)(w, sp))
|
||||
#define SUPER_GOBOTTOM(w) ((*(SUPERTABLE)->goBottom)(w))
|
||||
#define SUPER_GOTOP(w) ((*(SUPERTABLE)->goTop)(w))
|
||||
#define SUPER_SEEK(w, i1, v, i2) ((*(SUPERTABLE)->seek)(w, i1, v, i2))
|
||||
#define SUPER_SKIP(w, l) ((*(SUPERTABLE)->skip)(w, l))
|
||||
#define SUPER_SKIPFILTER(w, l) ((*(SUPERTABLE)->skipFilter)(w, l))
|
||||
#define SUPER_SKIPRAW(w, l) ((*(SUPERTABLE)->skipRaw)(w, l))
|
||||
#define SUPER_BOF(w, sp) ((*(_SUPERTABLE(w))->bof)(w, sp))
|
||||
#define SUPER_EOF(w, sp) ((*(_SUPERTABLE(w))->eof)(w, sp))
|
||||
#define SUPER_FOUND(w, sp) ((*(_SUPERTABLE(w))->found)(w, sp))
|
||||
#define SUPER_GOTO(w, l) ((*(_SUPERTABLE(w))->go)(w, l))
|
||||
#define SUPER_GOTOID(w, sp) ((*(_SUPERTABLE(w))->goToId)(w, sp))
|
||||
#define SUPER_GOBOTTOM(w) ((*(_SUPERTABLE(w))->goBottom)(w))
|
||||
#define SUPER_GOTOP(w) ((*(_SUPERTABLE(w))->goTop)(w))
|
||||
#define SUPER_SEEK(w, i1, v, i2) ((*(_SUPERTABLE(w))->seek)(w, i1, v, i2))
|
||||
#define SUPER_SKIP(w, l) ((*(_SUPERTABLE(w))->skip)(w, l))
|
||||
#define SUPER_SKIPFILTER(w, l) ((*(_SUPERTABLE(w))->skipFilter)(w, l))
|
||||
#define SUPER_SKIPRAW(w, l) ((*(_SUPERTABLE(w))->skipRaw)(w, l))
|
||||
|
||||
|
||||
/* Data management */
|
||||
|
||||
#define SUPER_ADDFIELD(w, ip) ((*(SUPERTABLE)->addField)(w, ip))
|
||||
#define SUPER_APPEND(w, b) ((*(SUPERTABLE)->append)(w, b))
|
||||
#define SUPER_CREATEFIELDS(w, v) ((*(SUPERTABLE)->createFields)(w, v))
|
||||
#define SUPER_DELETE(w) ((*(SUPERTABLE)->deleterec)(w))
|
||||
#define SUPER_DELETED(w, sp) ((*(SUPERTABLE)->deleted)(w, sp))
|
||||
#define SUPER_FIELDCOUNT(w, sp) ((*(SUPERTABLE)->fieldCount)(w, sp))
|
||||
#define SUPER_FIELDDISPLAY(w, sp) ((*(SUPERTABLE)->fieldDisplay)(w, sp))
|
||||
#define SUPER_FIELDINFO(w,s1,s2,v) ((*(SUPERTABLE)->fieldInfo)(w,s1,s2,v))
|
||||
#define SUPER_FIELDNAME(w, i, bp) ((*(SUPERTABLE)->fieldName)(w, i, bp))
|
||||
#define SUPER_FLUSH(w) ((*(SUPERTABLE)->flush)(w))
|
||||
#define SUPER_GETREC(w, bpp) ((*(SUPERTABLE)->getRec)(w, bpp))
|
||||
#define SUPER_GETVALUE(w, i, v) ((*(SUPERTABLE)->getValue)(w, i, v))
|
||||
#define SUPER_GETVARLEN(w, i, lp) ((*(SUPERTABLE)->getVarLen)(w, i, lp))
|
||||
#define SUPER_GOCOLD(w) ((*(SUPERTABLE)->goCold)(w))
|
||||
#define SUPER_GOHOT(w) ((*(SUPERTABLE)->goHot)(w))
|
||||
#define SUPER_PUTVALUE(w, i, v) ((*(SUPERTABLE)->putValue)(w, i, v))
|
||||
#define SUPER_PUTREC(w, bp) ((*(SUPERTABLE)->putRec)(w, bp))
|
||||
#define SUPER_RECALL(w) ((*(SUPERTABLE)->recall)(w))
|
||||
#define SUPER_RECCOUNT(w, lp) ((*(SUPERTABLE)->reccount)(w, lp))
|
||||
#define SUPER_RECINFO(w,v1,i,v2) ((*(SUPERTABLE)->recInfo)(w,v1,i,v2))
|
||||
#define SUPER_RECNO(w, lp) ((*(SUPERTABLE)->recno)(w, lp))
|
||||
#define SUPER_RECID(w, i) ((*(SUPERTABLE)->recid)(w, i))
|
||||
#define SUPER_SETFIELDEXTENT(w, s) ((*(SUPERTABLE)->setFieldExtent)(w, s))
|
||||
#define SUPER_ADDFIELD(w, ip) ((*(_SUPERTABLE(w))->addField)(w, ip))
|
||||
#define SUPER_APPEND(w, b) ((*(_SUPERTABLE(w))->append)(w, b))
|
||||
#define SUPER_CREATEFIELDS(w, v) ((*(_SUPERTABLE(w))->createFields)(w, v))
|
||||
#define SUPER_DELETE(w) ((*(_SUPERTABLE(w))->deleterec)(w))
|
||||
#define SUPER_DELETED(w, sp) ((*(_SUPERTABLE(w))->deleted)(w, sp))
|
||||
#define SUPER_FIELDCOUNT(w, sp) ((*(_SUPERTABLE(w))->fieldCount)(w, sp))
|
||||
#define SUPER_FIELDDISPLAY(w, sp) ((*(_SUPERTABLE(w))->fieldDisplay)(w, sp))
|
||||
#define SUPER_FIELDINFO(w,s1,s2,v) ((*(_SUPERTABLE(w))->fieldInfo)(w,s1,s2,v))
|
||||
#define SUPER_FIELDNAME(w, i, bp) ((*(_SUPERTABLE(w))->fieldName)(w, i, bp))
|
||||
#define SUPER_FLUSH(w) ((*(_SUPERTABLE(w))->flush)(w))
|
||||
#define SUPER_GETREC(w, bpp) ((*(_SUPERTABLE(w))->getRec)(w, bpp))
|
||||
#define SUPER_GETVALUE(w, i, v) ((*(_SUPERTABLE(w))->getValue)(w, i, v))
|
||||
#define SUPER_GETVARLEN(w, i, lp) ((*(_SUPERTABLE(w))->getVarLen)(w, i, lp))
|
||||
#define SUPER_GOCOLD(w) ((*(_SUPERTABLE(w))->goCold)(w))
|
||||
#define SUPER_GOHOT(w) ((*(_SUPERTABLE(w))->goHot)(w))
|
||||
#define SUPER_PUTVALUE(w, i, v) ((*(_SUPERTABLE(w))->putValue)(w, i, v))
|
||||
#define SUPER_PUTREC(w, bp) ((*(_SUPERTABLE(w))->putRec)(w, bp))
|
||||
#define SUPER_RECALL(w) ((*(_SUPERTABLE(w))->recall)(w))
|
||||
#define SUPER_RECCOUNT(w, lp) ((*(_SUPERTABLE(w))->reccount)(w, lp))
|
||||
#define SUPER_RECINFO(w,v1,i,v2) ((*(_SUPERTABLE(w))->recInfo)(w,v1,i,v2))
|
||||
#define SUPER_RECNO(w, lp) ((*(_SUPERTABLE(w))->recno)(w, lp))
|
||||
#define SUPER_RECID(w, i) ((*(_SUPERTABLE(w))->recid)(w, i))
|
||||
#define SUPER_SETFIELDEXTENT(w, s) ((*(_SUPERTABLE(w))->setFieldExtent)(w, s))
|
||||
|
||||
|
||||
/* WorkArea/Database management */
|
||||
|
||||
#define SUPER_ALIAS(w, bp) ((*(SUPERTABLE)->alias)(w, bp))
|
||||
#define SUPER_CLOSE(w) ((*(SUPERTABLE)->close)(w))
|
||||
#define SUPER_CREATE(w, ip) ((*(SUPERTABLE)->create)(w, ip))
|
||||
#define SUPER_INFO(w, i, g) ((*(SUPERTABLE)->info)(w, i, g))
|
||||
#define SUPER_NEW(w) ((*(SUPERTABLE)->newarea)(w))
|
||||
#define SUPER_OPEN(w, ip) ((*(SUPERTABLE)->open)(w, ip))
|
||||
#define SUPER_RELEASE(w) ((*(SUPERTABLE)->release)(w))
|
||||
#define SUPER_STRUCTSIZE(w, sp) ((*(SUPERTABLE)->structSize)(w, sp))
|
||||
#define SUPER_SYSNAME(w, bp) ((*(SUPERTABLE)->sysName)(w, bp))
|
||||
#define SUPER_DBEVAL(w, ip) ((*(SUPERTABLE)->dbEval)(w, ip))
|
||||
#define SUPER_PACK(w) ((*(SUPERTABLE)->pack)(w))
|
||||
#define SUPER_PACKREC(w, l, sp) ((*(SUPERTABLE)->packRec)(w, l, sp))
|
||||
#define SUPER_SORT(w, ip) ((*(SUPERTABLE)->sort)(w, ip))
|
||||
#define SUPER_TRANS(w, ip) ((*(SUPERTABLE)->trans)(w, ip))
|
||||
#define SUPER_TRANSREC(w, ip) ((*(SUPERTABLE)->transRec)(w, ip))
|
||||
#define SUPER_ZAP(w) ((*(SUPERTABLE)->zap)(w))
|
||||
#define SUPER_ALIAS(w, bp) ((*(_SUPERTABLE(w))->alias)(w, bp))
|
||||
#define SUPER_CLOSE(w) ((*(_SUPERTABLE(w))->close)(w))
|
||||
#define SUPER_CREATE(w, ip) ((*(_SUPERTABLE(w))->create)(w, ip))
|
||||
#define SUPER_INFO(w, i, g) ((*(_SUPERTABLE(w))->info)(w, i, g))
|
||||
#define SUPER_NEW(w) ((*(_SUPERTABLE(w))->newarea)(w))
|
||||
#define SUPER_OPEN(w, ip) ((*(_SUPERTABLE(w))->open)(w, ip))
|
||||
#define SUPER_RELEASE(w) ((*(_SUPERTABLE(w))->release)(w))
|
||||
#define SUPER_STRUCTSIZE(w, sp) ((*(_SUPERTABLE(w))->structSize)(w, sp))
|
||||
#define SUPER_SYSNAME(w, bp) ((*(_SUPERTABLE(w))->sysName)(w, bp))
|
||||
#define SUPER_DBEVAL(w, ip) ((*(_SUPERTABLE(w))->dbEval)(w, ip))
|
||||
#define SUPER_PACK(w) ((*(_SUPERTABLE(w))->pack)(w))
|
||||
#define SUPER_PACKREC(w, l, sp) ((*(_SUPERTABLE(w))->packRec)(w, l, sp))
|
||||
#define SUPER_SORT(w, ip) ((*(_SUPERTABLE(w))->sort)(w, ip))
|
||||
#define SUPER_TRANS(w, ip) ((*(_SUPERTABLE(w))->trans)(w, ip))
|
||||
#define SUPER_TRANSREC(w, ip) ((*(_SUPERTABLE(w))->transRec)(w, ip))
|
||||
#define SUPER_ZAP(w) ((*(_SUPERTABLE(w))->zap)(w))
|
||||
|
||||
|
||||
/* Relational Methods */
|
||||
|
||||
#define SUPER_CHILDEND(w, ip) ((*(SUPERTABLE)->childEnd)(w, ip))
|
||||
#define SUPER_CHILDSTART(w, ip) ((*(SUPERTABLE)->childStart)(w, ip))
|
||||
#define SUPER_CHILDSYNC(w, ip) ((*(SUPERTABLE)->childSync)(w, ip))
|
||||
#define SUPER_SYNCCHILDREN(w) ((*(SUPERTABLE)->syncChildren)(w))
|
||||
#define SUPER_CLEARREL(w) ((*(SUPERTABLE)->clearRel)(w))
|
||||
#define SUPER_FORCEREL(w) ((*(SUPERTABLE)->forceRel)(w))
|
||||
#define SUPER_RELAREA(w, s, sp) ((*(SUPERTABLE)->relArea)(w, s, sp))
|
||||
#define SUPER_RELEVAL(w, ip) ((*(SUPERTABLE)->relEval)(w, ip))
|
||||
#define SUPER_RELTEXT(w, s, bp) ((*(SUPERTABLE)->relText)(w, s, bp))
|
||||
#define SUPER_SETREL(w, ip) ((*(SUPERTABLE)->setRel)(w, ip))
|
||||
#define SUPER_CHILDEND(w, ip) ((*(_SUPERTABLE(w))->childEnd)(w, ip))
|
||||
#define SUPER_CHILDSTART(w, ip) ((*(_SUPERTABLE(w))->childStart)(w, ip))
|
||||
#define SUPER_CHILDSYNC(w, ip) ((*(_SUPERTABLE(w))->childSync)(w, ip))
|
||||
#define SUPER_SYNCCHILDREN(w) ((*(_SUPERTABLE(w))->syncChildren)(w))
|
||||
#define SUPER_CLEARREL(w) ((*(_SUPERTABLE(w))->clearRel)(w))
|
||||
#define SUPER_FORCEREL(w) ((*(_SUPERTABLE(w))->forceRel)(w))
|
||||
#define SUPER_RELAREA(w, s, sp) ((*(_SUPERTABLE(w))->relArea)(w, s, sp))
|
||||
#define SUPER_RELEVAL(w, ip) ((*(_SUPERTABLE(w))->relEval)(w, ip))
|
||||
#define SUPER_RELTEXT(w, s, bp) ((*(_SUPERTABLE(w))->relText)(w, s, bp))
|
||||
#define SUPER_SETREL(w, ip) ((*(_SUPERTABLE(w))->setRel)(w, ip))
|
||||
|
||||
|
||||
/* Order Management */
|
||||
|
||||
#define SUPER_ORDLSTADD(w, lp) ((*(SUPERTABLE)->orderListAdd)(w, lp))
|
||||
#define SUPER_ORDLSTDELETE(w, lp) ((*(SUPERTABLE)->orderListDelete)(w, lp))
|
||||
#define SUPER_ORDLSTFOCUS(w, lp) ((*(SUPERTABLE)->orderListFocus)(w, lp))
|
||||
#define SUPER_ORDLSTREBUILD(w) ((*(SUPERTABLE)->orderListRebuild)(w))
|
||||
#define SUPER_ORDLSTCLEAR(w) ((*(SUPERTABLE)->orderListClear)(w))
|
||||
#define SUPER_ORDSETCOND(w,ip) ((*(SUPERTABLE)->orderCondition)(w, ip))
|
||||
#define SUPER_ORDCREATE(w, ip) ((*(SUPERTABLE)->orderCreate)(w, ip))
|
||||
#define SUPER_ORDDELETE(w, ip) ((*(SUPERTABLE)->orderDelete)(w, ip))
|
||||
#define SUPER_ORDINFO(w, i, p) ((*(SUPERTABLE)->orderInfo)(w, i, p))
|
||||
#define SUPER_ORDEXPR(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_EXPRESSION, p))
|
||||
#define SUPER_ORDCOND(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_CONDITION, p))
|
||||
#define SUPER_ORDRECNO(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_RECNO, p))
|
||||
#define SUPER_ORDPOS(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_POSITION, p))
|
||||
#define SUPER_ORDNUMBER(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_NUMBER, p))
|
||||
#define SUPER_ORDNAME(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_NAME, p))
|
||||
#define SUPER_ORDBAGNAME(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_BAGNAME, p))
|
||||
#define SUPER_ORDBAGEXT(w, p) ((*(SUPERTABLE)->orderInfo)(w, DBOI_BAGEXT, p))
|
||||
#define SUPER_ORDLSTADD(w, lp) ((*(_SUPERTABLE(w))->orderListAdd)(w, lp))
|
||||
#define SUPER_ORDLSTDELETE(w, lp) ((*(_SUPERTABLE(w))->orderListDelete)(w, lp))
|
||||
#define SUPER_ORDLSTFOCUS(w, lp) ((*(_SUPERTABLE(w))->orderListFocus)(w, lp))
|
||||
#define SUPER_ORDLSTREBUILD(w) ((*(_SUPERTABLE(w))->orderListRebuild)(w))
|
||||
#define SUPER_ORDLSTCLEAR(w) ((*(_SUPERTABLE(w))->orderListClear)(w))
|
||||
#define SUPER_ORDSETCOND(w,ip) ((*(_SUPERTABLE(w))->orderCondition)(w, ip))
|
||||
#define SUPER_ORDCREATE(w, ip) ((*(_SUPERTABLE(w))->orderCreate)(w, ip))
|
||||
#define SUPER_ORDDESTROY(w, ip) ((*(_SUPERTABLE(w))->orderDestroy)(w, ip))
|
||||
#define SUPER_ORDDELETE(w, ip) ((*(_SUPERTABLE(w))->orderDelete)(w, ip))
|
||||
#define SUPER_ORDINFO(w, i, p) ((*(_SUPERTABLE(w))->orderInfo)(w, i, p))
|
||||
#define SUPER_ORDEXPR(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_EXPRESSION, p))
|
||||
#define SUPER_ORDCOND(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_CONDITION, p))
|
||||
#define SUPER_ORDRECNO(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_RECNO, p))
|
||||
#define SUPER_ORDPOS(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_POSITION, p))
|
||||
#define SUPER_ORDNUMBER(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_NUMBER, p))
|
||||
#define SUPER_ORDNAME(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_NAME, p))
|
||||
#define SUPER_ORDBAGNAME(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_BAGNAME, p))
|
||||
#define SUPER_ORDBAGEXT(w, p) ((*(_SUPERTABLE(w))->orderInfo)(w, DBOI_BAGEXT, p))
|
||||
|
||||
|
||||
/* Filters and Scope Settings */
|
||||
|
||||
#define SUPER_CLEARFILTER(w) ((*(SUPERTABLE)->clearFilter)(w))
|
||||
#define SUPER_CLEARLOCATE(w) ((*(SUPERTABLE)->clearLocate)(w))
|
||||
#define SUPER_CLEARSCOPE(w) ((*(SUPERTABLE)->clearScope)(w))
|
||||
#define SUPER_COUNTSCOPE(w,ip,lp) ((*(SUPERTABLE)->countScope)(w,ip,lp))
|
||||
#define SUPER_FILTERTEXT(w, bp) ((*(SUPERTABLE)->filterText)(w, bp))
|
||||
#define SUPER_SCOPEINFO(w,i,v) ((*(SUPERTABLE)->scopeInfo)(w,i,v))
|
||||
#define SUPER_SETFILTER(w, ip) ((*(SUPERTABLE)->setFilter)(w, ip))
|
||||
#define SUPER_SETLOCATE(w, ip) ((*(SUPERTABLE)->setLocate)(w, ip))
|
||||
#define SUPER_SETSCOPE(w, ip) ((*(SUPERTABLE)->setScope)(w, ip))
|
||||
#define SUPER_SKIPSCOPE(w, bp, l) ((*(SUPERTABLE)->skipScope)(w, bp, l))
|
||||
#define SUPER_LOCATE(w, b) ((*(SUPERTABLE)->locate)(w, b))
|
||||
#define SUPER_CLEARFILTER(w) ((*(_SUPERTABLE(w))->clearFilter)(w))
|
||||
#define SUPER_CLEARLOCATE(w) ((*(_SUPERTABLE(w))->clearLocate)(w))
|
||||
#define SUPER_CLEARSCOPE(w) ((*(_SUPERTABLE(w))->clearScope)(w))
|
||||
#define SUPER_COUNTSCOPE(w,ip,lp) ((*(_SUPERTABLE(w))->countScope)(w,ip,lp))
|
||||
#define SUPER_FILTERTEXT(w, bp) ((*(_SUPERTABLE(w))->filterText)(w, bp))
|
||||
#define SUPER_SCOPEINFO(w,i,v) ((*(_SUPERTABLE(w))->scopeInfo)(w,i,v))
|
||||
#define SUPER_SETFILTER(w, ip) ((*(_SUPERTABLE(w))->setFilter)(w, ip))
|
||||
#define SUPER_SETLOCATE(w, ip) ((*(_SUPERTABLE(w))->setLocate)(w, ip))
|
||||
#define SUPER_SETSCOPE(w, ip) ((*(_SUPERTABLE(w))->setScope)(w, ip))
|
||||
#define SUPER_SKIPSCOPE(w, bp, l) ((*(_SUPERTABLE(w))->skipScope)(w, bp, l))
|
||||
#define SUPER_LOCATE(w, b) ((*(_SUPERTABLE(w))->locate)(w, b))
|
||||
|
||||
|
||||
/* Miscellaneous */
|
||||
|
||||
#define SUPER_COMPILE(w, bp) ((*(SUPERTABLE)->compile)(w, bp))
|
||||
#define SUPER_ERROR(w, ip) ((*(SUPERTABLE)->error)(w, ip))
|
||||
#define SUPER_EVALBLOCK(w, v) ((*(SUPERTABLE)->evalBlock)(w, v))
|
||||
#define SUPER_COMPILE(w, bp) ((*(_SUPERTABLE(w))->compile)(w, bp))
|
||||
#define SUPER_ERROR(w, ip) ((*(_SUPERTABLE(w))->error)(w, ip))
|
||||
#define SUPER_EVALBLOCK(w, v) ((*(_SUPERTABLE(w))->evalBlock)(w, v))
|
||||
|
||||
|
||||
/* Network operations */
|
||||
|
||||
#define SUPER_GETLOCKS(w, g) ((*(SUPERTABLE)->info)(w, DBI_GETLOCKARRAY, g))
|
||||
#define SUPER_RAWLOCK(w, i, l) ((*(SUPERTABLE)->rawlock)(w, i, l))
|
||||
#define SUPER_LOCK(w, sp) ((*(SUPERTABLE)->lock)(w, sp))
|
||||
#define SUPER_UNLOCK(w, i) ((*(SUPERTABLE)->unlock)(w, i))
|
||||
#define SUPER_GETLOCKS(w, g) ((*(_SUPERTABLE(w))->info)(w, DBI_GETLOCKARRAY, g))
|
||||
#define SUPER_RAWLOCK(w, i, l) ((*(_SUPERTABLE(w))->rawlock)(w, i, l))
|
||||
#define SUPER_LOCK(w, sp) ((*(_SUPERTABLE(w))->lock)(w, sp))
|
||||
#define SUPER_UNLOCK(w, i) ((*(_SUPERTABLE(w))->unlock)(w, i))
|
||||
|
||||
|
||||
/* Memofile functions */
|
||||
|
||||
#define SUPER_CLOSEMEMFILE(w) ((*(SUPERTABLE)->closeMemFile)(w))
|
||||
#define SUPER_CREATEMEMFILE(w,bp) ((*(SUPERTABLE)->createMemFile)(w,bp))
|
||||
#define SUPER_GETVALUEFILE(w,i,bp,u) ((*(SUPERTABLE)->getValueFile)(w,i,bp,u))
|
||||
#define SUPER_OPENMEMFILE(w,bp) ((*(SUPERTABLE)->openMemFile)(w,bp))
|
||||
#define SUPER_PUTVALUEFILE(w,i,bp,u) ((*(SUPERTABLE)->putValueFile)(w,i,bp,u))
|
||||
#define SUPER_CLOSEMEMFILE(w) ((*(_SUPERTABLE(w))->closeMemFile)(w))
|
||||
#define SUPER_CREATEMEMFILE(w,bp) ((*(_SUPERTABLE(w))->createMemFile)(w,bp))
|
||||
#define SUPER_GETVALUEFILE(w,i,bp,u) ((*(_SUPERTABLE(w))->getValueFile)(w,i,bp,u))
|
||||
#define SUPER_OPENMEMFILE(w,bp) ((*(_SUPERTABLE(w))->openMemFile)(w,bp))
|
||||
#define SUPER_PUTVALUEFILE(w,i,bp,u) ((*(_SUPERTABLE(w))->putValueFile)(w,i,bp,u))
|
||||
|
||||
|
||||
/* Database file header handling */
|
||||
|
||||
#define SUPER_READDBHEADER(w) ((*(SUPERTABLE)->readDBHeader)(w))
|
||||
#define SUPER_WRITEDBHEADER(w) ((*(SUPERTABLE)->writeDBHeader)(w))
|
||||
#define SUPER_READDBHEADER(w) ((*(_SUPERTABLE(w))->readDBHeader)(w))
|
||||
#define SUPER_WRITEDBHEADER(w) ((*(_SUPERTABLE(w))->writeDBHeader)(w))
|
||||
|
||||
|
||||
/* Info operations */
|
||||
|
||||
#define SUPER_RECSIZE(w, lp) ((*(SUPERTABLE)->info)(w, DBI_GETRECSIZE, lp))
|
||||
#define SUPER_HEADERSIZE(w, fp) ((*(SUPERTABLE)->info)(w, DBI_GETHEADERSIZE, fp))
|
||||
#define SUPER_LUPDATE(w, fp) ((*(SUPERTABLE)->info)(w, DBI_LASTUPDATE, fp ))
|
||||
#define SUPER_SETDELIM(w, fp) ((*(SUPERTABLE)->info)(w, DBI_SETDELIMITER, fp))
|
||||
#define SUPER_GETDELIM(w, fp) ((*(SUPERTABLE)->info)(w, DBI_GETDELIMITER, fp))
|
||||
#define SUPER_TABLEEXT(w, fp) ((*(SUPERTABLE)->info)(w, DBI_TABLEEXT, fp))
|
||||
#define SUPER_RECSIZE(w, lp) ((*(_SUPERTABLE(w))->info)(w, DBI_GETRECSIZE, lp))
|
||||
#define SUPER_HEADERSIZE(w, fp) ((*(_SUPERTABLE(w))->info)(w, DBI_GETHEADERSIZE, fp))
|
||||
#define SUPER_LUPDATE(w, fp) ((*(_SUPERTABLE(w))->info)(w, DBI_LASTUPDATE, fp ))
|
||||
#define SUPER_SETDELIM(w, fp) ((*(_SUPERTABLE(w))->info)(w, DBI_SETDELIMITER, fp))
|
||||
#define SUPER_GETDELIM(w, fp) ((*(_SUPERTABLE(w))->info)(w, DBI_GETDELIMITER, fp))
|
||||
#define SUPER_TABLEEXT(w, fp) ((*(_SUPERTABLE(w))->info)(w, DBI_TABLEEXT, fp))
|
||||
|
||||
/* non WorkArea functions */
|
||||
#define SUPER_INIT(r) ((*(SUPERTABLE)->init)(r))
|
||||
#define SUPER_EXIT(r) ((*(SUPERTABLE)->exit)(r))
|
||||
#define SUPER_DROP(r, it, ii) ((*(SUPERTABLE)->drop)(r, it, ii))
|
||||
#define SUPER_EXISTS(r, it, ii) ((*(SUPERTABLE)->exists)(r, it, ii))
|
||||
#define SUPER_RDDINFO(r, i, l, g) ((*(SUPERTABLE)->rddInfo)(r, i, l, g))
|
||||
#define SUPER_INIT(r) ((*(__SUPERTABLE(r))->init)(r))
|
||||
#define SUPER_EXIT(r) ((*(__SUPERTABLE(r))->exit)(r))
|
||||
#define SUPER_DROP(r, it, ii) ((*(__SUPERTABLE(r))->drop)(r, it, ii))
|
||||
#define SUPER_EXISTS(r, it, ii) ((*(__SUPERTABLE(r))->exists)(r, it, ii))
|
||||
#define SUPER_RDDINFO(r, i, l, g) ((*(__SUPERTABLE(r))->rddInfo)(r, i, l, g))
|
||||
|
||||
#define ISSUPER_INIT(r) ((SUPERTABLE)->init != NULL)
|
||||
#define ISSUPER_EXIT(r) ((SUPERTABLE)->exit != NULL)
|
||||
#define ISSUPER_INIT(r) ((__SUPERTABLE(r))->init != NULL)
|
||||
#define ISSUPER_EXIT(r) ((__SUPERTABLE(r))->exit != NULL)
|
||||
|
||||
/*
|
||||
* PROTOTYPES
|
||||
@@ -1121,7 +1131,7 @@ typedef RDDNODE * LPRDDNODE;
|
||||
extern HB_EXPORT int hb_rddRegister( char * szDriver, USHORT uiType );
|
||||
extern HB_EXPORT ERRCODE hb_rddInherit( PRDDFUNCS pTable, PRDDFUNCS pSubTable, PRDDFUNCS pSuperTable, BYTE * szDrvName );
|
||||
extern HB_EXPORT LPRDDNODE hb_rddGetNode( USHORT uiNode );
|
||||
#if 0
|
||||
#if 0
|
||||
extern HB_EXPORT ERRCODE hb_rddDisinherit( BYTE * drvName );
|
||||
extern HB_EXPORT USHORT hb_rddExtendType( HB_TYPE fieldType );
|
||||
extern HB_EXPORT HB_TYPE hb_rddFieldType( USHORT extendType );
|
||||
|
||||
@@ -337,6 +337,7 @@ extern USHORT hb_compVariableGetPos( PVAR pVars, char * szVarName ); /* returns
|
||||
extern int hb_compLocalGetPos( char * szVarName ); /* returns the order + 1 of a local variable */
|
||||
|
||||
#define HB_SYM_MEMVAR FALSE
|
||||
#define HB_SYM_MSGNAME FALSE
|
||||
#define HB_SYM_FUNCNAME TRUE
|
||||
extern PCOMSYMBOL hb_compSymbolAdd( char *, USHORT *, BOOL );
|
||||
extern PCOMSYMBOL hb_compSymbolKill( PCOMSYMBOL ); /* releases all memory allocated by symbol and returns the next one */
|
||||
|
||||
@@ -108,6 +108,7 @@ HB_EXTERN_BEGIN
|
||||
#define FPTIT_TEXT 0x0001 /* Text */
|
||||
#define FPTIT_OBJ 0x0002 /* Object */
|
||||
|
||||
#define FPTIT_SIX_NIL 0x0000 /* NIL VALUE (USED ONLY IN ARRAYS) */
|
||||
#define FPTIT_SIX_LNUM 0x0002 /* LONG LE */
|
||||
#define FPTIT_SIX_DNUM 0x0008 /* DOUBLE LE */
|
||||
#define FPTIT_SIX_LDATE 0x0020 /* DATE (LONG LE) */
|
||||
|
||||
@@ -107,7 +107,7 @@ struct _HB_SYMB;
|
||||
# undef HB_API_MACROS
|
||||
# undef HB_STACK_MACROS
|
||||
|
||||
/* This is ugly trick bu works without speed overhead */
|
||||
/* This is ugly trick but works without speed overhead */
|
||||
# define HB_ITEM_TYPE( p ) ( * ( HB_TYPE * ) ( p ) )
|
||||
|
||||
/* if you do not like it then use this definition */
|
||||
|
||||
@@ -477,143 +477,143 @@ void hb_compChkEnvironVar( char * szSwitch )
|
||||
s++;
|
||||
switch( *s )
|
||||
{
|
||||
case 'a':
|
||||
case 'A':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bAutoMemvarAssume = FALSE;
|
||||
else
|
||||
hb_comp_bAutoMemvarAssume = TRUE;
|
||||
break;
|
||||
case 'a':
|
||||
case 'A':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bAutoMemvarAssume = FALSE;
|
||||
else
|
||||
hb_comp_bAutoMemvarAssume = TRUE;
|
||||
break;
|
||||
|
||||
case 'b':
|
||||
case 'B':
|
||||
{
|
||||
unsigned int i = 0;
|
||||
char * szOption = hb_strupr( hb_strdup( s ) );
|
||||
while( i < strlen( szOption ) && !HB_ISOPTSEP( szOption[ i ] ) )
|
||||
i++;
|
||||
szOption[ i ] = '\0';
|
||||
case 'b':
|
||||
case 'B':
|
||||
{
|
||||
unsigned int i = 0;
|
||||
char * szOption = hb_strupr( hb_strdup( s ) );
|
||||
while( i < strlen( szOption ) && !HB_ISOPTSEP( szOption[ i ] ) )
|
||||
i++;
|
||||
szOption[ i ] = '\0';
|
||||
|
||||
if( strcmp( szOption, "BUILD" ) == 0 )
|
||||
hb_comp_bBuildInfo = TRUE;
|
||||
else
|
||||
{
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bDebugInfo = FALSE;
|
||||
else
|
||||
{
|
||||
hb_comp_bDebugInfo = TRUE;
|
||||
hb_comp_bLineNumbers = TRUE;
|
||||
}
|
||||
}
|
||||
if( strcmp( szOption, "BUILD" ) == 0 )
|
||||
hb_comp_bBuildInfo = TRUE;
|
||||
else
|
||||
{
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bDebugInfo = FALSE;
|
||||
else
|
||||
{
|
||||
hb_comp_bDebugInfo = TRUE;
|
||||
hb_comp_bLineNumbers = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
hb_xfree( szOption );
|
||||
}
|
||||
break;
|
||||
hb_xfree( szOption );
|
||||
}
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
case 'C':
|
||||
{
|
||||
unsigned int i = 0;
|
||||
char * szOption = hb_strupr( hb_strdup( s ) );
|
||||
while( i < strlen( szOption ) && !HB_ISOPTSEP( szOption[ i ] ) )
|
||||
i++;
|
||||
szOption[ i ] = '\0';
|
||||
case 'c':
|
||||
case 'C':
|
||||
{
|
||||
unsigned int i = 0;
|
||||
char * szOption = hb_strupr( hb_strdup( s ) );
|
||||
while( i < strlen( szOption ) && !HB_ISOPTSEP( szOption[ i ] ) )
|
||||
i++;
|
||||
szOption[ i ] = '\0';
|
||||
|
||||
if( strcmp( szOption, "CREDITS" ) == 0 ||
|
||||
strcmp( szOption, "CREDIT" ) == 0 ||
|
||||
strcmp( szOption, "CREDI" ) == 0 ||
|
||||
strcmp( szOption, "CRED" ) == 0 )
|
||||
hb_comp_bCredits = TRUE;
|
||||
else
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, szOption, NULL );
|
||||
if( strcmp( szOption, "CREDITS" ) == 0 ||
|
||||
strcmp( szOption, "CREDIT" ) == 0 ||
|
||||
strcmp( szOption, "CREDI" ) == 0 ||
|
||||
strcmp( szOption, "CRED" ) == 0 )
|
||||
hb_comp_bCredits = TRUE;
|
||||
else
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, szOption, NULL );
|
||||
|
||||
hb_xfree( szOption );
|
||||
}
|
||||
break;
|
||||
hb_xfree( szOption );
|
||||
}
|
||||
break;
|
||||
|
||||
case 'd':
|
||||
case 'D':
|
||||
/* NOTE: Ignore these -d switches will be processed separately */
|
||||
break;
|
||||
case 'd':
|
||||
case 'D':
|
||||
/* NOTE: Ignore these -d switches will be processed separately */
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
case 'E':
|
||||
if( *( s + 1 ) == 's' || *( s + 1 ) == 'S' )
|
||||
{
|
||||
switch( *( s + 2 ) )
|
||||
{
|
||||
case '\0':
|
||||
case '0':
|
||||
hb_comp_iExitLevel = HB_EXITLEVEL_DEFAULT;
|
||||
break;
|
||||
case 'e':
|
||||
case 'E':
|
||||
if( *( s + 1 ) == 's' || *( s + 1 ) == 'S' )
|
||||
{
|
||||
switch( *( s + 2 ) )
|
||||
{
|
||||
case '\0':
|
||||
case '0':
|
||||
hb_comp_iExitLevel = HB_EXITLEVEL_DEFAULT;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
hb_comp_iExitLevel = HB_EXITLEVEL_SETEXIT;
|
||||
break;
|
||||
case '1':
|
||||
hb_comp_iExitLevel = HB_EXITLEVEL_SETEXIT;
|
||||
break;
|
||||
|
||||
case '2':
|
||||
hb_comp_iExitLevel = HB_EXITLEVEL_DELTARGET;
|
||||
break;
|
||||
case '2':
|
||||
hb_comp_iExitLevel = HB_EXITLEVEL_DELTARGET;
|
||||
break;
|
||||
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
}
|
||||
}
|
||||
else
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
}
|
||||
}
|
||||
else
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
|
||||
break;
|
||||
break;
|
||||
|
||||
case 'g':
|
||||
case 'G':
|
||||
switch( *( s + 1 ) )
|
||||
{
|
||||
case 'c':
|
||||
case 'C':
|
||||
hb_comp_iLanguage = LANG_C;
|
||||
case 'g':
|
||||
case 'G':
|
||||
switch( *( s + 1 ) )
|
||||
{
|
||||
case 'c':
|
||||
case 'C':
|
||||
hb_comp_iLanguage = LANG_C;
|
||||
|
||||
switch( *( s + 2 ) )
|
||||
{
|
||||
case '3':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_REALCODE;
|
||||
break;
|
||||
switch( *( s + 2 ) )
|
||||
{
|
||||
case '3':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_REALCODE;
|
||||
break;
|
||||
|
||||
case '\0':
|
||||
case '2':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_VERBOSE;
|
||||
break;
|
||||
case '\0':
|
||||
case '2':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_VERBOSE;
|
||||
break;
|
||||
|
||||
case '1':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_NORMAL;
|
||||
break;
|
||||
case '1':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_NORMAL;
|
||||
break;
|
||||
|
||||
case '0':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_COMPACT;
|
||||
break;
|
||||
case '0':
|
||||
hb_comp_iGenCOutput = HB_COMPGENC_COMPACT;
|
||||
break;
|
||||
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
}
|
||||
break;
|
||||
|
||||
case 'j':
|
||||
case 'J':
|
||||
hb_comp_iLanguage = LANG_JAVA;
|
||||
break;
|
||||
case 'j':
|
||||
case 'J':
|
||||
hb_comp_iLanguage = LANG_JAVA;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
case 'H':
|
||||
hb_comp_iLanguage = LANG_PORT_OBJ;
|
||||
break;
|
||||
case 'h':
|
||||
case 'H':
|
||||
hb_comp_iLanguage = LANG_PORT_OBJ;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
case 'I':
|
||||
hb_comp_iLanguage = LANG_CLI;
|
||||
break;
|
||||
case 'i':
|
||||
case 'I':
|
||||
hb_comp_iLanguage = LANG_CLI;
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
case 'O':
|
||||
case 'o':
|
||||
case 'O':
|
||||
hb_comp_iLanguage = LANG_OBJ_MODULE;
|
||||
break;
|
||||
|
||||
@@ -622,259 +622,259 @@ void hb_compChkEnvironVar( char * szSwitch )
|
||||
hb_comp_iLanguage = LANG_OBJ32;
|
||||
break;
|
||||
|
||||
default:
|
||||
printf( "\nUnsupported output language option\n" );
|
||||
hb_compMainExit();
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
break;
|
||||
default:
|
||||
printf( "\nUnsupported output language option\n" );
|
||||
hb_compMainExit();
|
||||
exit( EXIT_FAILURE );
|
||||
}
|
||||
break;
|
||||
|
||||
/* NOTE:
|
||||
h or H from HELP or help
|
||||
*/
|
||||
case 'h':
|
||||
case 'H':
|
||||
case '?':
|
||||
break;
|
||||
case 'h':
|
||||
case 'H':
|
||||
case '?':
|
||||
break;
|
||||
|
||||
/* NOTE:
|
||||
It already has support for several include files
|
||||
*/
|
||||
case 'i':
|
||||
case 'I':
|
||||
hb_fsAddSearchPath( s + 1, &hb_comp_pIncludePath );
|
||||
break;
|
||||
case 'i':
|
||||
case 'I':
|
||||
hb_fsAddSearchPath( s + 1, &hb_comp_pIncludePath );
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
case 'K':
|
||||
{
|
||||
int i = 1;
|
||||
while( s[ i ] )
|
||||
{
|
||||
switch( s[ i++ ] )
|
||||
{
|
||||
case '?':
|
||||
hb_compPrintLogo();
|
||||
hb_compPrintModes();
|
||||
hb_comp_bLogo = FALSE;
|
||||
hb_comp_bQuiet = TRUE;
|
||||
break;
|
||||
case 'k':
|
||||
case 'K':
|
||||
{
|
||||
int i = 1;
|
||||
while( s[ i ] )
|
||||
{
|
||||
switch( s[ i++ ] )
|
||||
{
|
||||
case '?':
|
||||
hb_compPrintLogo();
|
||||
hb_compPrintModes();
|
||||
hb_comp_bLogo = FALSE;
|
||||
hb_comp_bQuiet = TRUE;
|
||||
break;
|
||||
|
||||
case 'h':
|
||||
/* default Harbour mode */
|
||||
hb_comp_Supported |= HB_COMPFLAG_HARBOUR;
|
||||
break;
|
||||
case 'h':
|
||||
/* default Harbour mode */
|
||||
hb_comp_Supported |= HB_COMPFLAG_HARBOUR;
|
||||
break;
|
||||
|
||||
case 'c':
|
||||
/* clear all flags - minimal set of features */
|
||||
hb_comp_Supported = HB_COMPFLAG_OPTJUMP;
|
||||
break;
|
||||
case 'c':
|
||||
/* clear all flags - minimal set of features */
|
||||
hb_comp_Supported = HB_COMPFLAG_OPTJUMP;
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
hb_comp_Supported |= HB_COMPFLAG_XBASE;
|
||||
break;
|
||||
case 'x':
|
||||
hb_comp_Supported |= HB_COMPFLAG_XBASE;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
hb_comp_Supported |= HB_COMPFLAG_HB_INLINE;
|
||||
break;
|
||||
case 'i':
|
||||
hb_comp_Supported |= HB_COMPFLAG_HB_INLINE;
|
||||
break;
|
||||
|
||||
case 'J':
|
||||
hb_comp_Supported &= ~HB_COMPFLAG_OPTJUMP;
|
||||
break;
|
||||
case 'J':
|
||||
hb_comp_Supported &= ~HB_COMPFLAG_OPTJUMP;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
hb_comp_Supported |= HB_COMPFLAG_RT_MACRO;
|
||||
break;
|
||||
case 'r':
|
||||
hb_comp_Supported |= HB_COMPFLAG_RT_MACRO;
|
||||
break;
|
||||
|
||||
case 's':
|
||||
hb_comp_Supported |= HB_COMPFLAG_ARRSTR;
|
||||
break;
|
||||
case 's':
|
||||
hb_comp_Supported |= HB_COMPFLAG_ARRSTR;
|
||||
break;
|
||||
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
case 'L':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bLineNumbers = TRUE;
|
||||
else
|
||||
hb_comp_bLineNumbers = FALSE;
|
||||
break;
|
||||
|
||||
case 'm':
|
||||
case 'M':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bAutoOpen = TRUE;
|
||||
else
|
||||
hb_comp_bAutoOpen = FALSE;
|
||||
break;
|
||||
|
||||
case 'n':
|
||||
case 'N':
|
||||
/*
|
||||
-n1 no start up procedure and no implicit start up procedure
|
||||
*/
|
||||
if( *( s + 1 ) == '1' )
|
||||
{
|
||||
hb_comp_bStartProc = FALSE;
|
||||
hb_comp_bNoStartUp = TRUE;
|
||||
}
|
||||
/*
|
||||
-n or -n0 no implicit start up procedure
|
||||
*/
|
||||
else if ( ( *( s + 1 ) == '0' ) || ( *( s + 1 ) == '\0' ) )
|
||||
hb_comp_bStartProc = FALSE;
|
||||
/*
|
||||
-n- ceates implicit start up procedure
|
||||
*/
|
||||
else if( *( s + 1 ) == '-' )
|
||||
hb_comp_bStartProc = TRUE;
|
||||
/*
|
||||
invalid command
|
||||
*/
|
||||
else
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
break;
|
||||
|
||||
case 'o':
|
||||
case 'O':
|
||||
{
|
||||
char * szPath = hb_strdup( s + 1 );
|
||||
|
||||
hb_comp_pOutPath = hb_fsFNameSplit( szPath );
|
||||
hb_xfree( szPath );
|
||||
}
|
||||
break;
|
||||
|
||||
/* Added for preprocessor needs */
|
||||
case 'p':
|
||||
case 'P':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bPPO = 0;
|
||||
else
|
||||
{
|
||||
char * szPath = hb_strdup( s + 1 );
|
||||
hb_comp_pPpoPath = hb_fsFNameSplit( szPath );
|
||||
hb_xfree( szPath );
|
||||
|
||||
hb_comp_bPPO = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
case 'Q':
|
||||
if( *( s + 1 ) == '0' )
|
||||
hb_comp_bLogo = FALSE;
|
||||
|
||||
hb_comp_bQuiet = TRUE;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
case 'R':
|
||||
if( *( s + 1 ) == '=' )
|
||||
{
|
||||
int iOverflow;
|
||||
int iCycles = hb_strValInt( s + 2, &iOverflow );
|
||||
if( ! iOverflow && iCycles > 0 )
|
||||
hb_pp_MaxTranslateCycles = (unsigned int)iCycles;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* TODO: Implement this switch */
|
||||
printf( "Not yet supported command line option: %s\n", s );
|
||||
}
|
||||
break;
|
||||
|
||||
case 's':
|
||||
case 'S':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bSyntaxCheckOnly = FALSE;
|
||||
else
|
||||
hb_comp_bSyntaxCheckOnly = TRUE;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
case 'T':
|
||||
/* TODO: Implement this switch */
|
||||
printf( "Not yet supported command line option: %s\n", s );
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
case 'U':
|
||||
if ( s[1] && toupper( s[1] ) == 'N'
|
||||
&& s[2] && toupper( s[2] ) == 'D'
|
||||
&& s[3] && toupper( s[3] ) == 'E'
|
||||
&& s[4] && toupper( s[4] ) == 'F'
|
||||
&& s[5] == ':' )
|
||||
{
|
||||
/* NOTE: Ignore these -undef: switches will be processed separately */
|
||||
break;
|
||||
}
|
||||
hb_pp_STD_CH = hb_strdup( s + 1 );
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
case 'V':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bForceMemvars = FALSE;
|
||||
else
|
||||
hb_comp_bForceMemvars = TRUE;
|
||||
break;
|
||||
|
||||
case 'w':
|
||||
case 'W':
|
||||
hb_comp_iWarnings = 1;
|
||||
if( s[ 1 ] )
|
||||
{ /*there is -w<0,1,2,3> probably */
|
||||
hb_comp_iWarnings = s[ 1 ] - '0';
|
||||
if( hb_comp_iWarnings < 0 || hb_comp_iWarnings > 4 )
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
case 'X':
|
||||
{
|
||||
unsigned int i = 0;
|
||||
char * szPrefix = hb_strdup( s + 1 );
|
||||
while( i < strlen( szPrefix ) && !HB_ISOPTSEP( szPrefix[ i ] ) )
|
||||
i++;
|
||||
szPrefix[ i ] = '\0';
|
||||
case 'l':
|
||||
case 'L':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bLineNumbers = TRUE;
|
||||
else
|
||||
hb_comp_bLineNumbers = FALSE;
|
||||
break;
|
||||
|
||||
if( strlen( szPrefix ) == 0 )
|
||||
sprintf( szPrefix, "%08lX_", PackDateTime() );
|
||||
case 'm':
|
||||
case 'M':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bAutoOpen = TRUE;
|
||||
else
|
||||
hb_comp_bAutoOpen = FALSE;
|
||||
break;
|
||||
|
||||
strncpy( hb_comp_szPrefix, szPrefix, 16 );
|
||||
hb_comp_szPrefix[ 16 ] = '\0';
|
||||
strcat( hb_comp_szPrefix, "_" );
|
||||
case 'n':
|
||||
case 'N':
|
||||
/*
|
||||
-n1 no start up procedure and no implicit start up procedure
|
||||
*/
|
||||
if( *( s + 1 ) == '1' )
|
||||
{
|
||||
hb_comp_bStartProc = FALSE;
|
||||
hb_comp_bNoStartUp = TRUE;
|
||||
}
|
||||
/*
|
||||
-n or -n0 no implicit start up procedure
|
||||
*/
|
||||
else if ( ( *( s + 1 ) == '0' ) || ( *( s + 1 ) == '\0' ) )
|
||||
hb_comp_bStartProc = FALSE;
|
||||
/*
|
||||
-n- ceates implicit start up procedure
|
||||
*/
|
||||
else if( *( s + 1 ) == '-' )
|
||||
hb_comp_bStartProc = TRUE;
|
||||
/*
|
||||
invalid command
|
||||
*/
|
||||
else
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
break;
|
||||
|
||||
hb_xfree( szPrefix );
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
case 'O':
|
||||
{
|
||||
char * szPath = hb_strdup( s + 1 );
|
||||
|
||||
hb_comp_pOutPath = hb_fsFNameSplit( szPath );
|
||||
hb_xfree( szPath );
|
||||
}
|
||||
break;
|
||||
|
||||
/* Added for preprocessor needs */
|
||||
case 'p':
|
||||
case 'P':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bPPO = 0;
|
||||
else
|
||||
{
|
||||
char * szPath = hb_strdup( s + 1 );
|
||||
hb_comp_pPpoPath = hb_fsFNameSplit( szPath );
|
||||
hb_xfree( szPath );
|
||||
|
||||
hb_comp_bPPO = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'q':
|
||||
case 'Q':
|
||||
if( *( s + 1 ) == '0' )
|
||||
hb_comp_bLogo = FALSE;
|
||||
|
||||
hb_comp_bQuiet = TRUE;
|
||||
break;
|
||||
|
||||
case 'r':
|
||||
case 'R':
|
||||
if( *( s + 1 ) == '=' )
|
||||
{
|
||||
int iOverflow;
|
||||
int iCycles = hb_strValInt( s + 2, &iOverflow );
|
||||
if( ! iOverflow && iCycles > 0 )
|
||||
hb_pp_MaxTranslateCycles = (unsigned int)iCycles;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* TODO: Implement this switch */
|
||||
printf( "Not yet supported command line option: %s\n", s );
|
||||
}
|
||||
break;
|
||||
|
||||
case 's':
|
||||
case 'S':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bSyntaxCheckOnly = FALSE;
|
||||
else
|
||||
hb_comp_bSyntaxCheckOnly = TRUE;
|
||||
break;
|
||||
|
||||
case 't':
|
||||
case 'T':
|
||||
/* TODO: Implement this switch */
|
||||
printf( "Not yet supported command line option: %s\n", s );
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
case 'U':
|
||||
if ( s[1] && toupper( s[1] ) == 'N'
|
||||
&& s[2] && toupper( s[2] ) == 'D'
|
||||
&& s[3] && toupper( s[3] ) == 'E'
|
||||
&& s[4] && toupper( s[4] ) == 'F'
|
||||
&& s[5] == ':' )
|
||||
{
|
||||
/* NOTE: Ignore these -undef: switches will be processed separately */
|
||||
break;
|
||||
}
|
||||
hb_pp_STD_CH = hb_strdup( s + 1 );
|
||||
break;
|
||||
|
||||
case 'v':
|
||||
case 'V':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bForceMemvars = FALSE;
|
||||
else
|
||||
hb_comp_bForceMemvars = TRUE;
|
||||
break;
|
||||
|
||||
case 'w':
|
||||
case 'W':
|
||||
hb_comp_iWarnings = 1;
|
||||
if( s[ 1 ] )
|
||||
{ /*there is -w<0,1,2,3> probably */
|
||||
hb_comp_iWarnings = s[ 1 ] - '0';
|
||||
if( hb_comp_iWarnings < 0 || hb_comp_iWarnings > 4 )
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
}
|
||||
break;
|
||||
|
||||
case 'x':
|
||||
case 'X':
|
||||
{
|
||||
unsigned int i = 0;
|
||||
char * szPrefix = hb_strdup( s + 1 );
|
||||
while( i < strlen( szPrefix ) && !HB_ISOPTSEP( szPrefix[ i ] ) )
|
||||
i++;
|
||||
szPrefix[ i ] = '\0';
|
||||
|
||||
if( strlen( szPrefix ) == 0 )
|
||||
sprintf( szPrefix, "%08lX_", PackDateTime() );
|
||||
|
||||
strncpy( hb_comp_szPrefix, szPrefix, 16 );
|
||||
hb_comp_szPrefix[ 16 ] = '\0';
|
||||
strcat( hb_comp_szPrefix, "_" );
|
||||
|
||||
hb_xfree( szPrefix );
|
||||
}
|
||||
break;
|
||||
|
||||
#ifdef YYDEBUG
|
||||
case 'y':
|
||||
case 'Y':
|
||||
yydebug = TRUE;
|
||||
break;
|
||||
case 'y':
|
||||
case 'Y':
|
||||
yydebug = TRUE;
|
||||
break;
|
||||
#endif
|
||||
|
||||
case 'z':
|
||||
case 'Z':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bShortCuts = TRUE;
|
||||
else
|
||||
hb_comp_bShortCuts = FALSE;
|
||||
break;
|
||||
case 'z':
|
||||
case 'Z':
|
||||
if( *( s + 1 ) == '-' )
|
||||
hb_comp_bShortCuts = TRUE;
|
||||
else
|
||||
hb_comp_bShortCuts = FALSE;
|
||||
break;
|
||||
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
break;
|
||||
default:
|
||||
hb_compGenError( hb_comp_szErrors, 'F', HB_COMP_ERR_BADOPTION, s, NULL );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,9 +184,8 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
|
||||
fprintf( yyc, "{ \"%s\", {", pSym->szName );
|
||||
|
||||
if( pSym->cScope & HB_FS_STATIC )
|
||||
{
|
||||
fprintf( yyc, "HB_FS_STATIC" );
|
||||
}
|
||||
|
||||
else if( pSym->cScope & HB_FS_INIT )
|
||||
fprintf( yyc, "HB_FS_INIT" );
|
||||
|
||||
@@ -199,10 +198,10 @@ void hb_compGenCCode( PHB_FNAME pFileName ) /* generates the C language ou
|
||||
if( pSym->cScope & VS_MEMVAR )
|
||||
fprintf( yyc, " | HB_FS_MEMVAR" );
|
||||
|
||||
if( ( pSym->cScope != HB_FS_MESSAGE ) && ( pSym->cScope & HB_FS_MESSAGE ) ) /* only for non public symbols */
|
||||
if( pSym->cScope & HB_FS_MESSAGE )
|
||||
fprintf( yyc, " | HB_FS_MESSAGE" );
|
||||
|
||||
if ( ( pSym->cScope & HB_FS_FIRST ) && ( ! hb_comp_bNoStartUp ) )
|
||||
if( ( pSym->cScope & HB_FS_FIRST ) && ( ! hb_comp_bNoStartUp ) )
|
||||
fprintf( yyc, " | HB_FS_FIRST" );
|
||||
|
||||
/* specify the function address if it is a defined function or an
|
||||
|
||||
@@ -974,11 +974,11 @@ static HB_GENC_FUNC( hb_p_pushlonglong )
|
||||
|
||||
HB_GENC_LABEL();
|
||||
|
||||
iSkip = hb_gencc_checkNumAhead( lVal, pFunc, lPCodePos + 9, cargo );
|
||||
iSkip = hb_gencc_checkNumAhead( llVal, pFunc, lPCodePos + 9, cargo );
|
||||
|
||||
if( iSkip == 0 )
|
||||
{
|
||||
fprintf( cargo->yyc, "\thb_xvmPushLong( %ldL );\n", ( long ) lVal );
|
||||
fprintf( cargo->yyc, "\thb_xvmPushLong( %ldL );\n", ( long ) llVal );
|
||||
}
|
||||
return 9 + iSkip;
|
||||
#else
|
||||
|
||||
@@ -195,7 +195,7 @@ void hb_compGenILCode( PHB_FNAME pFileName ) /* generates the IL output */
|
||||
// if( pSym->cScope & VS_MEMVAR )
|
||||
// fprintf( yyc, " | HB_FS_MEMVAR" );
|
||||
//
|
||||
// if( ( pSym->cScope != HB_FS_MESSAGE ) && ( pSym->cScope & HB_FS_MESSAGE ) ) /* only for non public symbols */
|
||||
// if( pSym->cScope & HB_FS_MESSAGE )
|
||||
// fprintf( yyc, " | HB_FS_MESSAGE" );
|
||||
//
|
||||
// if ( ( pSym->cScope & HB_FS_FIRST ) && ( ! hb_comp_bNoStartUp ) )
|
||||
|
||||
@@ -82,22 +82,16 @@ void hb_compGenPortObj( PHB_FNAME pFileName )
|
||||
{
|
||||
fputs( pSym->szName, yyc );
|
||||
fputc( 0, yyc );
|
||||
if( pSym->cScope != HB_FS_MESSAGE )
|
||||
fputc( pSym->cScope, yyc );
|
||||
else
|
||||
fputc( 0, yyc );
|
||||
fputc( pSym->cScope, yyc );
|
||||
|
||||
/* specify the function address if it is a defined function or a
|
||||
external called function */
|
||||
if( hb_compFunctionFind( pSym->szName ) ) /* is it a defined function ? */
|
||||
fputc( SYM_FUNC, yyc );
|
||||
else if( hb_compFunCallFind( pSym->szName ) )
|
||||
fputc( SYM_EXTERN, yyc );
|
||||
else
|
||||
{
|
||||
if( hb_compFunCallFind( pSym->szName ) )
|
||||
fputc( SYM_EXTERN, yyc );
|
||||
else
|
||||
fputc( SYM_NOLINK, yyc );
|
||||
}
|
||||
fputc( SYM_NOLINK, yyc );
|
||||
pSym = pSym->pNext;
|
||||
}
|
||||
|
||||
|
||||
@@ -95,10 +95,7 @@ void hb_compGenJava( PHB_FNAME pFileName )
|
||||
{
|
||||
hb_fputs( pSym->szName );
|
||||
hb_fputc( 0 );
|
||||
if( pSym->cScope != HB_FS_MESSAGE )
|
||||
hb_fputc( pSym->cScope );
|
||||
else
|
||||
hb_fputc( 0 );
|
||||
hb_fputc( pSym->cScope );
|
||||
|
||||
/* specify the function address if it is a defined function or a
|
||||
external called function */
|
||||
|
||||
@@ -3066,10 +3066,10 @@ void hb_compGenVarPCode( BYTE bPCode, char * szVarName )
|
||||
void hb_compGenMessage( char * szMsgName ) /* sends a message to an object */
|
||||
{
|
||||
USHORT wSym;
|
||||
PCOMSYMBOL pSym = hb_compSymbolFind( szMsgName, &wSym, HB_SYM_FUNCNAME );
|
||||
PCOMSYMBOL pSym = hb_compSymbolFind( szMsgName, &wSym, HB_SYM_MSGNAME );
|
||||
|
||||
if( ! pSym ) /* the symbol was not found on the symbol table */
|
||||
pSym = hb_compSymbolAdd( szMsgName, &wSym, HB_SYM_FUNCNAME );
|
||||
pSym = hb_compSymbolAdd( szMsgName, &wSym, HB_SYM_MSGNAME );
|
||||
pSym->cScope |= HB_FS_MESSAGE;
|
||||
hb_compGenPCode3( HB_P_MESSAGE, HB_LOBYTE( wSym ), HB_HIBYTE( wSym ), ( BOOL ) 1 );
|
||||
}
|
||||
|
||||
@@ -402,7 +402,7 @@ HB_EXPORT int hb_rddRegister( char * szDriver, USHORT uiType )
|
||||
memset( pRddNewNode, 0, sizeof( RDDNODE ) );
|
||||
|
||||
/* Fill the new RDD node */
|
||||
strncat( pRddNewNode->szName, szDriver, HARBOUR_MAX_RDD_DRIVERNAME_LENGTH );
|
||||
hb_strncpy( pRddNewNode->szName, szDriver, HARBOUR_MAX_RDD_DRIVERNAME_LENGTH );
|
||||
pRddNewNode->uiType = uiType;
|
||||
pRddNewNode->rddID = s_uiRddMax;
|
||||
|
||||
@@ -606,7 +606,7 @@ static AREAP hb_rddNewAreaNode( LPRDDNODE pRddNode, USHORT uiRddID )
|
||||
{
|
||||
AREAP pArea;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_rddNewAreaNode(%p %d)", pRddNode, uiRddID));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_rddNewAreaNode(%p,%hu)", pRddNode, uiRddID));
|
||||
|
||||
if( pRddNode->uiAreaSize == 0 ) /* Calculate the size of WorkArea */
|
||||
{
|
||||
@@ -615,6 +615,7 @@ static AREAP hb_rddNewAreaNode( LPRDDNODE pRddNode, USHORT uiRddID )
|
||||
pArea = ( AREAP ) hb_xgrab( sizeof( AREA ) );
|
||||
memset( pArea, 0, sizeof( AREA ) );
|
||||
pArea->lprfsHost = &pRddNode->pTable;
|
||||
pArea->rddID = uiRddID;
|
||||
|
||||
/* Need more space? */
|
||||
SELF_STRUCTSIZE( pArea, &uiSize );
|
||||
@@ -623,6 +624,7 @@ static AREAP hb_rddNewAreaNode( LPRDDNODE pRddNode, USHORT uiRddID )
|
||||
pArea = ( AREAP ) hb_xrealloc( pArea, uiSize );
|
||||
memset( pArea, 0, uiSize );
|
||||
pArea->lprfsHost = &pRddNode->pTable;
|
||||
pArea->rddID = uiRddID;
|
||||
}
|
||||
|
||||
pRddNode->uiAreaSize = uiSize; /* Update the size of WorkArea */
|
||||
@@ -632,9 +634,9 @@ static AREAP hb_rddNewAreaNode( LPRDDNODE pRddNode, USHORT uiRddID )
|
||||
pArea = ( AREAP ) hb_xgrab( pRddNode->uiAreaSize );
|
||||
memset( pArea, 0, pRddNode->uiAreaSize );
|
||||
pArea->lprfsHost = &pRddNode->pTable;
|
||||
pArea->rddID = uiRddID;
|
||||
}
|
||||
|
||||
pArea->rddID = uiRddID;
|
||||
SELF_NEW( pArea );
|
||||
|
||||
return pArea;
|
||||
@@ -869,8 +871,8 @@ HB_EXPORT USHORT hb_rddInsertAreaNode( char *szDriver )
|
||||
}
|
||||
s_WaList[ uiWaPos ] = hb_rddNewAreaNode( pRddNode, uiRddID );
|
||||
s_WaNums[ s_uiCurrArea ] = uiWaPos;
|
||||
s_WaList[ uiWaPos ]->uiArea = s_uiCurrArea;
|
||||
s_pCurrArea = s_WaList[ uiWaPos ];
|
||||
s_pCurrArea->uiArea = s_uiCurrArea;
|
||||
|
||||
UNLOCK_AREA
|
||||
|
||||
@@ -1878,7 +1880,7 @@ HB_FUNC( __DBLOCATE )
|
||||
dbScopeInfo.fIncludeDeleted = TRUE;
|
||||
dbScopeInfo.fLast = FALSE;
|
||||
dbScopeInfo.fIgnoreDuplicates = FALSE;
|
||||
dbScopeInfo.fBackword = FALSE;
|
||||
dbScopeInfo.fBackward = FALSE;
|
||||
|
||||
if ( SELF_SETLOCATE( pArea, &dbScopeInfo ) == SUCCESS )
|
||||
{
|
||||
@@ -2188,7 +2190,7 @@ HB_FUNC( DBTABLEEXT )
|
||||
if( pRddNode )
|
||||
{
|
||||
pArea = hb_rddNewAreaNode( pRddNode, uiRddID );
|
||||
if ( pArea )
|
||||
if( pArea )
|
||||
{
|
||||
SELF_INFO( ( AREAP ) pArea, DBI_TABLEEXT, pItem );
|
||||
SELF_RELEASE( pArea );
|
||||
@@ -2596,7 +2598,7 @@ HB_FUNC( ORDBAGEXT )
|
||||
if( pRddNode )
|
||||
{
|
||||
pArea = hb_rddNewAreaNode( pRddNode, uiRddID );
|
||||
if ( pArea )
|
||||
if( pArea )
|
||||
{
|
||||
SELF_ORDINFO( pArea, DBOI_BAGEXT, &pInfo );
|
||||
SELF_RELEASE( pArea );
|
||||
@@ -2619,9 +2621,9 @@ HB_FUNC( ORDBAGNAME )
|
||||
|
||||
if( pArea )
|
||||
{
|
||||
if ( ISNUM(1) || ISNIL(1) )
|
||||
if( ISNUM(1) || ISNIL(1) )
|
||||
{
|
||||
if ( hb_parni(1) == 0 || ISNIL(1) ) /* if NIL or ask for 0, use current order */
|
||||
if( hb_parni(1) == 0 || ISNIL(1) ) /* if NIL or ask for 0, use current order */
|
||||
pOrderInfo.itmOrder = NULL;
|
||||
else
|
||||
pOrderInfo.itmOrder = hb_param( 1, HB_IT_NUMERIC );
|
||||
@@ -3782,7 +3784,7 @@ HB_FUNC( __DBARRANGE )
|
||||
dbSortInfo.dbtri.dbsci.fIgnoreFilter =
|
||||
dbSortInfo.dbtri.dbsci.fLast =
|
||||
dbSortInfo.dbtri.dbsci.fIgnoreDuplicates =
|
||||
dbSortInfo.dbtri.dbsci.fBackword = FALSE;
|
||||
dbSortInfo.dbtri.dbsci.fBackward = FALSE;
|
||||
dbSortInfo.dbtri.dbsci.fIncludeDeleted = TRUE;
|
||||
|
||||
pFields = hb_param( 8, HB_IT_ARRAY );
|
||||
@@ -4339,7 +4341,7 @@ static ERRCODE hb_rddTransRecords( AREAP pArea,
|
||||
dbTransInfo.dbsci.fIncludeDeleted = TRUE;
|
||||
dbTransInfo.dbsci.fLast = FALSE;
|
||||
dbTransInfo.dbsci.fIgnoreDuplicates = FALSE;
|
||||
dbTransInfo.dbsci.fBackword = FALSE;
|
||||
dbTransInfo.dbsci.fBackward = FALSE;
|
||||
|
||||
errCode = SELF_TRANS( dbTransInfo.lpaSource, &dbTransInfo );
|
||||
}
|
||||
|
||||
@@ -1761,6 +1761,7 @@ static ULONG hb_fptStoreSixItem( FPTAREAP pArea, PHB_ITEM pItem, BYTE ** bBufPtr
|
||||
}
|
||||
break;
|
||||
default:
|
||||
HB_PUT_LE_UINT16( &(*bBufPtr)[0], FPTIT_SIX_NIL );
|
||||
*bBufPtr += SIX_ITEM_BUFSIZE;
|
||||
break;
|
||||
}
|
||||
@@ -1844,6 +1845,10 @@ static ERRCODE hb_fptReadSixItem( FPTAREAP pArea, BYTE ** pbMemoBuf, BYTE * bBuf
|
||||
ulLen = 0;
|
||||
break;
|
||||
|
||||
case FPTIT_SIX_NIL:
|
||||
hb_itemClear( pItem );
|
||||
break;
|
||||
|
||||
default:
|
||||
errCode = EDBF_CORRUPT;
|
||||
hb_itemClear( pItem );
|
||||
@@ -2936,17 +2941,25 @@ static ERRCODE hb_fptPutMemo( FPTAREAP pArea, USHORT uiIndex, PHB_ITEM pItem,
|
||||
}
|
||||
else if( pArea->uiMemoVersion == DB_MEMOVER_SIX )
|
||||
{
|
||||
ulSize = hb_fptCountSixItemLength( pArea, pItem, &ulArrayCount );
|
||||
if ( ulSize > 0 )
|
||||
if( HB_IS_NIL( pItem ) )
|
||||
{
|
||||
bBufPtr = bBufAlloc = ( BYTE * ) hb_xgrab( ulSize );
|
||||
hb_fptStoreSixItem( pArea, pItem, &bBufPtr );
|
||||
ulType = ( ULONG ) HB_GET_LE_UINT16( bBufAlloc );
|
||||
bBufPtr = bBufAlloc;
|
||||
ulType = FPTIT_SIX_NIL;
|
||||
ulSize = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return EDBF_DATATYPE;
|
||||
ulSize = hb_fptCountSixItemLength( pArea, pItem, &ulArrayCount );
|
||||
if ( ulSize > 0 )
|
||||
{
|
||||
bBufPtr = bBufAlloc = ( BYTE * ) hb_xgrab( ulSize );
|
||||
hb_fptStoreSixItem( pArea, pItem, &bBufPtr );
|
||||
ulType = ( ULONG ) HB_GET_LE_UINT16( bBufAlloc );
|
||||
bBufPtr = bBufAlloc;
|
||||
}
|
||||
else
|
||||
{
|
||||
return EDBF_DATATYPE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ( pArea->uiMemoVersion == DB_MEMOVER_FLEX )
|
||||
|
||||
@@ -1673,7 +1673,7 @@ HB_FUNC( HS_INDEX )
|
||||
hb_parni( 7 ) ) );
|
||||
}
|
||||
|
||||
/* hs_Add( <hIndex>, <xExpr>, [lDel] ) -> nVal >= 1 (RECNO), nVal < 0 (ERROR CODE)
|
||||
/* hs_Add( <hIndex>, [<xExpr>], [lDel] ) -> nVal >= 1 (RECNO), nVal < 0 (ERROR CODE)
|
||||
Adds a text string entry to a HiPer-SEEK index file */
|
||||
HB_FUNC( HS_ADD )
|
||||
{
|
||||
@@ -1683,7 +1683,8 @@ HB_FUNC( HS_ADD )
|
||||
int iRetVal;
|
||||
|
||||
iRetVal = hb_hsxAdd( hb_parni( 1 ), &ulRecNo,
|
||||
hb_param( 2, HB_IT_ANY ), hb_parl( 3 ) );
|
||||
hb_param( 2, HB_IT_BLOCK | HB_IT_STRING ),
|
||||
hb_parl( 3 ) );
|
||||
|
||||
if ( iRetVal == HSX_SUCCESS )
|
||||
hb_retnint( ulRecNo );
|
||||
@@ -1694,13 +1695,14 @@ HB_FUNC( HS_ADD )
|
||||
hb_retni( HSX_BADPARMS );
|
||||
}
|
||||
|
||||
/* hs_Replace( <hIndex>, <xExpr>, <nRecNo>, [lDel] ) -> nVal = 1 (OK), nVal < 0 (ERROR CODE)
|
||||
/* hs_Replace( <hIndex>, [<xExpr>], <nRecNo>, [lDel] ) -> nVal = 1 (OK), nVal < 0 (ERROR CODE)
|
||||
Replaces current HiPer-SEEK index entry with a new value */
|
||||
HB_FUNC( HS_REPLACE )
|
||||
{
|
||||
if ( hb_param( 1, HB_IT_NUMERIC ) && hb_param( 3, HB_IT_NUMERIC ) )
|
||||
hb_retni( hb_hsxReplace( hb_parni( 1 ), hb_parnl( 3 ),
|
||||
hb_param( 2, HB_IT_ANY ), hb_parl( 4 ) ) );
|
||||
hb_param( 2, HB_IT_BLOCK | HB_IT_STRING ),
|
||||
hb_parl( 4 ) ) );
|
||||
else
|
||||
hb_retni( HSX_BADPARMS );
|
||||
}
|
||||
@@ -1847,7 +1849,8 @@ HB_FUNC( HS_FILTER )
|
||||
else
|
||||
{
|
||||
iResult = hb_hsxFilter( iHandle, szText, ulLen,
|
||||
hb_param( 3, HB_IT_ANY ), HSX_VERIFY_PHRASE );
|
||||
hb_param( 3, HB_IT_ANY ),
|
||||
HSX_VERIFY_PHRASE );
|
||||
}
|
||||
}
|
||||
if ( iResult == HSX_SUCCESS )
|
||||
|
||||
@@ -811,9 +811,10 @@ ERRCODE hb_waStructSize( AREAP pArea, USHORT * uiSize )
|
||||
ERRCODE hb_waSysName( AREAP pArea, BYTE * pBuffer )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_waSysName(%p, %p)", pArea, pBuffer));
|
||||
HB_SYMBOL_UNUSED( pArea );
|
||||
|
||||
pBuffer[ 0 ] = 0;
|
||||
hb_strncpy( ( char * ) pBuffer, SELF_RDDNODE( pArea )->szName,
|
||||
HARBOUR_MAX_RDD_DRIVERNAME_LENGTH );
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
@@ -1037,8 +1038,8 @@ ERRCODE hb_waTransRec( AREAP pArea, LPDBTRANSINFO pTransInfo )
|
||||
}
|
||||
else
|
||||
{
|
||||
PHB_ITEM pItem = hb_itemNew( NULL );
|
||||
LPDBTRANSITEM pTransItem;
|
||||
PHB_ITEM pItem;
|
||||
USHORT uiCount;
|
||||
|
||||
/* Append a new record */
|
||||
@@ -1046,6 +1047,7 @@ ERRCODE hb_waTransRec( AREAP pArea, LPDBTRANSINFO pTransInfo )
|
||||
if( errCode != SUCCESS )
|
||||
return errCode;
|
||||
|
||||
pItem = hb_itemNew( NULL );
|
||||
pTransItem = pTransInfo->lpTransItems;
|
||||
for( uiCount = pTransInfo->uiItemCount; uiCount; --uiCount )
|
||||
{
|
||||
@@ -1460,7 +1462,7 @@ ERRCODE hb_waSetLocate( AREAP pArea, LPDBSCOPEINFO pScopeInfo )
|
||||
pArea->dbsi.fIncludeDeleted = pScopeInfo->fIncludeDeleted;
|
||||
pArea->dbsi.fLast = pScopeInfo->fLast;
|
||||
pArea->dbsi.fIgnoreDuplicates = pScopeInfo->fIgnoreDuplicates;
|
||||
pArea->dbsi.fBackword = pScopeInfo->fBackword;
|
||||
pArea->dbsi.fBackward = pScopeInfo->fBackward;
|
||||
pArea->dbsi.fOptimized = pScopeInfo->fOptimized;
|
||||
|
||||
return SUCCESS;
|
||||
|
||||
@@ -538,7 +538,7 @@ HB_EXPORT ULONG hb_cdpUTF8ToStrn( PHB_CODEPAGE cdp,
|
||||
BYTE * pDst, ULONG ulDst )
|
||||
{
|
||||
ULONG ulS, ulD;
|
||||
USHORT uc;
|
||||
USHORT uc = 0;
|
||||
int n = 0;
|
||||
|
||||
for( ulS = ulD = 0; ulS < ulSrc; ++ulS )
|
||||
|
||||
@@ -58,10 +58,14 @@
|
||||
|
||||
/* NOTE: DO() as a function is a Harbour extension. [vszakats] */
|
||||
|
||||
/* NOTE: use hb_stackItemFromBase( uiParam ) instead of
|
||||
* hb_param( uiParam, HB_IT_ANY ) to keep references to
|
||||
* parameters passed by refeence. [druzus]
|
||||
*/
|
||||
|
||||
HB_FUNC( DO )
|
||||
{
|
||||
USHORT uiPCount = hb_pcount();
|
||||
USHORT uiParam;
|
||||
|
||||
if( uiPCount > 0 )
|
||||
{
|
||||
@@ -101,8 +105,9 @@ HB_FUNC( DO )
|
||||
|
||||
if( uiPCount > 0 )
|
||||
{
|
||||
USHORT uiParam;
|
||||
for( uiParam = 2; uiParam <= uiPCount; uiParam++ )
|
||||
hb_vmPush( hb_param( uiParam, HB_IT_ANY ) );
|
||||
hb_vmPush( hb_stackItemFromBase( uiParam ) );
|
||||
hb_vmDo( uiPCount - 1 );
|
||||
}
|
||||
else
|
||||
|
||||
@@ -235,7 +235,7 @@ HB_FUNC( ASORT )
|
||||
{
|
||||
PHB_ITEM pArray = hb_param( 1, HB_IT_ARRAY );
|
||||
|
||||
if( pArray && ! hb_arrayIsObject( pArray ) )
|
||||
if( pArray && ! hb_arrayIsObject( pArray ) )
|
||||
{
|
||||
ULONG ulStart = hb_parnl( 2 );
|
||||
ULONG ulCount = hb_parnl( 3 );
|
||||
|
||||
@@ -206,28 +206,13 @@ static PHB_ITEM hb_clsInst( USHORT uiClass );
|
||||
static void hb_clsScope( PHB_ITEM pObject, PMETHOD pMethod );
|
||||
#endif
|
||||
static ULONG hb_cls_MsgToNum( PHB_DYNS pMsg );
|
||||
BOOL hb_clsIsParent( USHORT uiClass, char * szParentName );
|
||||
static void hb_clsDictRealloc( PCLASS pClass );
|
||||
static void hb_clsRelease( PCLASS );
|
||||
void hb_clsReleaseAll( void );
|
||||
|
||||
char * hb_objGetClsName( PHB_ITEM pObject );
|
||||
char * hb_objGetRealClsName( PHB_ITEM pObject, char * szName );
|
||||
PHB_FUNC hb_objGetMethod( PHB_ITEM, PHB_SYMB );
|
||||
PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc );
|
||||
|
||||
#ifdef _MSC_VER
|
||||
extern "C" {
|
||||
#endif
|
||||
PMETHOD hb_objGetpMethod( PHB_ITEM, PHB_SYMB );
|
||||
#ifdef _MSC_VER
|
||||
}
|
||||
#endif
|
||||
|
||||
BOOL hb_objHasMsg( PHB_ITEM pObject, char * szString );
|
||||
|
||||
void * hb_mthRequested( void );
|
||||
void hb_mthAddTime( void * pMethod, ULONG ulClockTicks );
|
||||
static PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc );
|
||||
#ifdef HB_CLS_ENFORCERO
|
||||
static PMETHOD hb_objGetpMethod( PHB_ITEM, PHB_SYMB );
|
||||
#endif
|
||||
|
||||
static HARBOUR hb___msgClsH( void );
|
||||
static HARBOUR hb___msgClsName( void );
|
||||
@@ -599,7 +584,7 @@ BOOL hb_clsIsParent( USHORT uiClass, char * szParentName )
|
||||
if( strcmp( pClass->szName, szParentName ) == 0 )
|
||||
return TRUE;
|
||||
|
||||
for( uiAt = 0; uiAt < uiLimit; uiAt++)
|
||||
for( uiAt = 0; uiAt < uiLimit; uiAt++ )
|
||||
{
|
||||
if( ( pClass->pMethods[ uiAt ].uiScope & HB_OO_CLSTP_CLASS ) == HB_OO_CLSTP_CLASS )
|
||||
{
|
||||
@@ -822,10 +807,10 @@ char * hb_objGetRealClsName( PHB_ITEM pObject, char * szName )
|
||||
*/
|
||||
PHB_FUNC hb_objGetMethod( PHB_ITEM pObject, PHB_SYMB pMessage )
|
||||
{
|
||||
return hb_objGetMthd( (PHB_ITEM) pObject, (PHB_SYMB) pMessage, TRUE ) ;
|
||||
return hb_objGetMthd( (PHB_ITEM) pObject, (PHB_SYMB) pMessage, TRUE );
|
||||
}
|
||||
|
||||
PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc )
|
||||
static PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc )
|
||||
{
|
||||
USHORT uiClass;
|
||||
PHB_DYNS pMsg = pMessage->pDynSym;
|
||||
@@ -915,7 +900,21 @@ PHB_FUNC hb_objGetMthd( PHB_ITEM pObject, PHB_SYMB pMessage, BOOL lAllowErrFunc
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PMETHOD hb_objGetpMethod( PHB_ITEM pObject, PHB_SYMB pMessage )
|
||||
static PHB_FUNC hb_objFuncParam( int iParam )
|
||||
{
|
||||
PHB_ITEM pItem = hb_param( iParam, HB_IT_ANY );
|
||||
|
||||
if( HB_IS_SYMBOL( pItem ) )
|
||||
return pItem->item.asSymbol.value->value.pFunPtr;
|
||||
|
||||
else if( HB_IS_POINTER( pItem ) )
|
||||
return ( PHB_FUNC ) pItem->item.asPointer.value;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#ifdef HB_CLS_ENFORCERO
|
||||
static PMETHOD hb_objGetpMethod( PHB_ITEM pObject, PHB_SYMB pMessage )
|
||||
{
|
||||
USHORT uiClass;
|
||||
PHB_DYNS pMsg = pMessage->pDynSym;
|
||||
@@ -947,7 +946,7 @@ PMETHOD hb_objGetpMethod( PHB_ITEM pObject, PHB_SYMB pMessage )
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/*
|
||||
* <bool> = hb_objHasMsg( <pObject>, <szString> )
|
||||
@@ -1131,7 +1130,7 @@ HB_FUNC( __CLSADDMSG )
|
||||
{
|
||||
case HB_OO_MSG_METHOD:
|
||||
|
||||
pNewMeth->pFunction = ( PHB_FUNC ) hb_parptr( 3 );
|
||||
pNewMeth->pFunction = hb_objFuncParam( 3 );
|
||||
pNewMeth->uiScope = uiScope;
|
||||
pNewMeth->uiData = 0;
|
||||
break;
|
||||
@@ -1221,7 +1220,7 @@ HB_FUNC( __CLSADDMSG )
|
||||
|
||||
case HB_OO_MSG_ONERROR:
|
||||
|
||||
pClass->pFunError = ( PHB_FUNC ) hb_parptr( 3 );
|
||||
pClass->pFunError = hb_objFuncParam( 3 );
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1674,7 +1673,7 @@ HB_FUNC( __CLSMODMSG )
|
||||
}
|
||||
else /* Modify METHOD */
|
||||
{
|
||||
pClass->pMethods[ uiAt ].pFunction = ( PHB_FUNC ) hb_parptr( 3 );
|
||||
pClass->pMethods[ uiAt ].pFunction = hb_objFuncParam( 3 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,24 +95,25 @@ HB_FUNC( HB_LIBFREE )
|
||||
|
||||
HB_FUNC( HB_LIBDO )
|
||||
{
|
||||
char *szName = hb_strupr( hb_strdup( hb_parc( 1 ) ) );
|
||||
PHB_DYNS pDynSym = hb_dynsymFind( hb_strupr( hb_parc( 1 ) ) );
|
||||
|
||||
if( pDynSym )
|
||||
if( hb_parclen( 1 ) > 0 )
|
||||
{
|
||||
USHORT uiPCount = hb_pcount();
|
||||
USHORT uiParam;
|
||||
PHB_DYNS pDynSym = hb_dynsymFindName( hb_parc( 1 ) );
|
||||
|
||||
hb_vmPushSymbol( pDynSym->pSymbol );
|
||||
hb_vmPushNil();
|
||||
|
||||
/* same logic here as from HB_FUNC( EVAL ) */
|
||||
for( uiParam = 2; uiParam <= uiPCount; uiParam++ )
|
||||
if( pDynSym )
|
||||
{
|
||||
hb_vmPush( hb_stackItemFromBase( uiParam ) );
|
||||
}
|
||||
USHORT uiPCount = hb_pcount();
|
||||
USHORT uiParam;
|
||||
|
||||
hb_vmDo( uiPCount - 1 );
|
||||
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 );
|
||||
}
|
||||
}
|
||||
hb_xfree( szName );
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ HB_FUNC( EVAL )
|
||||
/* NOTE: hb_param() function cannot be used for parameter access
|
||||
* because we need to pass the references too.
|
||||
* hb_param() is dereferencing the passed parameters
|
||||
*/
|
||||
*/
|
||||
for( uiParam = 2; uiParam <= uiPCount; uiParam++ )
|
||||
{
|
||||
hb_vmPush( hb_stackItemFromBase( uiParam ) );
|
||||
|
||||
@@ -186,7 +186,7 @@ static void hb_vmPushHBLong( HB_LONG lNumber ); /* pushes a HB_LONG number on
|
||||
static void hb_vmPushIntegerConst( int iNumber ); /* Pushes a int constant (pcode) */
|
||||
#endif
|
||||
static void hb_vmPushNumInt( HB_LONG lNumber ); /* pushes a number on to the stack and decides if it is integer or HB_LONG */
|
||||
extern void hb_vmPushNumType( double dNumber, int iDec, int iType1, int iType2 ); /* pushes a number on to the stack and decides if it is integer, long or double */
|
||||
static void hb_vmPushNumType( double dNumber, int iDec, int iType1, int iType2 ); /* pushes a number on to the stack and decides if it is integer, long or double */
|
||||
static void hb_vmPushStatic( USHORT uiStatic ); /* pushes the containts of a static onto the stack */
|
||||
static void hb_vmPushStaticByRef( USHORT uiStatic ); /* pushes a static by refrence onto the stack */
|
||||
static void hb_vmPushVariable( PHB_SYMB pVarSymb ); /* pushes undeclared variable */
|
||||
@@ -214,9 +214,6 @@ static void hb_vmDoInitFunctions( void ); /* executes all defined PRGs I
|
||||
static void hb_vmDoExitFunctions( void ); /* executes all defined PRGs EXIT functions */
|
||||
static void hb_vmReleaseLocalSymbols( void ); /* releases the memory of the local symbols linked list */
|
||||
|
||||
extern void * hb_mthRequested( void ); /* profiler from classes.c */
|
||||
extern void hb_mthAddTime( void *, ULONG ); /* profiler from classes.c */
|
||||
|
||||
BOOL hb_bProfiler = FALSE; /* profiler status is off */
|
||||
BOOL hb_bTracePrgCalls = FALSE; /* prg tracing is off */
|
||||
ULONG hb_ulOpcodesCalls[ HB_P_LAST_PCODE ]; /* array to profile opcodes calls */
|
||||
@@ -1418,8 +1415,8 @@ HB_EXPORT void hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols )
|
||||
case HB_P_PUSHFIELD:
|
||||
/* It pushes the current value of the given field onto the eval stack
|
||||
*/
|
||||
hb_rddGetFieldValue( ( hb_stackTopItem() ), pSymbols + HB_PCODE_MKUSHORT( &( pCode[ w + 1 ] ) ) );
|
||||
hb_stackPush();
|
||||
hb_rddGetFieldValue( hb_stackItemFromTop( -1 ), pSymbols + HB_PCODE_MKUSHORT( &( pCode[ w + 1 ] ) ) );
|
||||
HB_TRACE(HB_TR_INFO, ("(hb_vmPushField)"));
|
||||
w += 3;
|
||||
break;
|
||||
@@ -1831,8 +1828,8 @@ HB_EXPORT void hb_vmExecute( const BYTE * pCode, PHB_SYMB pSymbols )
|
||||
HB_DYNS_PTR pDynSym = ( HB_DYNS_PTR ) HB_GET_PTR( pCode + w + 1 );
|
||||
/* It pushes the current value of the given field onto the eval stack
|
||||
*/
|
||||
hb_rddGetFieldValue( ( hb_stackTopItem() ), pDynSym->pSymbol );
|
||||
hb_stackPush();
|
||||
hb_rddGetFieldValue( hb_stackItemFromTop( -1 ), pDynSym->pSymbol );
|
||||
HB_TRACE(HB_TR_INFO, ("(hb_vmMPushField)"));
|
||||
w += sizeof( HB_DYNS_PTR ) + 1;
|
||||
break;
|
||||
@@ -2612,8 +2609,11 @@ static void hb_vmFuncPtr( void ) /* pushes a function address pointer. Removes
|
||||
|
||||
if( HB_IS_SYMBOL( pItem ) )
|
||||
{
|
||||
/* do nothing when we will begin to use HB_IT_SYMBOL */
|
||||
#if 1
|
||||
hb_stackPop();
|
||||
hb_vmPushPointer( ( void* ) pItem->item.asSymbol.value->value.pFunPtr );
|
||||
#endif
|
||||
}
|
||||
else
|
||||
hb_errInternal( HB_EI_VMNOTSYMBOL, NULL, "hb_vmFuncPtr()", NULL );
|
||||
@@ -4144,7 +4144,7 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
PHB_FUNC pFunc = NULL;
|
||||
BOOL bDebugPrevState;
|
||||
ULONG ulClock = 0;
|
||||
void *pMethod = NULL;
|
||||
void * pMethod = NULL;
|
||||
BOOL bProfiler = hb_bProfiler; /* because profiler state may change */
|
||||
BOOL bNotHandled = TRUE;
|
||||
|
||||
@@ -4153,8 +4153,8 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
/*
|
||||
printf( "\n VmSend nItems: %i Params: %i Extra %i\n", hb_stack.pPos - hb_stack.pBase, uiParams, hb_vm_aiExtraParams[hb_vm_iExtraParamsIndex - 1] );
|
||||
*/
|
||||
|
||||
s_ulProcLevel++;
|
||||
|
||||
if( hb_vm_iExtraParamsIndex &&
|
||||
HB_IS_SYMBOL( pItem = hb_stackItemFromTop( -( uiParams + hb_vm_aiExtraParams[hb_vm_iExtraParamsIndex - 1] + 2 ) ) ) &&
|
||||
pItem->item.asSymbol.value == hb_vm_apExtraParamsSymbol[hb_vm_iExtraParamsIndex - 1] )
|
||||
@@ -4163,9 +4163,13 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
}
|
||||
|
||||
if( bProfiler )
|
||||
{
|
||||
ulClock = ( ULONG ) clock();
|
||||
}
|
||||
|
||||
/* Poll the console keyboard
|
||||
#ifndef HB_GUI
|
||||
hb_inkeyPoll();
|
||||
#endif
|
||||
*/
|
||||
|
||||
pItem = hb_stackNewFrame( &sStackState, uiParams ); /* procedure name */
|
||||
pSym = pItem->item.asSymbol.value;
|
||||
@@ -4173,16 +4177,14 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
bDebugPrevState = s_bDebugging;
|
||||
s_bDebugging = FALSE;
|
||||
|
||||
/* printf( "Symbol: '%s'\n", pSym->szName ); */
|
||||
|
||||
if( HB_IS_BYREF(pSelf) )
|
||||
if( HB_IS_BYREF( pSelf ) )
|
||||
{
|
||||
/* method of enumerator variable from FOR EACH statement
|
||||
*/
|
||||
HB_ITEM_PTR pRef;
|
||||
|
||||
pRef = hb_itemUnRefRefer( pSelf );
|
||||
if( HB_IS_BYREF(pRef) && pRef->item.asRefer.offset < 0 && pRef->item.asRefer.value >= 0 )
|
||||
if( HB_IS_BYREF( pRef ) && pRef->item.asRefer.offset < 0 && pRef->item.asRefer.value >= 0 )
|
||||
{
|
||||
if( pSym->pDynSym == hb_symEnumIndex.pDynSym )
|
||||
{
|
||||
@@ -4196,7 +4198,7 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
}
|
||||
else if( pSym->pDynSym == hb_symEnumValue.pDynSym )
|
||||
{
|
||||
hb_itemCopy( &hb_stack.Return, hb_itemUnRefOnce(pRef) );
|
||||
hb_itemCopy( &hb_stack.Return, hb_itemUnRefOnce( pRef ) );
|
||||
bNotHandled = FALSE;
|
||||
}
|
||||
}
|
||||
@@ -4207,7 +4209,8 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
|
||||
if( pFunc )
|
||||
{
|
||||
if( bProfiler && pSym->pDynSym ) {
|
||||
if( bProfiler && pSym->pDynSym )
|
||||
{
|
||||
pSym->pDynSym->ulRecurse++;
|
||||
}
|
||||
|
||||
@@ -4221,12 +4224,14 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
pSym->pDynSym->ulCalls++; /* profiler support */
|
||||
|
||||
/* Time spent has to be added only inside topmost call of a recursive function */
|
||||
if ( pSym->pDynSym->ulRecurse == 1 ) {
|
||||
if( pSym->pDynSym->ulRecurse == 1 )
|
||||
{
|
||||
pSym->pDynSym->ulTime += clock() - ulClock; /* profiler support */
|
||||
}
|
||||
}
|
||||
|
||||
if( bProfiler && pSym->pDynSym ) {
|
||||
if( bProfiler && pSym->pDynSym )
|
||||
{
|
||||
pSym->pDynSym->ulRecurse--;
|
||||
}
|
||||
}
|
||||
@@ -4256,8 +4261,8 @@ HB_EXPORT void hb_vmSend( USHORT uiParams )
|
||||
|
||||
if( bNotHandled )
|
||||
{
|
||||
PHB_BASEARRAY pSelfBase = NULL;
|
||||
BOOL lPopSuper = FALSE;
|
||||
PHB_BASEARRAY pSelfBase = NULL;
|
||||
|
||||
if( HB_IS_BLOCK( pSelf ) )
|
||||
{
|
||||
@@ -4731,9 +4736,9 @@ HB_EXPORT void hb_vmPushNumber( double dNumber, int iDec )
|
||||
hb_vmPushNumType( dNumber, iDec, 0, 0 );
|
||||
}
|
||||
|
||||
HB_EXPORT void hb_vmPushNumType( double dNumber, int iDec, int iType1, int iType2 )
|
||||
static void hb_vmPushNumType( double dNumber, int iDec, int iType1, int iType2 )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_vmPushNumber(%lf, %d)", dNumber, iDec));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_vmPushNumType(%lf, %d)", dNumber, iDec));
|
||||
|
||||
if( iDec || iType1 & HB_IT_DOUBLE || iType2 & HB_IT_DOUBLE )
|
||||
hb_vmPushDouble( dNumber, iDec );
|
||||
@@ -5239,7 +5244,7 @@ static void hb_vmPushLocalByRef( SHORT iLocal )
|
||||
* is stored can be no longer placed on the eval stack at the time
|
||||
* of a codeblock evaluation or variable access
|
||||
*/
|
||||
pTop->item.asRefer.BasePtr.block = (hb_stackSelfItem())->item.asBlock.value;
|
||||
pTop->item.asRefer.BasePtr.block = hb_stackSelfItem()->item.asBlock.value;
|
||||
}
|
||||
hb_stackPush();
|
||||
}
|
||||
@@ -6384,8 +6389,8 @@ HB_EXPORT BOOL hb_xvmPushField( PHB_SYMB pSymbol )
|
||||
{
|
||||
HB_TRACE(HB_TR_INFO, ("hb_xvmPushField(%p)", pSymbol));
|
||||
|
||||
hb_rddGetFieldValue( hb_stackTopItem(), pSymbol );
|
||||
hb_stackPush();
|
||||
hb_rddGetFieldValue( hb_stackItemFromTop( -1 ), pSymbol );
|
||||
|
||||
HB_XVM_RETURN
|
||||
}
|
||||
@@ -6899,7 +6904,7 @@ HB_EXPORT void hb_xvmArrayGen( ULONG ulElements )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_xvmArrayGen(%lu)", ulElements));
|
||||
|
||||
hb_vmArrayGen( ulElements );
|
||||
hb_vmArrayGen( ulElements + hb_vm_iExtraElements );
|
||||
hb_vm_iExtraElements = 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1201,6 +1201,9 @@ HB_EXPORT char * hb_itemTypeStr( PHB_ITEM pItem )
|
||||
|
||||
case HB_IT_POINTER:
|
||||
return "P";
|
||||
|
||||
case HB_IT_SYMBOL:
|
||||
return "S";
|
||||
}
|
||||
|
||||
return "U";
|
||||
@@ -1367,7 +1370,7 @@ PHB_ITEM hb_itemUnRef( PHB_ITEM pItem )
|
||||
{
|
||||
pItem = hb_itemUnRefOnce( pItem );
|
||||
}
|
||||
while( HB_IS_BYREF( pItem ) && (pRef != pItem) );
|
||||
while( HB_IS_BYREF( pItem ) && ( pRef != pItem ) );
|
||||
|
||||
return pItem;
|
||||
}
|
||||
@@ -1382,11 +1385,12 @@ PHB_ITEM hb_itemUnRefRefer( PHB_ITEM pItem )
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_itemUnRefRefer(%p)", pItem));
|
||||
|
||||
do {
|
||||
pLast = pItem;
|
||||
pItem = hb_itemUnRefOnce( pItem );
|
||||
do
|
||||
{
|
||||
pLast = pItem;
|
||||
pItem = hb_itemUnRefOnce( pItem );
|
||||
}
|
||||
while( HB_IS_BYREF( pItem ) && (pRef != pItem) );
|
||||
while( HB_IS_BYREF( pItem ) && ( pRef != pItem ) );
|
||||
|
||||
return pLast;
|
||||
}
|
||||
@@ -1421,7 +1425,7 @@ PHB_ITEM hb_itemUnRefOnce( PHB_ITEM pItem )
|
||||
else if( pItem->item.asRefer.offset < 0 )
|
||||
{
|
||||
/* enumerator variable */
|
||||
if( HB_IS_ARRAY(pItem->item.asRefer.BasePtr.itemPtr) )
|
||||
if( HB_IS_ARRAY( pItem->item.asRefer.BasePtr.itemPtr ) )
|
||||
{
|
||||
pItem = hb_arrayGetItemPtr( pItem->item.asRefer.BasePtr.itemPtr, pItem->item.asRefer.value );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user