2000-06-16 13:37 UTC+0100 Victor Szakats <info@szelvesz.hu>
This commit is contained in:
@@ -1,3 +1,62 @@
|
||||
2000-06-16 13:37 UTC+0100 Victor Szakats <info@szelvesz.hu>
|
||||
|
||||
* include/hbapigt.h
|
||||
* source/rtl/gtapi.c
|
||||
* source/rtl/gt*/*
|
||||
* Renamed hb_gt_Suspend()/hb_gt_Resume() to hb_gt_Pre/PosExt()
|
||||
% Some cleanup on the recent additions to the GT module.
|
||||
! Small fix for gt_tpl/gt_tpl.c
|
||||
! Ambiguous nested if()s fixed.
|
||||
|
||||
* source/rtl/transfrm.c
|
||||
! Fixed handling of "S" picture function, now it works for every
|
||||
data type, and doesn't need to be the first function to work.
|
||||
* "0" picture function renamed to "L", some steps made towards the
|
||||
optional filling char support. In the meantime the filling char is
|
||||
always "0".
|
||||
% Some optimizations made (two static function calls eliminated, since
|
||||
parameter passing was getting messy). Comments added instead.
|
||||
|
||||
* source/rtl/teditorl.c
|
||||
% Some optimizations made, many casts removed.
|
||||
! Non-portable ULONG casts on pointers removed.
|
||||
|
||||
* makefile.bc
|
||||
% Removed some more redundant -I$(INCLUDE_DIR)s
|
||||
|
||||
* include/hbclass.ch
|
||||
! Minor cleanups (#includes moved after the self-guards, nil->NIL,
|
||||
oClass -> s_oClass, indentation, extern->REQUEST)
|
||||
|
||||
* include/hbpp.h
|
||||
! Minor formatting
|
||||
|
||||
* source/pp/ppcore.c
|
||||
* include/hberrors.h
|
||||
! HB_COMP_ERR_BAD_RULES_FILE_NAME -> HB_PP_ERR_BAD_RULES_FILE_NAME
|
||||
|
||||
* source/rtl/Makefile
|
||||
* source/rdd/Makefile
|
||||
! Fixed tabs for recently added files (TOBJECT, DBLIST).
|
||||
PLEASE pay attention to the tabs when adding new files to the GNU-make
|
||||
files.
|
||||
|
||||
* source/rtl/tclass.prg
|
||||
* source/rtl/tobject.prg
|
||||
* Some minor cleanups, fixes, optimizations.
|
||||
|
||||
+ source/rdd/dbupdat.prg
|
||||
* source/rdd/dblist.prg
|
||||
* source/rdd/Makefile
|
||||
* makefile.vc
|
||||
* makefile.bc
|
||||
* Formatted sources. __DBUPDATE() moved to a separate file.
|
||||
+ Comments added. Variables renamed.
|
||||
% Some minor optimizations.
|
||||
|
||||
* makefile.vc
|
||||
! Updated for TOBJECT and DBLIST
|
||||
|
||||
2000-06-16 01:42 UTC-0800 Ron Pinkas <Ron@Profit-Master.com>
|
||||
* makefile.bc
|
||||
- Removed redundant -I from echo into make.tmp (Harbour.exe)
|
||||
@@ -56,11 +115,11 @@
|
||||
* source/pp/ppcore.c
|
||||
! Fixed getExpReal() to terminate on unbalanced ')'
|
||||
|
||||
2000-06-14-13:00 GMT +1 Ignacio Ortiz de Zuniga <ignacio@fivetech.com>
|
||||
2000-06-14 13:00 GMT+1 Ignacio Ortiz de Zuniga <ignacio@fivetech.com>
|
||||
* memoline.c
|
||||
* fixed reported bug
|
||||
|
||||
2000-06-13-21:20 GMT -3 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
2000-06-13 21:20 GMT-3 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
*makefile.bc
|
||||
source/rdd/makefile
|
||||
+Added dblist to dependencie list
|
||||
@@ -121,7 +180,6 @@
|
||||
* Correct bug with default initialiser for Logical and Numeric
|
||||
* Now a logical is .F. by default and a numeric is 0 !
|
||||
|
||||
|
||||
2000-06-12 17:20 UTC+0200 JfL&RaC <jfl@mafact.com> <rac@mafact.com>
|
||||
*source\rtl\tobject.prg
|
||||
*source\rtl\tclass.prg
|
||||
@@ -227,7 +285,6 @@
|
||||
! Added several missing type casts on hb_xgrab() calls.
|
||||
* Converted source code from double spaced to single spaced.
|
||||
|
||||
|
||||
2000-06-09 12:00 UTC-0800 Ron Pinkas <Ron@Profit-Master.com>
|
||||
* include/hbpp.h
|
||||
* source/compiler/harbour.c
|
||||
|
||||
@@ -114,7 +114,8 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
|
||||
if not "%HB_COMPILER%" == "bcc16" goto A_DOS_BCC16_NOT
|
||||
|
||||
echo -O2 -d -mh %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% > build.tmp
|
||||
echo -e%1.exe %1.c >> build.tmp
|
||||
echo -e%1.exe >> build.tmp
|
||||
echo %1.c >> build.tmp
|
||||
echo debug.lib >> build.tmp
|
||||
echo vm.lib >> build.tmp
|
||||
echo rtl.lib >> build.tmp
|
||||
@@ -134,7 +135,8 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
|
||||
|
||||
if not "%HB_COMPILER%" == "djgpp" goto A_DOS_DJGPP_NOT
|
||||
|
||||
echo %1.c -o%1.exe %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% > build.tmp
|
||||
echo %1.c > build.tmp
|
||||
echo -o%1.exe %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% >> build.tmp
|
||||
echo -ldebug >> build.tmp
|
||||
echo -lvm >> build.tmp
|
||||
echo -lrtl >> build.tmp
|
||||
|
||||
@@ -114,7 +114,8 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
|
||||
if not "%HB_COMPILER%" == "bcc16" goto A_DOS_BCC16_NOT
|
||||
|
||||
echo -O2 -d -mh %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% > build.tmp
|
||||
echo -e%1.exe %1.c >> build.tmp
|
||||
echo -e%1.exe >> build.tmp
|
||||
echo %1.c >> build.tmp
|
||||
echo debug.lib >> build.tmp
|
||||
echo vm.lib >> build.tmp
|
||||
echo rtl.lib >> build.tmp
|
||||
@@ -134,7 +135,8 @@ if "%HB_INC_INSTALL%" == "" set HB_INC_INSTALL=..\include\
|
||||
|
||||
if not "%HB_COMPILER%" == "djgpp" goto A_DOS_DJGPP_NOT
|
||||
|
||||
echo %1.c -o%1.exe %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% > build.tmp
|
||||
echo %1.c > build.tmp
|
||||
echo -o%1.exe %CFLAGS% -I%HB_INC_INSTALL% -L%HB_LIB_INSTALL% >> build.tmp
|
||||
echo -ldebug >> build.tmp
|
||||
echo -lvm >> build.tmp
|
||||
echo -lrtl >> build.tmp
|
||||
|
||||
@@ -169,6 +169,8 @@ extern USHORT hb_gt_GetScreenWidth( void );
|
||||
extern void hb_gt_GetText( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, BYTE * pbyDst );
|
||||
extern USHORT hb_gt_HorizLine( USHORT uiRow, USHORT uiLeft, USHORT uiRight, BYTE byChar, BYTE byAttr );
|
||||
extern BOOL hb_gt_IsColor( void );
|
||||
extern BOOL hb_gt_PreExt( void );
|
||||
extern BOOL hb_gt_PostExt( void );
|
||||
extern void hb_gt_Puts( USHORT uiRow, USHORT uiCol, BYTE byAttr, BYTE * pbyStr, ULONG ulLen );
|
||||
extern void hb_gt_PutText( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, BYTE * pbySrc );
|
||||
extern int hb_gt_ReadKey( HB_inkey_enum eventmask );
|
||||
@@ -184,8 +186,6 @@ extern void hb_gt_SetPos( SHORT iRow, SHORT iCol );
|
||||
extern void hb_gt_Tone( double dFrequency, double dDuration );
|
||||
extern char * hb_gt_Version( void );
|
||||
extern USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar, BYTE byAttr );
|
||||
extern BOOL hb_gt_Suspend();
|
||||
extern BOOL hb_gt_Resume();
|
||||
|
||||
/* Keyboard related declarations */
|
||||
|
||||
|
||||
@@ -44,8 +44,6 @@
|
||||
* Delegating, DATA Shared
|
||||
* Support of 10 Chars limits
|
||||
*
|
||||
* 2000/06/07 One minor bug in one command
|
||||
*
|
||||
* Copyright 2000 Brian Hays <bhays@abacuslaw.com>
|
||||
* Documentation for the commands
|
||||
*
|
||||
@@ -53,12 +51,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "hbsetup.ch"
|
||||
#include "hboo.ch"
|
||||
|
||||
#ifndef HB_CLASS_CH_
|
||||
#define HB_CLASS_CH_
|
||||
|
||||
#include "hbsetup.ch"
|
||||
#include "hboo.ch"
|
||||
|
||||
#xtranslate HBCLSCHOICE( <export>, <protect>, <hidde> ) => iif( <export>, HB_OO_CLSTP_EXPORTED , iif( <protect>, HB_OO_CLSTP_PROTECTED, iif( <hidde>, HB_OO_CLSTP_HIDDEN, nScope) ) )
|
||||
|
||||
#xtranslate CREATE CLASS => CLASS
|
||||
@@ -67,10 +65,10 @@
|
||||
|
||||
#xcommand CLASS <ClassName> [ <frm: FROM, INHERIT> <SuperClass1> [,<SuperClassN>] ] [<static: STATIC>] => ;
|
||||
<static> function <ClassName>() ;;
|
||||
static oClass ;;
|
||||
static s_oClass ;;
|
||||
local nScope := HB_OO_CLSTP_EXPORTED ;;
|
||||
if oClass == nil ;;
|
||||
oClass := TClass():New( <(ClassName)>, __CLS_PARAM([ <(SuperClass1)> ] [ ,<(SuperClassN)> ] ) ) ;;
|
||||
if s_oClass == NIL ;;
|
||||
s_oClass := TClass():New( <(ClassName)>, __CLS_PARAM([ <(SuperClass1)> ] [ ,<(SuperClassN)> ] ) ) ;;
|
||||
#undef _CLASS_NAME_ ;;
|
||||
#define _CLASS_NAME_ <ClassName> ;;
|
||||
#translate CLSMETH <ClassName> <MethodName>() => @<ClassName>_<MethodName>() ;
|
||||
@@ -78,16 +76,16 @@
|
||||
[ ; #translate Super( <SuperClass1> ) : => ::<SuperClass1>: ] ;
|
||||
[ ; #translate Super() : => ::<SuperClass1>: ] ;
|
||||
[ ; #translate Super : => ::<SuperClass1>: ] ;
|
||||
[ ; extern <SuperClass1> ] [ ,<SuperClassN> ]
|
||||
[ ; REQUEST <SuperClass1> ] [ ,<SuperClassN> ]
|
||||
|
||||
#else
|
||||
|
||||
#xcommand CLASS <ClassName> [ <frm: FROM, INHERIT> <SuperClass1> [,<SuperClassN>] ] [<static: STATIC>] => ;
|
||||
<static> function <ClassName>() ;;
|
||||
static oClass ;;
|
||||
static s_oClass ;;
|
||||
local nScope := HB_OO_CLSTP_EXPORTED ;;
|
||||
if oClass == nil ;;
|
||||
oClass := TClass():New( <(ClassName)>, __CLS_PARAM([ <(SuperClass1)> ] [ ,<(SuperClassN)> ] ) ) ;;
|
||||
if s_oClass == NIL ;;
|
||||
s_oClass := TClass():New( <(ClassName)>, __CLS_PARAM([ <(SuperClass1)> ] [ ,<(SuperClassN)> ] ) ) ;;
|
||||
#undef _CLASS_NAME_ ;;
|
||||
#define _CLASS_NAME_ <ClassName> ;;
|
||||
#translate CLSMETH <ClassName> <MethodName>() => @<MethodName>() ;
|
||||
@@ -95,7 +93,7 @@
|
||||
[ ; #translate Super( <SuperClass1> ) : => ::<SuperClass1>: ] ;
|
||||
[ ; #translate Super() : => ::<SuperClass1>: ] ;
|
||||
[ ; #translate Super : => ::<SuperClass1>: ] ;
|
||||
[ ; extern <SuperClass1> ] [ ,<SuperClassN> ]
|
||||
[ ; REQUEST <SuperClass1> ] [ ,<SuperClassN> ]
|
||||
|
||||
#endif /* HB_SHORTNAMES */
|
||||
|
||||
@@ -113,69 +111,69 @@
|
||||
#xtranslate PROTECTED: => nScope := HB_OO_CLSTP_PROTECTED
|
||||
|
||||
#xcommand DATA <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand VAR <DataNames,...> [ TYPE <type> ] [ ASSIGN <uValue> ] [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand VAR <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand VAR <DataName> IN <SuperClass> => ;
|
||||
oClass:AddInline( <(DataName)>, {|Self| Self:<SuperClass>:<DataName> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
oClass:AddInline( "_" + <(DataName)>, {|Self, param| Self:<SuperClass>:<DataName> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
s_oClass:AddInline( <(DataName)>, {|Self| Self:<SuperClass>:<DataName> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
s_oClass:AddInline( "_" + <(DataName)>, {|Self, param| Self:<SuperClass>:<DataName> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
|
||||
#xcommand VAR <DataName> IS <SprDataName> IN <SuperClass> => ;
|
||||
oClass:AddInline( <(DataName)>, {|Self| Self:<SuperClass>:<SprDataName> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
oClass:AddInline( "_" + <(DataName)>, {|Self, param| Self:<SuperClass>:<SprDataName> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
s_oClass:AddInline( <(DataName)>, {|Self| Self:<SuperClass>:<SprDataName> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
s_oClass:AddInline( "_" + <(DataName)>, {|Self, param| Self:<SuperClass>:<SprDataName> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
|
||||
#xcommand VAR <DataName1> IS <DataName2> => ;
|
||||
oClass:AddInline( <(DataName1)>, {|Self| Self:<DataName2> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
oClass:AddInline( "_" + <(DataName1)>, {|Self, param| Self:<DataName2> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
s_oClass:AddInline( <(DataName1)>, {|Self| Self:<DataName2> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
s_oClass:AddInline( "_" + <(DataName1)>, {|Self, param| Self:<DataName2> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
|
||||
#xcommand VAR <DataName1> IS <DataName2> TO <oObject> => ;
|
||||
oClass:AddInline( <(DataName1)>, {|Self| Self:<oObject>:<DataName2> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
oClass:AddInline( "_" + <(DataName1)>, {|Self, param| Self:<oObject>:<DataName2> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
s_oClass:AddInline( <(DataName1)>, {|Self| Self:<oObject>:<DataName2> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
s_oClass:AddInline( "_" + <(DataName1)>, {|Self, param| Self:<oObject>:<DataName2> := param }, HB_OO_CLSTP_EXPORTED )
|
||||
|
||||
#xcommand EXPORT <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_EXPORTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_EXPORTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand EXPORT <DataNames,...> [ TYPE <type> ] [ ASSIGN <uValue> ] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_EXPORTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_EXPORTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand PROTECT <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_PROTECTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_PROTECTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand PROTECT <DataNames,...> [ TYPE <type> ] [ ASSIGN <uValue> ] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_PROTECTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_PROTECTED + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand HIDDE <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_HIDDEN + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_HIDDEN + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand HIDDE <DataNames,...> [ TYPE <type> ] [ ASSIGN <uValue> ] [<ro: READONLY, RO>] => ;
|
||||
oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_HIDDEN + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiData( <(type)>, <uValue>, HB_OO_CLSTP_HIDDEN + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand CLASSDATA <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<ro: READONLY, RO>] [<share: SHARED>] => ;
|
||||
oClass:AddMultiClsData(<(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiClsData(<(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xtranslate CLASS VAR => CLASSVAR
|
||||
|
||||
#xcommand CLASSVAR <DataNames,...> [ TYPE <type> ] [ ASSIGN <uValue> ] [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<ro: READONLY, RO>] [<share: SHARED>] => ;
|
||||
oClass:AddMultiClsData(<(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiClsData(<(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xcommand CLASSVAR <DataNames,...> [ AS <type> ] [ INIT <uValue> ] [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<ro: READONLY, RO>] [<share: SHARED>] => ;
|
||||
oClass:AddMultiClsData(<(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ), \{<(DataNames)>\} ) ;
|
||||
s_oClass:AddMultiClsData(<(type)>, <uValue>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ro.>, HB_OO_CLSTP_READONLY, 0 ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ), \{<(DataNames)>\} ) ;
|
||||
|
||||
#xtranslate CLASS METHOD => CLASSMETHOD
|
||||
|
||||
#xcommand CLASSMETHOD <MethodName> [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<share: SHARED>] => ;
|
||||
oClass:AddClsMthds( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ) )
|
||||
s_oClass:AddClsMthds( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ) )
|
||||
|
||||
#xcommand CLASSMETHOD <MethodName>() [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<share: SHARED>] => ;
|
||||
oClass:AddClsMthds( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ) )
|
||||
s_oClass:AddClsMthds( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ) )
|
||||
|
||||
#xcommand CLASSMETHOD <MethodName>( [<params,...>] ) [<export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] [<share: SHARED>] => ;
|
||||
oClass:AddClsMthds( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ) )
|
||||
s_oClass:AddClsMthds( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.share.>, HB_OO_CLSTP_SHARED, 0 ) )
|
||||
|
||||
#xcommand CONSTRUCTOR <Name>( [<params,...>] ) => METHOD <Name>( [<params,...>] ) CONSTRUCTOR
|
||||
|
||||
@@ -183,25 +181,25 @@
|
||||
//#xcommand CONSTRUCTOR New( [<params,...>] ) => METHOD New( [<params,...>] ) CONSTRUCTOR
|
||||
|
||||
#xcommand METHOD <MethodName> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName> BLOCK <CodeBlock> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddInline( <(MethodName)>, <CodeBlock>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddInline( <(MethodName)>, <CodeBlock>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) BLOCK <CodeBlock> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddInline( <(MethodName)>, <CodeBlock>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddInline( <(MethodName)>, <CodeBlock>, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) EXTERN <FuncName>( [<params,...>] ) [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MethodName)>, @<FuncName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MethodName)>, @<FuncName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName> INLINE <Code,...> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddInline( <(MethodName)>, {|Self | <Code> }, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddInline( <(MethodName)>, {|Self | <Code> }, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) INLINE <Code,...> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddInline( <(MethodName)>, {|Self [,<params>] | <Code> }, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddInline( <(MethodName)>, {|Self [,<params>] | <Code> }, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand METHOD <MethodName> INLINE [Local <v>,] <Code,...> [<other>] => ;
|
||||
METHOD <MethodName> BLOCK {|Self [,<v>] | <Code> } [<other>]
|
||||
@@ -210,103 +208,103 @@
|
||||
METHOD <MethodName> BLOCK {|Self [,<params>] [,<v>] | <Code> } [<other>]
|
||||
|
||||
#xcommand METHOD <MethodName> DEFERRED => ;
|
||||
oClass:AddVirtual( <(MethodName)> )
|
||||
s_oClass:AddVirtual( <(MethodName)> )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) DEFERRED => ;
|
||||
oClass:AddVirtual( <(MethodName)> )
|
||||
s_oClass:AddVirtual( <(MethodName)> )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) VIRTUAL => ;
|
||||
oClass:AddVirtual( <(MethodName)> )
|
||||
s_oClass:AddVirtual( <(MethodName)> )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params>] ) OPERATOR <op> [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) ) ;;
|
||||
oClass:AddInline( <(op)>, {|Self [,<params>] | Self:<MethodName>( [<params>] ) }, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) )
|
||||
s_oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) ) ;;
|
||||
s_oClass:AddInline( <(op)>, {|Self [,<params>] | Self:<MethodName>( [<params>] ) }, HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName> METHOD <MethodName> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName> METHOD <MethodName>( [<params,...>] ) [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>]=> ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) METHOD <MethodName> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) METHOD <MethodName>( [<dummy,...>] ) [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName> IN <SuperClass> => ;
|
||||
oClass:AddInline( <(MessageName)>, {|Self| Self:<SuperClass>:<MessageName>() } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self| Self:<SuperClass>:<MessageName>() } )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) IN <SuperClass> => ;
|
||||
oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<MessageName>( [<params>] ) } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<MessageName>( [<params>] ) } )
|
||||
|
||||
#xcommand MESSAGE <MessageName> IS <SprMethodName> IN <SuperClass> => ;
|
||||
oClass:AddInline( <(MessageName)>, {|Self| Self:<SuperClass>:<SprMethodName>() } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self| Self:<SuperClass>:<SprMethodName>() } )
|
||||
|
||||
#xcommand MESSAGE <MessageName> IS <SprMethodName>( [<params,...>] ) IN <SuperClass> => ;
|
||||
oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<SprMethodName>( [<params>] ) } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<SprMethodName>( [<params>] ) } )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) IS <SprMethodName> IN <SuperClass> => ;
|
||||
oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<SprMethodName>( [<params>] ) } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<SprMethodName>( [<params>] ) } )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) IS <SprMethodName>( [<dummy,...>] ) IN <SuperClass> => ;
|
||||
oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<SprMethodName>( [<params>] ) } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<SuperClass>:<SprMethodName>( [<params>] ) } )
|
||||
|
||||
#xcommand MESSAGE <MessageName> IS <MethodName> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName> IS <MethodName>( [<params,...>] ) [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>]=> ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) IS <MethodName> [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) IS <MethodName>( [<dummy,...>] ) [ <ctor: CONSTRUCTOR> ] [ <export: EXPORTED, VISIBLE>] [<protect: PROTECTED>] [<hidde: HIDDEN>] => ;
|
||||
oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
s_oClass:AddMethod( <(MessageName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HBCLSCHOICE( <.export.>, <.protect.>, <.hidde.> ) + iif( <.ctor.>, HB_OO_CLSTP_CTOR, 0 ) )
|
||||
|
||||
#xcommand MESSAGE <MessageName> TO <oObject> =>;
|
||||
oClass:AddInline( <(MessageName)>, {|Self| Self:<oObject>:<MessageName> } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self| Self:<oObject>:<MessageName> } )
|
||||
|
||||
#xcommand MESSAGE <MessageName>( [<params,...>] ) TO <oObject> =>;
|
||||
oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<oObject>:<MessageName>( [<params>] ) } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<oObject>:<MessageName>( [<params>] ) } )
|
||||
|
||||
#xcommand DELEGATE <MessageName> TO <oObject> =>;
|
||||
oClass:AddInline( <(MessageName)>, {|Self| Self:<oObject>:<MessageName> } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self| Self:<oObject>:<MessageName> } )
|
||||
|
||||
#xcommand DELEGATE <MessageName>( [<params,...>] ) TO <oObject> =>;
|
||||
oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<oObject>:<MessageName>( [<params>] ) } )
|
||||
s_oClass:AddInline( <(MessageName)>, {|Self [,<params>]| Self:<oObject>:<MessageName>( [<params>] ) } )
|
||||
|
||||
#xcommand METHOD <MethodName>( [<params,...>] ) SETGET => ;
|
||||
oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
oClass:AddMethod( "_" + <(MethodName)>, CLSMETH _CLASS_NAME_ _<MethodName>() )
|
||||
s_oClass:AddMethod( <(MethodName)>, CLSMETH _CLASS_NAME_ <MethodName>(), HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY ) ;;
|
||||
s_oClass:AddMethod( "_" + <(MethodName)>, CLSMETH _CLASS_NAME_ _<MethodName>() )
|
||||
|
||||
#xcommand ACCESS <AccessName> => ;
|
||||
oClass:AddMethod( <(AccessName)>, CLSMETH _CLASS_NAME_ <AccessName>(), HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY )
|
||||
s_oClass:AddMethod( <(AccessName)>, CLSMETH _CLASS_NAME_ <AccessName>(), HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY )
|
||||
|
||||
#xcommand ACCESS <AccessName> INLINE [Local <v>,] <code,...> => ;
|
||||
oClass:AddInline( <(AccessName)>, {|Self [,<v>] | <code> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY )
|
||||
s_oClass:AddInline( <(AccessName)>, {|Self [,<v>] | <code> }, HB_OO_CLSTP_EXPORTED + HB_OO_CLSTP_READONLY )
|
||||
|
||||
#xcommand ACCESS <AccessName> DEFERRED => ;
|
||||
oClass:AddVirtual( <(AccessName)> )
|
||||
s_oClass:AddVirtual( <(AccessName)> )
|
||||
|
||||
#xcommand ASSIGN <AssignName>( [<params,...>] ) => ;
|
||||
oClass:AddMethod( "_" + <(AssignName)>, CLSMETH _CLASS_NAME_ _<AssignName>(), HB_OO_CLSTP_EXPORTED )
|
||||
s_oClass:AddMethod( "_" + <(AssignName)>, CLSMETH _CLASS_NAME_ _<AssignName>(), HB_OO_CLSTP_EXPORTED )
|
||||
|
||||
#xcommand ASSIGN <AssignName>( [<params,...>] ) INLINE [Local <v>,] <Code,...> => ;
|
||||
oClass:AddInline( "_" + <(AssignName)>, {|Self [,<params>] [,<v>] | <Code> }, HB_OO_CLSTP_EXPORTED )
|
||||
s_oClass:AddInline( "_" + <(AssignName)>, {|Self [,<params>] [,<v>] | <Code> }, HB_OO_CLSTP_EXPORTED )
|
||||
|
||||
#xcommand ERROR HANDLER <MethodName>( [<params,...>] ) => ;
|
||||
oClass:SetOnError( CLSMETH _CLASS_NAME_ <MethodName>() )
|
||||
s_oClass:SetOnError( CLSMETH _CLASS_NAME_ <MethodName>() )
|
||||
|
||||
#xcommand ON ERROR <MethodName>( [<params,...>] ) => ;
|
||||
oClass:SetOnError( CLSMETH _CLASS_NAME_ <MethodName>() )
|
||||
s_oClass:SetOnError( CLSMETH _CLASS_NAME_ <MethodName>() )
|
||||
|
||||
#xtranslate END CLASS => ENDCLASS
|
||||
|
||||
#xcommand ENDCLASS => ;; //Here we will add a inline message to ::Class. RaC&JfL
|
||||
oClass:Create() ;;
|
||||
#xcommand ENDCLASS => ;; // Here we will add a inline message to ::Class. RaC&JfL
|
||||
s_oClass:Create() ;;
|
||||
endif ;;
|
||||
return oClass:Instance()
|
||||
return s_oClass:Instance()
|
||||
|
||||
#xtranslate :Super( <SuperClass> ) : => :<SuperClass>:
|
||||
#xtranslate :Super() : => :Super:
|
||||
|
||||
@@ -137,7 +137,7 @@ extern "C" {
|
||||
#define HB_PP_ERR_MEMFREE 13
|
||||
#define HB_PP_ERR_PRAGMA_BAD_VALUE 14
|
||||
#define HB_PP_ERR_CANNOT_OPEN_RULES 15
|
||||
#define HB_COMP_ERR_BAD_RULES_FILE_NAME 16
|
||||
#define HB_PP_ERR_BAD_RULES_FILE_NAME 16
|
||||
|
||||
#define HB_PP_WARN_DEFINE_REDEF 1
|
||||
#define HB_PP_WARN_NO_DIRECTIVES 2
|
||||
|
||||
@@ -79,7 +79,7 @@ typedef struct _COMMANDS
|
||||
|
||||
/* HBPP.C exported functions */
|
||||
|
||||
extern void hb_pp_SetRules( BOOL (*hb_compInclude)(char *, PATHNAMES * ), BOOL hb_comp_bQuiet );
|
||||
extern void hb_pp_SetRules( BOOL ( *hb_compInclude )( char *, PATHNAMES * ), BOOL hb_comp_bQuiet );
|
||||
extern void hb_pp_Init( void );
|
||||
extern int hb_pp_ParseDirective( char * ); /* Parsing preprocessor directives ( #... ) */
|
||||
extern int hb_pp_ParseExpression( char *, char * ); /* Parsing a line ( without preprocessor directive ) */
|
||||
|
||||
@@ -294,7 +294,6 @@ RTL_LIB_OBJS = \
|
||||
$(OBJ_DIR)\tbcolumn.obj \
|
||||
$(OBJ_DIR)\tbrowse.obj \
|
||||
$(OBJ_DIR)\tclass.obj \
|
||||
$(OBJ_DIR)\tobject.obj \
|
||||
$(OBJ_DIR)\teditor.obj \
|
||||
$(OBJ_DIR)\terror.obj \
|
||||
$(OBJ_DIR)\text.obj \
|
||||
@@ -302,6 +301,7 @@ RTL_LIB_OBJS = \
|
||||
$(OBJ_DIR)\tgetlist.obj \
|
||||
$(OBJ_DIR)\tlabel.obj \
|
||||
$(OBJ_DIR)\tmenuitm.obj \
|
||||
$(OBJ_DIR)\tobject.obj \
|
||||
$(OBJ_DIR)\tpopup.obj \
|
||||
$(OBJ_DIR)\treport.obj \
|
||||
$(OBJ_DIR)\ttextlin.obj \
|
||||
@@ -360,8 +360,9 @@ RDD_LIB_OBJS = \
|
||||
$(OBJ_DIR)\sdf1.obj \
|
||||
\
|
||||
$(OBJ_DIR)\dbf0.obj \
|
||||
$(OBJ_DIR)\dbstrux.obj \
|
||||
$(OBJ_DIR)\dblist.obj \
|
||||
$(OBJ_DIR)\dbstrux.obj \
|
||||
$(OBJ_DIR)\dbupdat.obj \
|
||||
$(OBJ_DIR)\delim0.obj \
|
||||
$(OBJ_DIR)\rddord.obj \
|
||||
$(OBJ_DIR)\rddsys.obj \
|
||||
@@ -662,8 +663,8 @@ $(OBJ_DIR)\pptable.obj : $(PP_DIR)\pptable.c
|
||||
#
|
||||
$(HARBOUR_EXE) : $(HARBOUR_EXE_OBJS)
|
||||
|
||||
echo. -e$(HARBOUR_EXE) > make.tmp
|
||||
echo. $(CFLAGS) >> make.tmp
|
||||
echo. $(CFLAGS) > make.tmp
|
||||
echo. -e$(HARBOUR_EXE) >> make.tmp
|
||||
echo. $(OBJ_DIR)\harbour.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\harboury.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\harbourl.obj >> make.tmp
|
||||
@@ -759,6 +760,13 @@ $(OBJ_DIR)\dbf1.obj : $(RDD_DIR)\dbf1.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RDD_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\dblist.c : $(RDD_DIR)\dblist.prg
|
||||
$(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@
|
||||
|
||||
$(OBJ_DIR)\dblist.obj : $(OBJ_DIR)\dblist.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RDD_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\dbnubs.obj : $(RDD_DIR)\dbnubs.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RDD_LIB) $(ARFLAGS) -+$@,,
|
||||
@@ -770,10 +778,10 @@ $(OBJ_DIR)\dbstrux.obj : $(OBJ_DIR)\dbstrux.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RDD_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\dblist.c : $(RDD_DIR)\dblist.prg
|
||||
$(OBJ_DIR)\dbupdat.c : $(RDD_DIR)\dbupdat.prg
|
||||
$(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@
|
||||
|
||||
$(OBJ_DIR)\dblist.obj : $(OBJ_DIR)\dblist.c
|
||||
$(OBJ_DIR)\dbupdat.obj : $(OBJ_DIR)\dbupdat.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RDD_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
@@ -1490,13 +1498,6 @@ $(OBJ_DIR)\tclass.obj : $(OBJ_DIR)\tclass.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RTL_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\tobject.c : $(RTL_DIR)\tobject.prg
|
||||
$(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@
|
||||
|
||||
$(OBJ_DIR)\tobject.obj : $(OBJ_DIR)\tobject.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RTL_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\teditor.c : $(RTL_DIR)\teditor.prg
|
||||
$(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@
|
||||
|
||||
@@ -1550,6 +1551,13 @@ $(OBJ_DIR)\tmenuitm.obj : $(OBJ_DIR)\tmenuitm.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RTL_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\tobject.c : $(RTL_DIR)\tobject.prg
|
||||
$(HARBOUR_EXE) $(HARBOURFLAGS) $** -o$@
|
||||
|
||||
$(OBJ_DIR)\tobject.obj : $(OBJ_DIR)\tobject.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RTL_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\tone.obj : $(RTL_DIR)\tone.c
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(RTL_LIB) $(ARFLAGS) -+$@,,
|
||||
@@ -1645,91 +1653,91 @@ $(OBJ_DIR)\xsavescr.obj : $(RTL_DIR)\xsavescr.c
|
||||
#
|
||||
|
||||
$(OBJ_DIR)\msgca.obj : $(LANG_DIR)\msgca.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgcs852.obj : $(LANG_DIR)\msgcs852.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgcsiso.obj : $(LANG_DIR)\msgcsiso.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgcskam.obj : $(LANG_DIR)\msgcskam.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgcswin.obj : $(LANG_DIR)\msgcswin.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgen.obj : $(LANG_DIR)\msgen.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msges.obj : $(LANG_DIR)\msges.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgeu.obj : $(LANG_DIR)\msgeu.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgfr.obj : $(LANG_DIR)\msgfr.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msggl.obj : $(LANG_DIR)\msggl.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghe862.obj : $(LANG_DIR)\msghe862.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghewin.obj : $(LANG_DIR)\msghewin.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghr852.obj : $(LANG_DIR)\msghr852.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghriso.obj : $(LANG_DIR)\msghriso.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghu852.obj : $(LANG_DIR)\msghu852.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghucwi.obj : $(LANG_DIR)\msghucwi.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msghuwin.obj : $(LANG_DIR)\msghuwin.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgis850.obj : $(LANG_DIR)\msgis850.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgpt.obj : $(LANG_DIR)\msgpt.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgro.obj : $(LANG_DIR)\msgro.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgsr852.obj : $(LANG_DIR)\msgsr852.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
$(OBJ_DIR)\msgsriso.obj : $(LANG_DIR)\msgsriso.c
|
||||
$(CC) $(CLIBFLAGS) -I$(LANG_DIR) -o$@ $**
|
||||
$(CC) $(CLIBFLAGS) -o$@ $**
|
||||
tlib $(LANG_LIB) $(ARFLAGS) -+$@,,
|
||||
|
||||
#
|
||||
@@ -1910,7 +1918,6 @@ $(HBPP_EXE) : \
|
||||
$(CC) $(CLIBFLAGS) -o$(OBJ_DIR)\hbpp.obj $(HBPP_DIR)\hbpp.c
|
||||
echo. $(CFLAGS) > make.tmp
|
||||
echo. -e$(HBPP_EXE) >> make.tmp
|
||||
echo. -I$(INCLUDE_DIR) >> make.tmp
|
||||
echo. $(OBJ_DIR)\hbpp.obj >> make.tmp
|
||||
echo. $(COMMON_LIB) $(PP_LIB) >> make.tmp
|
||||
$(CC) @make.tmp
|
||||
@@ -1923,7 +1930,6 @@ $(HBRUN_EXE) : $(HBRUN_EXE_OBJS)
|
||||
|
||||
echo. $(CFLAGS) > make.tmp
|
||||
echo. -e$(HBRUN_EXE) >> make.tmp
|
||||
echo. -I$(INCLUDE_DIR) >> make.tmp
|
||||
echo. $(OBJ_DIR)\hbrun.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\external.obj >> make.tmp
|
||||
echo. $(PP_LIB) >> make.tmp
|
||||
@@ -1958,7 +1964,6 @@ $(HBTEST_EXE) : $(HBTEST_EXE_OBJS)
|
||||
|
||||
echo. $(CFLAGS) > make.tmp
|
||||
echo. -e$(HBTEST_EXE) >> make.tmp
|
||||
echo. -I$(INCLUDE_DIR) >> make.tmp
|
||||
echo. $(OBJ_DIR)\hbtest.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\rt_hvm.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\rt_hvma.obj >> make.tmp
|
||||
@@ -2056,7 +2061,6 @@ $(HBDOC_EXE) : $(HBDOC_EXE_OBJS)
|
||||
|
||||
echo. $(CFLAGS) > make.tmp
|
||||
echo. -e$(HBDOC_EXE) >> make.tmp
|
||||
echo. -I$(INCLUDE_DIR) >> make.tmp
|
||||
echo. $(OBJ_DIR)\hbdoc.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\genasc.obj >> make.tmp
|
||||
echo. $(OBJ_DIR)\genhpc.obj >> make.tmp
|
||||
|
||||
@@ -326,6 +326,7 @@ RTL_LIB_OBJS = \
|
||||
$(OBJ_DIR)\tgetlist.obj \
|
||||
$(OBJ_DIR)\tlabel.obj \
|
||||
$(OBJ_DIR)\tmenuitm.obj \
|
||||
$(OBJ_DIR)\tobject.obj \
|
||||
$(OBJ_DIR)\tpopup.obj \
|
||||
$(OBJ_DIR)\treport.obj \
|
||||
$(OBJ_DIR)\ttextlin.obj \
|
||||
@@ -397,7 +398,9 @@ RDD_LIB_OBJS = \
|
||||
$(OBJ_DIR)\sdf1.obj \
|
||||
\
|
||||
$(OBJ_DIR)\dbf0.obj \
|
||||
$(OBJ_DIR)\dblist.obj \
|
||||
$(OBJ_DIR)\dbstrux.obj \
|
||||
$(OBJ_DIR)\dbupdat.obj \
|
||||
$(OBJ_DIR)\delim0.obj \
|
||||
$(OBJ_DIR)\rddord.obj \
|
||||
$(OBJ_DIR)\rddsys.obj \
|
||||
|
||||
@@ -285,13 +285,13 @@ void hb_pp_SetRules( BOOL (*hb_compInclude)(char *, PATHNAMES * ), BOOL hb_comp_
|
||||
}
|
||||
else
|
||||
{
|
||||
hb_compGenError( hb_pp_szErrors, 'F', HB_COMP_ERR_BAD_RULES_FILE_NAME, hb_pp_STD_CH, NULL );
|
||||
hb_compGenError( hb_pp_szErrors, 'F', HB_PP_ERR_BAD_RULES_FILE_NAME, hb_pp_STD_CH, NULL );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( ! hb_comp_bQuiet )
|
||||
printf( "Standard command definitions excluded!\n" );
|
||||
printf( "Standard command definitions excluded.\n" );
|
||||
|
||||
hb_pp_Init();
|
||||
}
|
||||
|
||||
@@ -13,8 +13,9 @@ C_SOURCES=\
|
||||
|
||||
PRG_SOURCES=\
|
||||
dbf0.prg \
|
||||
dblist.prg \
|
||||
dblist.prg \
|
||||
dbstrux.prg \
|
||||
dbupdat.prg \
|
||||
sdf0.prg \
|
||||
delim0.prg \
|
||||
rddord.prg \
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* __DBLIST(), __DBUPDATE() functions
|
||||
* __DBLIST() function
|
||||
*
|
||||
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
* www - http://www.harbour-project.org
|
||||
@@ -33,86 +33,74 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common.ch"
|
||||
#include "set.ch"
|
||||
/* NOTE: lAll is basically a dummy parameter, nothing really depends on it.
|
||||
[vszakats] */
|
||||
|
||||
FUNCTION __dbList(lOff,aList,lAll,bFor,bWhile,nNext,nRec,lRest,lPrint,cFile)
|
||||
Local bBlock,lPrinter,lExtra,cExtraFile,oError
|
||||
FUNCTION __dbList( lOff, abEval, lAll, bFor, bWhile, nNext, nRecord, lRest, lToPrint, cToFileName )
|
||||
LOCAL lOldPrinter
|
||||
LOCAL lOldExtra
|
||||
LOCAL cOldExtraFile
|
||||
|
||||
IF lOff
|
||||
bBlock:={|| (Qout(if(Deleted(), "*", " ")), aEval(aList, ;
|
||||
{|cItem| qqout(eval(cItem),"")}))}
|
||||
ELSE
|
||||
bBlock:={|| (Qout(STR(Recno(),7), if(Deleted(), "*", " ")), aEval(aList, ;
|
||||
{|cItem| qqout(eval(cItem),"")}))}
|
||||
ENDIF
|
||||
LOCAL oError
|
||||
|
||||
IF (!EMPTY(lPrint))
|
||||
lPrinter := SET(_SET_PRINTER,.T.)
|
||||
ENDIF
|
||||
LOCAL bOutBlock
|
||||
|
||||
IF (!EMPTY(cFile))
|
||||
IF EMPTY(AT(".",cFile))
|
||||
cFile += ".txt"
|
||||
ENDIF
|
||||
lExtra := SET(_SET_EXTRA, .T.)
|
||||
cExtraFile := SET(_SET_EXTRAFILE,cFile)
|
||||
ENDIF
|
||||
BEGIN SEQUENCE
|
||||
IF (EMPTY(lAll) .and. EMPTY(bFor) .and. EMPTY(bWhile) .and. EMPTY(nNext) .and. ;
|
||||
EMPTY(nRec) .and. EMPTY(lRest))
|
||||
EVAL(bBlock)
|
||||
ELSE
|
||||
DBEVAL(bBlock,bFor,bWhile,nNext,nRec,lRest)
|
||||
ENDIF
|
||||
RECOVER Using oError
|
||||
END SEQUENCE
|
||||
IF (!EMPTY(lPrint))
|
||||
set printer to (lPrinter)
|
||||
ENDIF
|
||||
/* Choose the output style */
|
||||
|
||||
IF (!EMPTY(cFile))
|
||||
SET(_SET_EXTRA,lExtra)
|
||||
SET(_SET_EXTRAFILE,cExtraFile)
|
||||
ENDIF
|
||||
IF oError != NIL
|
||||
Break(oError)
|
||||
Endif
|
||||
IF lOff
|
||||
bOutBlock := {|| QOut( iif( Deleted(), "*", " " ) ),;
|
||||
aEval( abEval, {| bEval | QQOut( Eval( bEval ), "" ) } ) }
|
||||
ELSE
|
||||
bOutBlock := {|| QOut( Str( RecNo(), 7 ), iif( Deleted(), "*", " " ) ),;
|
||||
aEval( abEval, {| bEval | QQOut( Eval( bEval ), "" ) } ) }
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
/* Save SETs */
|
||||
|
||||
FUNCTION __dbUpdate(cAlias,bKey,lRand,bFields)
|
||||
IF !Empty( lToPrint )
|
||||
lOldPrinter := Set(_SET_PRINTER, .T. )
|
||||
ENDIF
|
||||
IF !Empty( cToFileName )
|
||||
IF At( ".", cToFileName ) == 0
|
||||
cToFileName := cToFileName + ".txt"
|
||||
ENDIF
|
||||
lOldExtra := Set( _SET_EXTRA, .T. )
|
||||
cOldExtraFile := Set( _SET_EXTRAFILE, cToFileName )
|
||||
ENDIF
|
||||
|
||||
Local CurArea,oError,bBlock
|
||||
Default lRand to .F.
|
||||
DBGOTOP()
|
||||
CurArea:=Select()
|
||||
BEGIN SEQUENCE
|
||||
DBSELECTAREA(cAlias)
|
||||
DBGOTOP()
|
||||
While !EOF()
|
||||
bBlock:=EVAL(bKey)
|
||||
DBSELECTAREA(CurArea)
|
||||
IF lRand
|
||||
dbSeek(bBlock, if(.F. ,.T.,NIL))
|
||||
IF Found()
|
||||
Eval(bFields)
|
||||
Endif
|
||||
ELSE
|
||||
DO WHILE(Eval(bKey) < bBlock .AND. !EOF())
|
||||
dbSkip()
|
||||
ENDDO
|
||||
IF (Eval(bKey) == bBlock .AND. !EOF())
|
||||
Eval(bFields)
|
||||
ENDIF
|
||||
ENDIF
|
||||
dbSelectArea(cAlias)
|
||||
dbSkip()
|
||||
ENDDO
|
||||
RECOVER USING oError
|
||||
END SEQUENCE
|
||||
dbSelectArea(CurArea)
|
||||
IF oError != NIL
|
||||
Break(oError)
|
||||
ENDIF
|
||||
Return .T.
|
||||
/* Do the job */
|
||||
|
||||
BEGIN SEQUENCE
|
||||
|
||||
IF Empty( lAll ) .AND. ;
|
||||
Empty( bFor ) .AND. ;
|
||||
Empty( bWhile ) .AND. ;
|
||||
Empty( nNext ) .AND. ;
|
||||
Empty( nRecord ) .AND. ;
|
||||
Empty( lRest )
|
||||
|
||||
Eval( bOutBlock )
|
||||
ELSE
|
||||
dbEval( bOutBlock, bFor, bWhile, nNext, nRecord, lRest )
|
||||
ENDIF
|
||||
|
||||
RECOVER USING oError
|
||||
END SEQUENCE
|
||||
|
||||
/* Restor SETs */
|
||||
|
||||
IF !Empty( lToPrint )
|
||||
Set( _SET_PRINTER, lOldPrinter )
|
||||
ENDIF
|
||||
IF !Empty( cToFileName )
|
||||
Set( _SET_EXTRAFILE, cOldExtraFile )
|
||||
Set( _SET_EXTRA, lOldExtra )
|
||||
ENDIF
|
||||
|
||||
/* On error signal the error for the higher level error handler or quit */
|
||||
|
||||
IF oError != NIL
|
||||
Break( oError )
|
||||
ENDIF
|
||||
|
||||
RETURN NIL
|
||||
|
||||
85
harbour/source/rdd/dbupdat.prg
Normal file
85
harbour/source/rdd/dbupdat.prg
Normal file
@@ -0,0 +1,85 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
* Harbour Project source code:
|
||||
* __DBUPDATE() function
|
||||
*
|
||||
* Copyright 2000 Luiz Rafael Culik <culik@sl.conex.net>
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version, with one exception:
|
||||
*
|
||||
* The exception is that if you link the Harbour Runtime Library (HRL)
|
||||
* and/or the Harbour Virtual Machine (HVM) with other files to produce
|
||||
* an executable, this does not by itself cause the resulting executable
|
||||
* to be covered by the GNU General Public License. Your use of that
|
||||
* executable is in no way restricted on account of linking the HRL
|
||||
* and/or HVM code into it.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA (or visit
|
||||
* their web site at http://www.gnu.org/).
|
||||
*
|
||||
*/
|
||||
|
||||
#include "common.ch"
|
||||
|
||||
FUNCTION __dbUpdate( cAlias, bKey, lRandom, bAssign )
|
||||
LOCAL nOldArea := Select()
|
||||
LOCAL xKey
|
||||
LOCAL xPrevKey
|
||||
|
||||
LOCAL oError
|
||||
|
||||
DEFAULT lRandom TO .F.
|
||||
|
||||
dbGoTop()
|
||||
|
||||
BEGIN SEQUENCE
|
||||
|
||||
dbSelectArea( cAlias )
|
||||
dbGoTop()
|
||||
DO WHILE !Eof()
|
||||
|
||||
xKey := Eval( bKey )
|
||||
|
||||
dbSelectArea( nOldArea )
|
||||
IF lRandom
|
||||
IF dbSeek( xKey )
|
||||
Eval( bAssign )
|
||||
ENDIF
|
||||
ELSE
|
||||
DO WHILE Eval( bKey ) < xKey .AND. !Eof()
|
||||
dbSkip()
|
||||
ENDDO
|
||||
|
||||
IF Eval( bKey ) == xKey .AND. !Eof()
|
||||
Eval( bAssign )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
dbSelectArea( cAlias )
|
||||
dbSkip()
|
||||
ENDDO
|
||||
|
||||
RECOVER USING oError
|
||||
END SEQUENCE
|
||||
|
||||
dbSelectArea( nOldArea )
|
||||
|
||||
IF oError != NIL
|
||||
Break( oError )
|
||||
ENDIF
|
||||
|
||||
RETURN .T.
|
||||
@@ -142,7 +142,7 @@ PRG_SOURCES=\
|
||||
tgetlist.prg \
|
||||
tlabel.prg \
|
||||
tmenuitm.prg \
|
||||
tobject.prg \
|
||||
tobject.prg \
|
||||
tpopup.prg \
|
||||
treport.prg \
|
||||
ttextlin.prg \
|
||||
|
||||
@@ -46,6 +46,8 @@ void hb_gt_Init( int iFilenoStdin, int iFilenoStdout, int iFilenoStderr )
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Init()"));
|
||||
|
||||
/* TODO: Is anything required to initialize the video subsystem? */
|
||||
|
||||
s_uiDispCount = 0;
|
||||
}
|
||||
|
||||
void hb_gt_Exit( void )
|
||||
@@ -112,7 +114,9 @@ BOOL hb_gt_AdjustPos( BYTE * pStr, ULONG ulLen )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hb_gt_SetPos( row, col );
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -342,6 +346,7 @@ BOOL hb_gt_GetBlink()
|
||||
from intensity to 'blinking'
|
||||
does this work under your platform?
|
||||
*/
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -374,7 +379,6 @@ USHORT hb_gt_DispCount()
|
||||
return s_uiDispCount;
|
||||
}
|
||||
|
||||
|
||||
void hb_gt_Replicate( USHORT uiRow, USHORT uiCol, BYTE byAttr, BYTE byChar, ULONG nLength )
|
||||
{
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_gt_Replicate(%hu, %hu, %i, %i, %lu)", uiRow, uiCol, byAttr, byChar, nLength));
|
||||
@@ -386,15 +390,15 @@ void hb_gt_Replicate( USHORT uiRow, USHORT uiCol, BYTE byAttr, BYTE byChar, ULON
|
||||
}
|
||||
|
||||
USHORT hb_gt_Box( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight,
|
||||
BYTE *szBox, BYTE byAttr )
|
||||
BYTE * szBox, BYTE byAttr )
|
||||
{
|
||||
|
||||
HB_SYMBOL_UNUSED( uiTop );
|
||||
HB_SYMBOL_UNUSED( uiLeft );
|
||||
HB_SYMBOL_UNUSED( uiBottom );
|
||||
HB_SYMBOL_UNUSED( uiRight );
|
||||
HB_SYMBOL_UNUSED( szBox );
|
||||
HB_SYMBOL_UNUSED( byAttr );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -414,6 +418,7 @@ USHORT hb_gt_HorizLine( USHORT uiRow, USHORT uiLeft, USHORT uiRight, BYTE byChar
|
||||
hb_gt_Replicate( uiRow, uiLeft, byAttr, byChar, uiRight - uiLeft + 1 );
|
||||
else
|
||||
hb_gt_Replicate( uiRow, uiRight, byAttr, byChar, uiLeft - uiRight + 1 );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -428,7 +433,19 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
uRow = uiBottom;
|
||||
uiBottom = uiTop;
|
||||
}
|
||||
|
||||
while( uRow <= uiBottom )
|
||||
hb_gt_xPutch( uRow++, uiCol, byAttr, byChar );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -163,13 +163,13 @@ USHORT hb_gtBox( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight, B
|
||||
uiMaxCol = hb_gt_GetScreenWidth();
|
||||
|
||||
/* TODO: Would be better to support these cases, Clipper implementation was
|
||||
quite messy, which can be considered as a bug there. [vszakats] */
|
||||
quite messy, which can be considered as a bug. [vszakats] */
|
||||
|
||||
if( uiTop < uiMaxRow && uiBottom < uiMaxRow &&
|
||||
uiLeft < uiMaxCol && uiRight < uiMaxCol )
|
||||
{
|
||||
/* NOTE: For full compatibility, pad box string with last char if too
|
||||
short [vszakats] */
|
||||
/* NOTE: For full compatibility, pad box string with last char if too
|
||||
short [vszakats] */
|
||||
USHORT tmp;
|
||||
BYTE cPadChar;
|
||||
BYTE szBox[ 10 ];
|
||||
@@ -317,10 +317,11 @@ USHORT hb_gtPreExt( void )
|
||||
|
||||
while( uidc-- )
|
||||
hb_gt_DispEnd();
|
||||
|
||||
/* call platform depend layer to flush all pending outputs and
|
||||
* to prepare screen for direct updating
|
||||
*/
|
||||
hb_gt_Suspend();
|
||||
hb_gt_PreExt();
|
||||
}
|
||||
|
||||
s_uiPreCNest = 1;
|
||||
@@ -338,7 +339,7 @@ USHORT hb_gtPostExt( void )
|
||||
if( s_uiPreCNest == 1 )
|
||||
{
|
||||
/* call platform depend layer to restore all settings */
|
||||
hb_gt_Resume();
|
||||
hb_gt_PostExt();
|
||||
|
||||
while( s_uiPreCount-- )
|
||||
hb_gt_DispBegin();
|
||||
|
||||
@@ -752,20 +752,20 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
hb_gt_Exit_Terminal();
|
||||
hb_gt_Exit_Mouse();
|
||||
hb_gt_Exit_Keyboard();
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
hb_gt_Initialize_Terminal();
|
||||
hb_gt_Initialize_Mouse();
|
||||
hb_gt_Initialize_Keyboard();
|
||||
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1395,12 +1395,12 @@ BOOL hb_gt_SetMode( USHORT uiRows, USHORT uiCols )
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -948,12 +948,12 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -564,12 +564,12 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ int SLtt_Has_Alt_Charset = 1;
|
||||
char *SLtt_Graphics_Char_Pairs = "";
|
||||
#endif
|
||||
|
||||
extern int hb_gt_Init_Terminal(int phase);
|
||||
extern int hb_gt_Init_Terminal( int phase );
|
||||
static void hb_gt_build_conv_tabs();
|
||||
|
||||
static USHORT uiDispCount;
|
||||
@@ -65,7 +65,7 @@ static int cursorVisible = 1;
|
||||
static int linuxConsole = 0;
|
||||
static int underXTerm = 0;
|
||||
/* indicate if we are currently running a command from system */
|
||||
static int uiSuspended = 0;
|
||||
static BOOL s_bSuspended = FALSE;
|
||||
|
||||
/* to convert high characters (mostly graphics and control chars) */
|
||||
static unsigned char convHighChars[ 256 ];
|
||||
@@ -791,26 +791,30 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
finish its work. They should be called from run.c.
|
||||
They are not re-enrant ???.
|
||||
*/
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
if ( !uiSuspended )
|
||||
if ( SLsmg_suspend_smg() != (-1) )
|
||||
if( ! s_bSuspended )
|
||||
{
|
||||
if( SLsmg_suspend_smg() != -1 )
|
||||
{
|
||||
SLang_reset_tty();
|
||||
uiSuspended = 1;
|
||||
s_bSuspended = TRUE;
|
||||
}
|
||||
return uiSuspended;
|
||||
}
|
||||
|
||||
return s_bSuspended;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
if ( uiSuspended )
|
||||
if ( SLsmg_resume_smg() != (-1) )
|
||||
/* reinitialize a terminal */
|
||||
if ( hb_gt_Init_Terminal( 1 ) != (-1) )
|
||||
uiSuspended = 0;
|
||||
if( s_bSuspended &&
|
||||
SLsmg_resume_smg() != -1 &&
|
||||
hb_gt_Init_Terminal( 1 ) != -1 ) /* reinitialize a terminal */
|
||||
{
|
||||
s_bSuspended = FALSE;
|
||||
}
|
||||
|
||||
return uiSuspended;
|
||||
return s_bSuspended;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------ */
|
||||
|
||||
@@ -531,12 +531,12 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -1249,9 +1249,8 @@ USHORT hb_gt_DispCount()
|
||||
return s_uiDispCount;
|
||||
}
|
||||
|
||||
|
||||
USHORT hb_gt_Box( USHORT uiTop, USHORT uiLeft, USHORT uiBottom, USHORT uiRight,
|
||||
BYTE *szBox, BYTE byAttr )
|
||||
BYTE * szBox, BYTE byAttr )
|
||||
{
|
||||
USHORT uiRow;
|
||||
USHORT uiCol;
|
||||
@@ -1345,6 +1344,7 @@ USHORT hb_gt_HorizLine( USHORT uiRow, USHORT uiLeft, USHORT uiRight, BYTE byChar
|
||||
hb_gt_Replicate( uiRow, uiLeft, byAttr, byChar, uiRight - uiLeft + 1 );
|
||||
else
|
||||
hb_gt_Replicate( uiRow, uiRight, byAttr, byChar, uiLeft - uiRight + 1 );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1359,17 +1359,19 @@ USHORT hb_gt_VertLine( USHORT uiCol, USHORT uiTop, USHORT uiBottom, BYTE byChar,
|
||||
uRow = uiBottom;
|
||||
uiBottom = uiTop;
|
||||
}
|
||||
|
||||
while( uRow <= uiBottom )
|
||||
hb_gt_xPutch( uRow++, uiCol, byAttr, byChar );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Suspend()
|
||||
BOOL hb_gt_PreExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOL hb_gt_Resume()
|
||||
BOOL hb_gt_PostExt()
|
||||
{
|
||||
return 1;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -59,12 +59,11 @@
|
||||
#include "common.ch"
|
||||
#include "hboo.ch"
|
||||
|
||||
REQUEST TOBJECT
|
||||
//----------------------------------------------------------------------------//
|
||||
REQUEST TObject
|
||||
|
||||
FUNCTION TClass()
|
||||
|
||||
STATIC s_hClass := NIL
|
||||
STATIC s_hClass /* NOTE: Automatically default to NIL */
|
||||
|
||||
IF s_hClass == NIL
|
||||
s_hClass := __clsNew( "TCLASS", 9 )
|
||||
|
||||
@@ -34,61 +34,56 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* NOTE: we need this to prevent base types redefinition */
|
||||
#define _CLIPDEFS_H
|
||||
|
||||
#include "hbapi.h"
|
||||
#include "extend.api"
|
||||
#include "item.api"
|
||||
|
||||
static char * hb_strToken( char * szText, long lText,
|
||||
long lIndex,
|
||||
static char * hb_strToken( char * szText, ULONG ulText,
|
||||
ULONG ulIndex,
|
||||
char cDelimiter,
|
||||
long * plLen )
|
||||
ULONG * pulLen )
|
||||
{
|
||||
long lStart;
|
||||
long lEnd = 0;
|
||||
long lCounter = 0;
|
||||
ULONG ulStart;
|
||||
ULONG ulEnd = 0;
|
||||
ULONG ulCounter = 0;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_strToken(%s, %ld, %ld, %d, %p)", szText, lText, lIndex, (int) cDelimiter, plLen));
|
||||
HB_TRACE(HB_TR_DEBUG, ("hb_strToken(%s, %lu, %lu, %d, %p)", szText, ulText, ulIndex, (int) cDelimiter, pulLen));
|
||||
|
||||
do
|
||||
{
|
||||
lStart = lEnd;
|
||||
ulStart = ulEnd;
|
||||
|
||||
if( cDelimiter != ' ' )
|
||||
{
|
||||
if( szText[ lStart ] == cDelimiter )
|
||||
lStart++;
|
||||
if( szText[ ulStart ] == cDelimiter )
|
||||
ulStart++;
|
||||
}
|
||||
else
|
||||
{
|
||||
while( lStart < lText && szText[ lStart ] == cDelimiter )
|
||||
lStart++;
|
||||
while( ulStart < ulText && szText[ ulStart ] == cDelimiter )
|
||||
ulStart++;
|
||||
}
|
||||
|
||||
if( lStart < lText && szText[ lStart ] != cDelimiter )
|
||||
if( ulStart < ulText && szText[ ulStart ] != cDelimiter )
|
||||
{
|
||||
lEnd = lStart + 1;
|
||||
ulEnd = ulStart + 1;
|
||||
|
||||
while( lEnd < lText && szText[lEnd] != cDelimiter )
|
||||
lEnd++;
|
||||
while( ulEnd < ulText && szText[ ulEnd ] != cDelimiter )
|
||||
ulEnd++;
|
||||
}
|
||||
else
|
||||
lEnd = lStart;
|
||||
ulEnd = ulStart;
|
||||
|
||||
}
|
||||
while( lCounter++ < lIndex - 1 && lEnd < lText );
|
||||
while( ulCounter++ < ulIndex - 1 && ulEnd < ulText );
|
||||
|
||||
if( lCounter < lIndex )
|
||||
if( ulCounter < ulIndex )
|
||||
{
|
||||
*plLen = 0;
|
||||
*pulLen = 0;
|
||||
return "";
|
||||
}
|
||||
else
|
||||
{
|
||||
*plLen = lEnd - lStart;
|
||||
return szText + lStart;
|
||||
*pulLen = ulEnd - ulStart;
|
||||
return szText + ulStart;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,38 +91,44 @@ static char * hb_strToken( char * szText, long lText,
|
||||
HB_FUNC( __STRTOKEN )
|
||||
{
|
||||
char * pszText;
|
||||
long lLen;
|
||||
ULONG ulLen;
|
||||
|
||||
pszText = hb_strToken( hb_parc( 1 ), hb_parclen( 1 ),
|
||||
hb_parnl( 2 ),
|
||||
ISCHAR( 3 ) ? *hb_parc( 3 ) : ' ',
|
||||
&lLen );
|
||||
&ulLen );
|
||||
|
||||
hb_retclen( pszText, lLen );
|
||||
hb_retclen( pszText, ulLen );
|
||||
}
|
||||
|
||||
|
||||
/* like __STRTOKEN but returns next token starting from passed position (0 based) inside string
|
||||
StrTkPtr(cString, @nTokPos, Chr(9))
|
||||
/* like __STRTOKEN() but returns next token starting from passed position
|
||||
(0 based) inside string.
|
||||
__StrTkPtr( cString, @nTokPos, Chr( 9 ) )
|
||||
*/
|
||||
HB_FUNC(__STRTKPTR)
|
||||
HB_FUNC( __STRTKPTR )
|
||||
{
|
||||
char * pszString = hb_parc(1);
|
||||
long lLen, lStrLen = hb_parclen(1);
|
||||
long lPos = hb_parnl(2);
|
||||
char * pszString = hb_parc( 1 );
|
||||
ULONG ulStrLen = hb_parclen( 1 );
|
||||
ULONG ulLen;
|
||||
ULONG ulPos = hb_parnl( 2 );
|
||||
char * pszText;
|
||||
|
||||
/* move start of string past last returned token */
|
||||
pszString = (char *) ((ULONG) pszString + (ULONG) lPos);
|
||||
pszString += ulPos;
|
||||
|
||||
/* decrease length of string consequently */
|
||||
lStrLen -= lPos + 1;
|
||||
ulStrLen -= ulPos + 1;
|
||||
|
||||
pszText = hb_strToken(pszString, lStrLen, 1, ISCHAR(3) ? *hb_parc(3) : ' ', &lLen);
|
||||
pszText = hb_strToken( pszString, ulStrLen,
|
||||
1,
|
||||
ISCHAR( 3 ) ? *hb_parc( 3 ) : ' ',
|
||||
&ulLen );
|
||||
|
||||
/* return position to start next search from */
|
||||
_stornl((ULONG) lPos + ((ULONG) pszText - (ULONG) pszString + lLen + 1), 2);
|
||||
hb_stornl( pszText - pszString + ulPos + ulLen + 1, 2 );
|
||||
|
||||
/* return token */
|
||||
hb_retclen(pszText, lLen);
|
||||
hb_retclen( pszText, ulLen );
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* Harbour Project source code:
|
||||
* Base Object from wich all object finally inherit
|
||||
*
|
||||
* Copyright 2000 JfL&RaC <jfl@mafact.com>, <rac@mafact.com>
|
||||
* Copyright 2000 JfL&RaC <jfl@mafact.com>, <rac@mafact.com>
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
@@ -33,70 +33,59 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* The following parts are Copyright of the individual authors.
|
||||
* www - http://www.harbour-project.org
|
||||
*
|
||||
* This is work in progress ... To be continued
|
||||
*
|
||||
* See doc/license.txt for licensing terms.
|
||||
*
|
||||
*/
|
||||
|
||||
/* Harbour Class TObject ! Warning ... can not use the preprocessor */
|
||||
/* WARNING: Can not use the preprocessor */
|
||||
|
||||
#include "common.ch"
|
||||
#include "hboo.ch"
|
||||
|
||||
function TObject()
|
||||
static oClass
|
||||
local nScope := 1
|
||||
FUNCTION TObject()
|
||||
STATIC s_oClass
|
||||
LOCAL nScope := 1
|
||||
|
||||
IF s_oClass == NIL
|
||||
s_oClass := TClass():New( "TObject", {} )
|
||||
|
||||
s_oClass:AddInline( "CLASSNAME" , {| Self | __OBJGETCLSNAME( Self ) }, nScope )
|
||||
s_oClass:AddInline( "CLASSH" , {| Self | __CLASSH( Self ) }, nScope )
|
||||
s_oClass:AddInline( "CLASSSEL" , {| Self | __CLASSSEL( Self:CLASSH() ) }, nScope )
|
||||
|
||||
/*s_oClass:AddInline( "EVAL" , {| Self | __EVAL( Self ) }, nScope ) */
|
||||
/*s_oClass:AddInline( "ISDERIVEDFROM" , {| Self, xPar1 | __ObjDerivedFrom( Self, xPar1 ) }, nScope ) */
|
||||
|
||||
/* Those one exist within Class(y), so we will probably try to implement it */
|
||||
|
||||
/*s_oClass:AddInline( "INIT" , {| Self | Self }, nScope ) */
|
||||
/*s_oClass:AddInline( "MSGNOTFOUND" , {| Self | }, nScope ) */
|
||||
|
||||
/*s_oClass:AddInline( "ISKINDOF" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "asString" , {| Self | ::class:name + " object" }, nScope ) */
|
||||
/*s_oClass:AddInline( "asExpStr" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "basicSize" , {| Self | Len( Self ) }, nScope ) */
|
||||
/*s_oClass:AddInline( "become" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "isEqual" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "isScalar" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "copy" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "deepCopy" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "deferred" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "exec" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "error , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "hash" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "null" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "size" , {| Self | Len( Self ) }, nScope ) */
|
||||
/*s_oClass:AddInline( "protectErr" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "hiddenErr" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "msgNotFound" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "readOnlyErr" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "wrongClass" , {| Self | }, nScope ) */
|
||||
/*s_oClass:AddInline( "badMethod" , {| Self | }, nScope ) */
|
||||
|
||||
if oClass == nil
|
||||
oClass := TClass():New("TObject", {} )
|
||||
/* this one exit within VO and is Auto Called when object ran out of scope */
|
||||
|
||||
/*s_oClass:AddInline( "Axit" , {| Self | }, nScope ) */
|
||||
|
||||
s_oClass:Create()
|
||||
|
||||
oClass:AddInline("CLASSNAME" , {|Self | __OBJGETCLSNAME( SELF ) }, nScope )
|
||||
oClass:AddInline("CLASSH" , {|Self | __CLASSH( SELF ) }, nScope )
|
||||
oClass:AddInline("CLASSSEL" , {|Self | __CLASSSEL( SELF:CLASSH() ) }, nScope )
|
||||
|
||||
/*oClass:AddInline("EVAL" ,{|Self | __EVAL( SELF ) }, nScope ) */
|
||||
/*oClass:AddInline("ISDERIVEDFROM" ,{|Self, xPar1 | ObjDerivedFrom( SELF,xPar1 ) }, nScope ) */
|
||||
|
||||
/* Those one exist within class(y), so we will probably try to implement it */
|
||||
|
||||
/*oClass:AddInline("INIT" ,{|Self | Self }, nScope ) */
|
||||
/*oClass:AddInline("MSGNOTFOUND" ,{|Self | }, nScope ) */
|
||||
|
||||
/*oClass:AddInline("ISKINDOF" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("asString" ,{|Self | ::class:name + " object" }, nScope ) */
|
||||
/*oClass:AddInline("asExpStr" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("basicSize" ,{|Self | LEN( self ) }, nScope ) */
|
||||
/*oClass:AddInline("become" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("isEqual" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("isScalar" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("copy" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("deepCopy" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("deferred" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("exec" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("error ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("hash" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("null" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("size" ,{|Self | LEN( self ) }, nScope ) */
|
||||
/*oClass:AddInline("protectErr" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("hiddenErr" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("msgNotFound" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("readOnlyErr" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("wrongClass" ,{|Self | }, nScope ) */
|
||||
/*oClass:AddInline("badMethod" ,{|Self | }, nScope ) */
|
||||
|
||||
|
||||
/* this one exit within VO and is Auto Called when object ran out of scope */
|
||||
|
||||
/*oClass:AddInline("Axit" ,{|Self | }, nScope ) */
|
||||
|
||||
|
||||
oClass:Create()
|
||||
endif
|
||||
|
||||
return oClass:Instance()
|
||||
ENDIF
|
||||
|
||||
RETURN s_oClass:Instance()
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
#define PF_LEFT 0x0001 /* @B */
|
||||
#define PF_CREDIT 0x0002 /* @C */
|
||||
#define PF_DEBIT 0x0004 /* @X */
|
||||
#define PF_ZERO 0x0008 /* @0 */ /* NOTE: This is a Harbour extension [vszakats] */
|
||||
#define PF_PADL 0x0008 /* @L */ /* NOTE: This is a FoxPro/XPP extension [vszakats] */
|
||||
#define PF_PARNEG 0x0010 /* @( */
|
||||
#define PF_REMAIN 0x0020 /* @R */
|
||||
#define PF_UPPER 0x0040 /* @! */
|
||||
@@ -65,276 +65,11 @@
|
||||
#define PF_EXCHANG 0x0100 /* @E. Also means exchange . and , */
|
||||
#define PF_EMPTY 0x0200 /* @Z */
|
||||
#define PF_NUMDATE 0x0400 /* Internal flag. Ignore decimal dot */
|
||||
#define PF_STRING 0x0800 /* @S */
|
||||
|
||||
/*
|
||||
PictFunc -> Analyze function flags and return binary flags bits
|
||||
|
||||
pszPic : Pointer to the picture
|
||||
pulPicLen : Pointer to the length. Changed during execution.
|
||||
pulPicStart : Pointer to the starting position of the picture template.
|
||||
*/
|
||||
static USHORT PictFunc( char ** pszPic, ULONG * pulPicLen, ULONG * pulPicStart )
|
||||
{
|
||||
BOOL bDone = FALSE;
|
||||
USHORT uiPicFlags = 0;
|
||||
ULONG ulPicLen = *pulPicLen;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("PictFunc(%p, %p)", pszPic, pulPicLen));
|
||||
|
||||
/* If an "@" char is at the first pos, we have picture function */
|
||||
|
||||
if( **pszPic == '@' )
|
||||
{
|
||||
/* Skip the "@" char */
|
||||
|
||||
( *pszPic )++;
|
||||
( *pulPicLen )--;
|
||||
|
||||
/* Go through all function chars, until the end of the picture string
|
||||
or any whitespace found. */
|
||||
|
||||
while( *pulPicLen && ! bDone )
|
||||
{
|
||||
switch( toupper( **pszPic ) )
|
||||
{
|
||||
case HB_CHAR_HT:
|
||||
case ' ':
|
||||
bDone = TRUE; /* End of function string */
|
||||
break;
|
||||
case '!':
|
||||
uiPicFlags |= PF_UPPER;
|
||||
break;
|
||||
case '(':
|
||||
uiPicFlags |= PF_PARNEG;
|
||||
break;
|
||||
case '0':
|
||||
uiPicFlags |= PF_ZERO;
|
||||
break;
|
||||
case 'B':
|
||||
uiPicFlags |= PF_LEFT;
|
||||
break;
|
||||
case 'C':
|
||||
uiPicFlags |= PF_CREDIT;
|
||||
break;
|
||||
case 'D':
|
||||
uiPicFlags |= PF_DATE;
|
||||
break;
|
||||
case 'E':
|
||||
uiPicFlags |= PF_BRITISH;
|
||||
break;
|
||||
case 'R':
|
||||
uiPicFlags |= PF_REMAIN;
|
||||
break;
|
||||
case 'S':
|
||||
uiPicFlags |= PF_STRING;
|
||||
break;
|
||||
case 'X':
|
||||
uiPicFlags |= PF_DEBIT;
|
||||
break;
|
||||
case 'Z':
|
||||
uiPicFlags |= PF_EMPTY;
|
||||
break;
|
||||
}
|
||||
|
||||
( *pszPic )++;
|
||||
( *pulPicLen )--;
|
||||
}
|
||||
}
|
||||
|
||||
/* Get start pos of template */
|
||||
*pulPicStart = ulPicLen - *pulPicLen;
|
||||
|
||||
return uiPicFlags;
|
||||
}
|
||||
|
||||
/*
|
||||
NumPicture -> Handle a numeric picture.
|
||||
|
||||
szPic : Picture
|
||||
ulPicLen : Length of picture
|
||||
puiPicFlags : Function flags. NUM_DATE tells whether its a number or date
|
||||
dValue : Number to picture
|
||||
pulResultLen : The size of the returned string is passed here !
|
||||
iOrigWidth : Original width
|
||||
iOrigDec : Original decimals
|
||||
*/
|
||||
static char * NumPicture( char * szPic, ULONG ulPicLen, USHORT * puiPicFlags, double dValue,
|
||||
ULONG * pulResultLen, int iOrigWidth, int iOrigDec )
|
||||
{
|
||||
int iWidth; /* Width of string */
|
||||
int iDec; /* Number of decimals */
|
||||
ULONG i;
|
||||
int iCount = 0;
|
||||
|
||||
char * szResult;
|
||||
char * szStr;
|
||||
char cPic;
|
||||
|
||||
PHB_ITEM pNumber;
|
||||
PHB_ITEM pWidth;
|
||||
PHB_ITEM pDec;
|
||||
|
||||
BOOL bFound = FALSE;
|
||||
|
||||
USHORT uiPicFlags = *puiPicFlags;
|
||||
double dPush;
|
||||
|
||||
HB_TRACE(HB_TR_DEBUG, ("NumPicture(%s, %lu, %p, %lf)", szPic, ulPicLen, puiPicFlags, dValue));
|
||||
|
||||
szResult = ( char * ) hb_xgrab( ulPicLen + 4 ); /* Grab enough */
|
||||
*szResult = '\0';
|
||||
for( i = 0; i < ulPicLen && !bFound; i++ ) /* Count number in front */
|
||||
{
|
||||
if( szPic[ i ] == '.' )
|
||||
bFound = !( uiPicFlags & PF_NUMDATE ); /* Exit when numeric */
|
||||
else if( szPic[ i ] == '9' || szPic[ i ] == '#' ||
|
||||
szPic[ i ] == '$' || szPic[ i ] == '*' )
|
||||
iCount++;
|
||||
}
|
||||
iWidth = iCount;
|
||||
|
||||
if( bFound ) /* Did we find a dot */
|
||||
{
|
||||
iDec = 0;
|
||||
iWidth++; /* Also adjust iWidth */
|
||||
for( ; i < ulPicLen; i++ )
|
||||
{
|
||||
if( szPic[ i ] == '9' ||
|
||||
szPic[ i ] == '#' ||
|
||||
szPic[ i ] == '$' ||
|
||||
szPic[ i ] == '*' )
|
||||
{
|
||||
iWidth++;
|
||||
iDec++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
iDec = 0;
|
||||
|
||||
if( ( uiPicFlags & ( PF_DEBIT + PF_PARNEG ) ) && ( dValue < 0 ) )
|
||||
dPush = -dValue; /* Always push absolute val */
|
||||
else
|
||||
dPush = dValue;
|
||||
|
||||
/* Don't empty the result if the number is not zero */
|
||||
if( dPush != 0 && ( uiPicFlags & PF_EMPTY ) )
|
||||
*puiPicFlags &= ~uiPicFlags;
|
||||
|
||||
if( !iWidth ) /* Width calculated ?? */
|
||||
{
|
||||
iWidth = iOrigWidth; /* Push original width */
|
||||
iDec = iOrigDec; /* Push original decimals */
|
||||
}
|
||||
|
||||
pNumber = hb_itemPutNDLen( NULL, dPush, -1, iDec );
|
||||
pWidth = hb_itemPutNI( NULL, iWidth );
|
||||
pDec = hb_itemPutNI( NULL, iDec );
|
||||
|
||||
szStr = hb_itemStr( pNumber, pWidth, pDec );
|
||||
|
||||
hb_itemRelease( pNumber );
|
||||
hb_itemRelease( pWidth );
|
||||
hb_itemRelease( pDec );
|
||||
|
||||
if( szStr )
|
||||
{
|
||||
iCount = 0;
|
||||
|
||||
/* Pad with Zero's */
|
||||
if( uiPicFlags & PF_ZERO )
|
||||
{
|
||||
for( i = 0; szStr[ i ] == ' ' && i < ( ULONG ) iWidth; i++ )
|
||||
szStr[ i ] = '0';
|
||||
}
|
||||
|
||||
for( i = 0; i < ulPicLen; i++ )
|
||||
{
|
||||
cPic = szPic[ i ];
|
||||
if( cPic == '9' || cPic == '#' )
|
||||
szResult[ i ] = szStr[ iCount++ ]; /* Just copy */
|
||||
else if( cPic == '.' )
|
||||
{
|
||||
if( uiPicFlags & PF_NUMDATE ) /* Dot in date */
|
||||
szResult[ i ] = cPic;
|
||||
else /* Dot in number */
|
||||
{
|
||||
if( uiPicFlags & PF_EXCHANG ) /* Exchange . and , */
|
||||
{
|
||||
szResult[ i ] = ',';
|
||||
iCount++;
|
||||
}
|
||||
else
|
||||
szResult[ i ] = szStr[ iCount++ ];
|
||||
}
|
||||
}
|
||||
else if( cPic == '$' || cPic == '*' )
|
||||
{
|
||||
if( szStr[ iCount ] == ' ' )
|
||||
{
|
||||
szResult[ i ] = cPic;
|
||||
iCount++;
|
||||
}
|
||||
else
|
||||
szResult[ i ] = szStr[ iCount++ ];
|
||||
}
|
||||
else if( cPic == ',' ) /* Comma */
|
||||
{
|
||||
if( iCount && isdigit( ( int ) szStr[ iCount - 1 ] ) )
|
||||
{ /* May we place it */
|
||||
if( uiPicFlags & PF_EXCHANG )
|
||||
szResult[ i ] = '.';
|
||||
else
|
||||
szResult[ i ] = ',';
|
||||
}
|
||||
else
|
||||
szResult[ i ] = ' ';
|
||||
}
|
||||
else
|
||||
szResult[ i ] = cPic;
|
||||
}
|
||||
|
||||
if( ( uiPicFlags & PF_PARNEG ) && ( dValue < 0 ) )
|
||||
{
|
||||
if( isdigit( ( int ) *szResult ) ) /* Overflow */
|
||||
{
|
||||
for( iCount = 1; ( ULONG ) iCount < i; iCount++ )
|
||||
{
|
||||
if( isdigit( ( int ) szResult[ iCount ] ) )
|
||||
szResult[ iCount ] = '*';
|
||||
}
|
||||
}
|
||||
*szResult = '(';
|
||||
szResult[ i++ ] = ')';
|
||||
}
|
||||
|
||||
if( ( uiPicFlags & PF_CREDIT ) && ( dValue >= 0 ) )
|
||||
{
|
||||
szResult[ i++ ] = ' ';
|
||||
szResult[ i++ ] = 'C';
|
||||
szResult[ i++ ] = 'R';
|
||||
}
|
||||
|
||||
if( ( uiPicFlags & PF_DEBIT ) && ( dValue < 0 ) )
|
||||
{
|
||||
szResult[ i++ ] = ' ';
|
||||
szResult[ i++ ] = 'D';
|
||||
szResult[ i++ ] = 'B';
|
||||
}
|
||||
|
||||
*pulResultLen = i;
|
||||
szResult[ i ] = '\0';
|
||||
|
||||
hb_xfree( szStr );
|
||||
}
|
||||
|
||||
return szResult;
|
||||
}
|
||||
#define PF_WIDTH 0x0800 /* @S */
|
||||
|
||||
HB_FUNC( TRANSFORM )
|
||||
{
|
||||
PHB_ITEM pExp = hb_param( 1, HB_IT_ANY ); /* Input parameter */
|
||||
PHB_ITEM pValue = hb_param( 1, HB_IT_ANY ); /* Input parameter */
|
||||
PHB_ITEM pPic = hb_param( 2, HB_IT_STRING ); /* Picture string */
|
||||
|
||||
BOOL bError = FALSE;
|
||||
@@ -343,18 +78,101 @@ HB_FUNC( TRANSFORM )
|
||||
{
|
||||
char * szPic = hb_itemGetCPtr( pPic );
|
||||
ULONG ulPicLen = hb_itemGetCLen( pPic );
|
||||
ULONG ulPicStart; /* Start of template */
|
||||
USHORT uiPicFlags; /* Function flags */
|
||||
USHORT uiPicFlags; /* Function flags */
|
||||
|
||||
ULONG ulParamS;
|
||||
BYTE byParamL;
|
||||
|
||||
char * szResult;
|
||||
ULONG ulResultPos;
|
||||
|
||||
uiPicFlags = PictFunc( &szPic, &ulPicLen, &ulPicStart ); /* Evaluate picture string */
|
||||
/* ======================================================= */
|
||||
/* Analyze picture functions */
|
||||
/* ======================================================= */
|
||||
|
||||
uiPicFlags = 0;
|
||||
|
||||
if( HB_IS_STRING( pExp ) )
|
||||
/* If an "@" char is at the first pos, we have picture function */
|
||||
|
||||
if( *szPic == '@' )
|
||||
{
|
||||
char * szExp = hb_itemGetCPtr( pExp );
|
||||
ULONG ulExpLen = hb_itemGetCLen( pExp );
|
||||
BOOL bDone = FALSE;
|
||||
|
||||
/* Skip the "@" char */
|
||||
|
||||
szPic++;
|
||||
ulPicLen--;
|
||||
|
||||
/* Go through all function chars, until the end of the picture string
|
||||
or any whitespace found. */
|
||||
|
||||
while( ulPicLen && ! bDone )
|
||||
{
|
||||
switch( toupper( *szPic ) )
|
||||
{
|
||||
case HB_CHAR_HT:
|
||||
case ' ':
|
||||
bDone = TRUE; /* End of function string */
|
||||
break;
|
||||
case '!':
|
||||
uiPicFlags |= PF_UPPER;
|
||||
break;
|
||||
case '(':
|
||||
uiPicFlags |= PF_PARNEG;
|
||||
break;
|
||||
case 'L':
|
||||
uiPicFlags |= PF_PADL;
|
||||
byParamL = '0';
|
||||
break;
|
||||
case 'B':
|
||||
uiPicFlags |= PF_LEFT;
|
||||
break;
|
||||
case 'C':
|
||||
uiPicFlags |= PF_CREDIT;
|
||||
break;
|
||||
case 'D':
|
||||
uiPicFlags |= PF_DATE;
|
||||
break;
|
||||
case 'E':
|
||||
uiPicFlags |= PF_BRITISH;
|
||||
break;
|
||||
case 'R':
|
||||
uiPicFlags |= PF_REMAIN;
|
||||
break;
|
||||
case 'S':
|
||||
uiPicFlags |= PF_WIDTH;
|
||||
|
||||
ulParamS = 0;
|
||||
while( ulPicLen > 1 && *( szPic + 1 ) >= '0' && *( szPic + 1 ) <= '9' )
|
||||
{
|
||||
szPic++;
|
||||
ulPicLen--;
|
||||
|
||||
ulParamS = ( ulParamS * 10 ) + ( ( ULONG ) ( *szPic - '0' ) );
|
||||
}
|
||||
|
||||
break;
|
||||
case 'X':
|
||||
uiPicFlags |= PF_DEBIT;
|
||||
break;
|
||||
case 'Z':
|
||||
uiPicFlags |= PF_EMPTY;
|
||||
break;
|
||||
}
|
||||
|
||||
szPic++;
|
||||
ulPicLen--;
|
||||
}
|
||||
}
|
||||
|
||||
/* ======================================================= */
|
||||
/* Handle STRING values */
|
||||
/* ======================================================= */
|
||||
|
||||
if( HB_IS_STRING( pValue ) )
|
||||
{
|
||||
char * szExp = hb_itemGetCPtr( pValue );
|
||||
ULONG ulExpLen = hb_itemGetCLen( pValue );
|
||||
ULONG ulExpPos = 0;
|
||||
|
||||
char szPicDate[ 11 ];
|
||||
@@ -364,23 +182,6 @@ HB_FUNC( TRANSFORM )
|
||||
szResult = ( char * ) hb_xgrab( ulExpLen + ulPicLen );
|
||||
ulResultPos = 0;
|
||||
|
||||
/* [jlalin] */
|
||||
if( uiPicFlags & PF_STRING )
|
||||
{
|
||||
char * szPic2 = hb_itemGetCPtr( pPic );
|
||||
ULONG ulLen = ( ULONG ) atol( szPic2 + 2 );
|
||||
|
||||
if( ulLen & ( ulLen <= ulExpLen ) )
|
||||
{
|
||||
memcpy( szResult, szExp, ulLen );
|
||||
szResult[ ulLen ] = '\0';
|
||||
ulExpPos = ulLen - 1;
|
||||
}
|
||||
|
||||
if( uiPicFlags & PF_UPPER )
|
||||
hb_strupr( szResult );
|
||||
}
|
||||
|
||||
/* Support date function for strings */
|
||||
if( uiPicFlags & PF_DATE )
|
||||
{
|
||||
@@ -391,7 +192,6 @@ HB_FUNC( TRANSFORM )
|
||||
|
||||
szPic = szPicDate;
|
||||
ulPicLen = strlen( szPicDate );
|
||||
ulPicStart = 0;
|
||||
}
|
||||
|
||||
/* Template string */
|
||||
@@ -474,24 +274,193 @@ HB_FUNC( TRANSFORM )
|
||||
}
|
||||
}
|
||||
|
||||
else if( HB_IS_NUMERIC( pExp ) )
|
||||
/* ======================================================= */
|
||||
/* Handle NUMERIC values */
|
||||
/* ======================================================= */
|
||||
|
||||
else if( HB_IS_NUMERIC( pValue ) )
|
||||
{
|
||||
int iOrigWidth;
|
||||
int iOrigDec;
|
||||
double dValue = hb_itemGetND( pValue );
|
||||
double dPush;
|
||||
|
||||
hb_itemGetNLen( pExp, &iOrigWidth, &iOrigDec );
|
||||
int iOrigWidth;
|
||||
int iOrigDec;
|
||||
int iWidth; /* Width of string */
|
||||
int iDec; /* Number of decimals */
|
||||
ULONG i;
|
||||
int iCount = 0;
|
||||
|
||||
char * szStr;
|
||||
char cPic;
|
||||
|
||||
PHB_ITEM pNumber;
|
||||
PHB_ITEM pWidth;
|
||||
PHB_ITEM pDec;
|
||||
|
||||
BOOL bFound = FALSE;
|
||||
|
||||
szResult = NumPicture( szPic, ulPicLen, &uiPicFlags,
|
||||
hb_itemGetND( pExp ), &ulResultPos, iOrigWidth, iOrigDec );
|
||||
hb_itemGetNLen( pValue, &iOrigWidth, &iOrigDec );
|
||||
|
||||
szResult = ( char * ) hb_xgrab( ulPicLen + 4 ); /* Grab enough */
|
||||
*szResult = '\0';
|
||||
|
||||
for( i = 0; i < ulPicLen && !bFound; i++ ) /* Count number in front */
|
||||
{
|
||||
if( szPic[ i ] == '.' )
|
||||
bFound = !( uiPicFlags & PF_NUMDATE ); /* Exit when numeric */
|
||||
else if( szPic[ i ] == '9' || szPic[ i ] == '#' ||
|
||||
szPic[ i ] == '$' || szPic[ i ] == '*' )
|
||||
iCount++;
|
||||
}
|
||||
iWidth = iCount;
|
||||
|
||||
if( bFound ) /* Did we find a dot */
|
||||
{
|
||||
iDec = 0;
|
||||
iWidth++; /* Also adjust iWidth */
|
||||
for( ; i < ulPicLen; i++ )
|
||||
{
|
||||
if( szPic[ i ] == '9' ||
|
||||
szPic[ i ] == '#' ||
|
||||
szPic[ i ] == '$' ||
|
||||
szPic[ i ] == '*' )
|
||||
{
|
||||
iWidth++;
|
||||
iDec++;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
iDec = 0;
|
||||
|
||||
if( ( uiPicFlags & ( PF_DEBIT + PF_PARNEG ) ) && dValue < 0 )
|
||||
dPush = -dValue; /* Always push absolute val */
|
||||
else
|
||||
dPush = dValue;
|
||||
|
||||
/* Don't empty the result if the number is not zero */
|
||||
if( dPush != 0 && ( uiPicFlags & PF_EMPTY ) )
|
||||
uiPicFlags &= ~uiPicFlags;
|
||||
|
||||
if( iWidth == 0 ) /* Width calculated ?? */
|
||||
{
|
||||
iWidth = iOrigWidth; /* Push original width */
|
||||
iDec = iOrigDec; /* Push original decimals */
|
||||
}
|
||||
|
||||
pNumber = hb_itemPutNDLen( NULL, dPush, -1, iDec );
|
||||
pWidth = hb_itemPutNI( NULL, iWidth );
|
||||
pDec = hb_itemPutNI( NULL, iDec );
|
||||
|
||||
szStr = hb_itemStr( pNumber, pWidth, pDec );
|
||||
|
||||
hb_itemRelease( pNumber );
|
||||
hb_itemRelease( pWidth );
|
||||
hb_itemRelease( pDec );
|
||||
|
||||
if( szStr )
|
||||
{
|
||||
iCount = 0;
|
||||
|
||||
/* Pad with Zero's */
|
||||
if( uiPicFlags & PF_PADL )
|
||||
{
|
||||
for( i = 0; szStr[ i ] == ' ' && i < ( ULONG ) iWidth; i++ )
|
||||
szStr[ i ] = byParamL;
|
||||
}
|
||||
|
||||
for( i = 0; i < ulPicLen; i++ )
|
||||
{
|
||||
cPic = szPic[ i ];
|
||||
if( cPic == '9' || cPic == '#' )
|
||||
szResult[ i ] = szStr[ iCount++ ]; /* Just copy */
|
||||
else if( cPic == '.' )
|
||||
{
|
||||
if( uiPicFlags & PF_NUMDATE ) /* Dot in date */
|
||||
szResult[ i ] = cPic;
|
||||
else /* Dot in number */
|
||||
{
|
||||
if( uiPicFlags & PF_EXCHANG ) /* Exchange . and , */
|
||||
{
|
||||
szResult[ i ] = ',';
|
||||
iCount++;
|
||||
}
|
||||
else
|
||||
szResult[ i ] = szStr[ iCount++ ];
|
||||
}
|
||||
}
|
||||
else if( cPic == '$' || cPic == '*' )
|
||||
{
|
||||
if( szStr[ iCount ] == ' ' )
|
||||
{
|
||||
szResult[ i ] = cPic;
|
||||
iCount++;
|
||||
}
|
||||
else
|
||||
szResult[ i ] = szStr[ iCount++ ];
|
||||
}
|
||||
else if( cPic == ',' ) /* Comma */
|
||||
{
|
||||
if( iCount && isdigit( ( int ) szStr[ iCount - 1 ] ) )
|
||||
{ /* May we place it */
|
||||
if( uiPicFlags & PF_EXCHANG )
|
||||
szResult[ i ] = '.';
|
||||
else
|
||||
szResult[ i ] = ',';
|
||||
}
|
||||
else
|
||||
szResult[ i ] = ' ';
|
||||
}
|
||||
else
|
||||
szResult[ i ] = cPic;
|
||||
}
|
||||
|
||||
if( ( uiPicFlags & PF_PARNEG ) && dValue < 0 )
|
||||
{
|
||||
if( isdigit( ( int ) *szResult ) ) /* Overflow */
|
||||
{
|
||||
for( iCount = 1; ( ULONG ) iCount < i; iCount++ )
|
||||
{
|
||||
if( isdigit( ( int ) szResult[ iCount ] ) )
|
||||
szResult[ iCount ] = '*';
|
||||
}
|
||||
}
|
||||
*szResult = '(';
|
||||
szResult[ i++ ] = ')';
|
||||
}
|
||||
|
||||
if( ( uiPicFlags & PF_CREDIT ) && dValue >= 0 )
|
||||
{
|
||||
szResult[ i++ ] = ' ';
|
||||
szResult[ i++ ] = 'C';
|
||||
szResult[ i++ ] = 'R';
|
||||
}
|
||||
|
||||
if( ( uiPicFlags & PF_DEBIT ) && dValue < 0 )
|
||||
{
|
||||
szResult[ i++ ] = ' ';
|
||||
szResult[ i++ ] = 'D';
|
||||
szResult[ i++ ] = 'B';
|
||||
}
|
||||
|
||||
ulResultPos = i;
|
||||
szResult[ i ] = '\0';
|
||||
|
||||
hb_xfree( szStr );
|
||||
}
|
||||
}
|
||||
|
||||
else if( HB_IS_DATE( pExp ) )
|
||||
/* ======================================================= */
|
||||
/* Handle DATE values */
|
||||
/* ======================================================= */
|
||||
|
||||
else if( HB_IS_DATE( pValue ) )
|
||||
{
|
||||
char szDate[ 9 ];
|
||||
|
||||
szResult = ( char * ) hb_xgrab( 11 );
|
||||
|
||||
hb_dateFormat( hb_itemGetDS( pExp, szDate ), szResult,
|
||||
hb_dateFormat( hb_itemGetDS( pValue, szDate ), szResult,
|
||||
( uiPicFlags & PF_BRITISH ) ?
|
||||
( hb_set.hb_set_century ? "DD/MM/YYYY" : "DD/MM/YY" ) :
|
||||
hb_set.HB_SET_DATEFORMAT );
|
||||
@@ -499,7 +468,11 @@ HB_FUNC( TRANSFORM )
|
||||
ulResultPos = strlen( szResult );
|
||||
}
|
||||
|
||||
else if( HB_IS_LOGICAL( pExp ) )
|
||||
/* ======================================================= */
|
||||
/* Handle LOGICAL values */
|
||||
/* ======================================================= */
|
||||
|
||||
else if( HB_IS_LOGICAL( pValue ) )
|
||||
{
|
||||
BOOL bDone = FALSE;
|
||||
|
||||
@@ -513,7 +486,7 @@ HB_FUNC( TRANSFORM )
|
||||
case 'y': /* Yes/No */
|
||||
case 'Y': /* Yes/No */
|
||||
{
|
||||
*szResult = hb_itemGetL( pExp ) ? 'Y' : 'N';
|
||||
*szResult = hb_itemGetL( pValue ) ? 'Y' : 'N';
|
||||
szPic++;
|
||||
ulPicLen--;
|
||||
bDone = TRUE; /* Logical written */
|
||||
@@ -524,7 +497,7 @@ HB_FUNC( TRANSFORM )
|
||||
case 'l': /* True/False */
|
||||
case 'L': /* True/False */
|
||||
{
|
||||
*szResult = hb_itemGetL( pExp ) ? 'T' : 'F';
|
||||
*szResult = hb_itemGetL( pValue ) ? 'T' : 'F';
|
||||
szPic++;
|
||||
ulPicLen--;
|
||||
bDone = TRUE;
|
||||
@@ -539,7 +512,7 @@ HB_FUNC( TRANSFORM )
|
||||
}
|
||||
}
|
||||
else
|
||||
*szResult = hb_itemGetL( pExp ) ? 'T' : 'F';
|
||||
*szResult = hb_itemGetL( pValue ) ? 'T' : 'F';
|
||||
|
||||
/* Any chars left */
|
||||
if( ( uiPicFlags & PF_REMAIN ) && ulPicLen )
|
||||
@@ -550,7 +523,7 @@ HB_FUNC( TRANSFORM )
|
||||
|
||||
/* Logical written ? */
|
||||
if( ! bDone )
|
||||
szResult[ ulResultPos++ ] = hb_itemGetL( pExp ) ? 'T' : 'F';
|
||||
szResult[ ulResultPos++ ] = hb_itemGetL( pValue ) ? 'T' : 'F';
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -579,19 +552,19 @@ HB_FUNC( TRANSFORM )
|
||||
if( uiPicFlags & PF_EMPTY )
|
||||
memset( szResult, ' ', ulResultPos );
|
||||
|
||||
hb_retclen( szResult, ulResultPos );
|
||||
hb_retclen( szResult, ( uiPicFlags & PF_WIDTH && ulResultPos > ulParamS ) ? ulParamS : ulResultPos );
|
||||
hb_xfree( szResult );
|
||||
}
|
||||
}
|
||||
else if( pPic || ISNIL( 2 ) ) /* Picture is an empty string or NIL */
|
||||
{
|
||||
if( HB_IS_STRING( pExp ) )
|
||||
if( HB_IS_STRING( pValue ) )
|
||||
{
|
||||
hb_itemReturn( pExp );
|
||||
hb_itemReturn( pValue );
|
||||
}
|
||||
else if( HB_IS_NUMERIC( pExp ) )
|
||||
else if( HB_IS_NUMERIC( pValue ) )
|
||||
{
|
||||
char * szStr = hb_itemStr( pExp, NULL, NULL );
|
||||
char * szStr = hb_itemStr( pValue, NULL, NULL );
|
||||
|
||||
if( szStr )
|
||||
{
|
||||
@@ -601,16 +574,16 @@ HB_FUNC( TRANSFORM )
|
||||
else
|
||||
hb_retc( "" );
|
||||
}
|
||||
else if( HB_IS_DATE( pExp ) )
|
||||
else if( HB_IS_DATE( pValue ) )
|
||||
{
|
||||
char szDate[ 9 ];
|
||||
char szResult[ 11 ];
|
||||
|
||||
hb_retc( hb_dateFormat( hb_itemGetDS( pExp, szDate ), szResult, hb_set.HB_SET_DATEFORMAT ) );
|
||||
hb_retc( hb_dateFormat( hb_itemGetDS( pValue, szDate ), szResult, hb_set.HB_SET_DATEFORMAT ) );
|
||||
}
|
||||
else if( HB_IS_LOGICAL( pExp ) )
|
||||
else if( HB_IS_LOGICAL( pValue ) )
|
||||
{
|
||||
hb_retc( hb_itemGetL( pExp ) ? "T" : "F" );
|
||||
hb_retc( hb_itemGetL( pValue ) ? "T" : "F" );
|
||||
}
|
||||
else
|
||||
bError = TRUE;
|
||||
|
||||
Reference in New Issue
Block a user