5cc03ac9b9d5d4fde407d85fdc8656758b369379
* harbour/src/rtl/Makefile
- harbour/src/rtl/fieldbl.prg
- removed old PRG level implementation of FIELDBLOCK() and
FIELDWBLOCK() functions
* harbour/src/vm/macro.c
+ created new implementation of FIELDBLOCK() and FIELDWBLOCK()
functions in C. This implementation is strictly Clipper compatible
and allows to create field blocks only for symbols already
registered in HVM so it does not create new symbols in HVM.
When table is open then all field symbols are registered in HVM.
It means that new functions may not create field block if table
is not open yet and field name was never used explicitly in
whole compiled application. It's possible to easy change it
and automatically register new symbols if we decide it's real
limitation and we should drop strict Cl*pper compatibility.
Anyhow it may cause that some code will register big number
of completely unnecessary symbols in HVM so it should be well
thought decision.
This implementation makes exactly the same fied name conversions
as default implementation of ADDFIELD() workarea method so exactly
the same set of symbols is accepted. It means that after opening
table which has field names with spaces or other characters
which are not accepted as PRG identifiers it's possible to create
field blocks for them.
It should be also noticable faster because macrocompiler is not
used at all and is many times faster in codeblock evaluation then
implementation like in xHarbour which uses
fieldget( fieldpos( cFieldName ) )
to support fields with embeded spaces.
* harbour/src/rtl/hbgtcore.c
% small optimization in INKEY() code
Description
Harbour Core — Reference source for Five development
Languages
C
80.3%
xBase
17.8%
Makefile
0.6%
C++
0.4%
Harbour
0.4%
Other
0.3%