2001-08-07 01:10 UTC-0800 Ron Pinkas <ron@profit-master.com>

+ doc/en/clipper.txt
     + New file describing Harbour features that are different from Clipper.

   * include/hbpcode.h
     * Corrected typo in comment /* Thanks to Dave for info. */
This commit is contained in:
Ron Pinkas
2001-08-07 08:11:51 +00:00
parent 65c8b39133
commit 054dc4ed08
3 changed files with 67 additions and 2 deletions

View File

@@ -1,3 +1,10 @@
2001-08-07 01:10 UTC-0800 Ron Pinkas <ron@profit-master.com>
+ doc/en/clipper.txt
+ New file describing Harbour features that are different from Clipper.
* include/hbpcode.h
* Corrected typo in comment /* Thanks to Dave for info. */
2001-08-06 23:50 UTC-0800 Ron Pinkas <ron@profit-master.com>
* source/compiler/harbour.c
! Corrected assigment of HB_FS_FIRST scope, for proper execution of first non INIT/EXIT procedure in main module.

View File

@@ -0,0 +1,58 @@
This document attempts to describes the features separating Harbour
from Clipper.
/* TODO: @FunPointer(), and all other Harbour extensions. */
Harbour Macro Compiler
----------------------
The Harbour Macro Compiler offers 2 additional layers of functionality
controlled by means of HB_SETMACRO()* function, not available in Clipper.
HB_SETMACRO( HB_SM_HARBOUR, TRUE ) will enable macro compilation and
evaluation of complex expressions not supported by Clipper like:
- exp++, exp--, exp += exp, (exp), etc..
- Nested codeblocks.
- Expressions longer then 254 characters.
HB_SETMACRO( HB_SM_XBASE, TRUE ) will enable macro compilation and
evaluation of comma separated lists in all contexts where lists are
acceptable by Clipper*, including:
- { &cMacro } // Literal array elements list.
- SomeArray[ &cMacro ] // Array index list.
- SomeFun( &cMacro ) // Arguments list.
- ( &cMacro ) // parenthesized list expression.
*Clipper only supports list macros within codeblocks context.
Both these extra layers are activated by default.
* See also -k Compiler switch.
LIST Command
------------
LIST &cMacro
LIST in clipper [superficially] supports macros of lists expressions. No
error will be produced, and all expressions in the list will be
evaluated, but *only* the *last* expression will be displayed. This is
not a documented in either the LIST or the Macro Operator, but is the
de-facto behavior in all Clipper 5.x versions.
Harbour instead will not only evaluate all of the expressions in
such list macro, but will also display all such values. This default
behavior may be disabled with HB_SETMACRO( HB_SM_XBASE, .F. )*
* See also -k Compiler switch.
INIT/EXIT and startup procedures
--------------------------------
In Clipper the startup procedure is always the first procedure/function
of the main module, even if such symbol is an INIT or EXIT symbol. In
such case the program will never execute the "main" symbol. In Harbour
the first *non* INIT/EXIT symbol, will be executed as the main symbol
after all INIT procedures have been executed.

View File

@@ -186,8 +186,8 @@ typedef enum
HB_P_TRUE, /* 120 pushes true on the virtual machine stack */
HB_P_ZERO, /* 121 places a ZERO on the virtual machine stack */
HB_P_ONE, /* 122 places a ONE on the virtual machine stack */
HB_P_MACROLIST, /* 122 HB_P_MACROPUSHLIST enevelope start. */
HB_P_MACROLISTEND, /* 123 HB_P_MACROPUSHLIST enevelope end. */
HB_P_MACROLIST, /* 122 HB_P_MACROPUSHLIST envelope start. */
HB_P_MACROLISTEND, /* 123 HB_P_MACROPUSHLIST envelope end. */
/* NOTE: This have to be the last definition */
HB_P_LAST_PCODE /* 123 this defines the number of defined pcodes */
} HB_PCODE;