* harbour/src/rtl/hbzlib.c
+ added new PRG function:
HB_GZCOMPRESSBOUND( <cData> | <nDataLen> ) -> <nMaxCompressLen>
! fixed compilation with ZLIB versions earlier then 1.2.0 broken by
missing deflateBound() function which I used recently.
* harbour/src/rtl/hbzlib.c
! added our own version of compressBound() function for
ZLIB versions 1.2.0 and earlier. It makes HB_ZCOMPRESSBOUND()
working and fixes code like:
<cResult> := HB_ZCOMPRESS( <cData> )
+ added new PRG function:
HB_GZCOMPRESS( <cData>, [<nDstBufLen>|<@cBuffer>], ;
[<@nResult>], [<nLevel>] )
=> <cCompressedData> or NIL on Error
It works like HB_ZCOMPRESS() but uses GZIP instead of ZLIB
encapsulation for compressed data.
+ added support for GZIP compressed strings to HB_ZUNCOMPRESS() and
HB_ZUNCOMPRESSLEN() functions so they can be used with data compressed
by HB_GZCOMPRESS() function or read from .gz files.
+ contrib/hbqt/hbqt.hbc
+ Added .hbc for HBQT. So it can be referred in other projects
simply as 'hbqt.hbc' (with no path).
- contrib/hbqt/hbqt.hbp
+ contrib/hbqt/hbqt_all.hbp
* contrib/hbplist
* Renamed so that make.hbs doesn't pick-up hbqt.hbc automatically.
* contrib/hbqt/qtgui/hbqtgui.hbx
* contrib/hbqt/qtcore/hbqtcore.hbx
* Automatically updated.
; hbqt doesn't build here with HB_BUILD_CONTRIB_DYN=yes mode.
Reason unknown. No time to investigate.
* harbour/src/rdd/dbfcdx/dbfcdx1.c
! save and restore index tag during reindexing when one of tags
with smaller number then the current one is moved to the end of
tag list - Clipper compatibility problem reported by Maurilio.
; Please remember that in Harbour DBFCDX during reindexing adds
new tag at the end of tag list removing the old one. It's CL53
DBFCDX and COMIX compatible behavior but it's different then
CL52 DBFCDX and SIXCDX.
* harbour/src/rdd/dbfnsx/dbfnsx1.c
* harbour/src/rdd/dbfntx/dbfntx1.c
! update tag numbers after reindexing
* contrib/hbide/ideedit.prg
! Alt+PageUp/Down now position the cursor to next line after
function ..() declaration line.
* contrib/hbide/ideshortcuts.prg
+ Added: Alt+PageDown, Alt+PageUp macros.
User now can tune it according to his editing habits.
* config/global.mk
* Will now show fatal error if HB_INSTALL_PREFIX is not set
at all on non-*nix systems. Not setting this will result
in missing COPYING file (which is obligatory accessory when
distributing Harbour) and other crucial files like INSTALL,
NEWS and ChangeLog.
* INSTALL
* HB_INSTALL_??? envvars deprecated. It's recommended to use
HB_INSTALL_PREFIX instead and let the build system decide
about the internal directory layout. Setting these to
arbitrary values may break Harbour tools like hbmk2.
* contrib/hbqt/qtgui/g/QPrinter.cpp
* Regenerated.
* contrib/hbqt/qtgui/qth/QPrinter.qth
! Fixed: constructor, now it accepts QPrinterInfo also as a parameter.
* contrib/hbide/ideedit.prg
+ Implemented: Alt+PageDown/PageUp keys to navigate to next/previous function.
A request received at FWH forums.
* harbour/contrib/hbwin/olecore.c
! do not convert parameters passed by reference for DISPID_PROPERTYPUT
It should fix potential memory leak because in such case we do not
use PutParams() which release them.
! return assigned value instead of index in __OPINDEX() method.
* harbour/src/rtl/filesys.c
* unified hb_fsSeek[Large]() return value when seek operation cannot
be executed for given file handle. Now it's 0 for all platforms.
* harbour/include/hbapicls.h
* harbour/src/vm/classes.c
+ added new public C function
PHB_SYMB hb_clsFuncSym( HB_USHORT uiClass )
It returns class function symbol or NULL.
* harbour/ChangeLog
* harbour/config/os2/gccomf.mk
* harbour/include/hbpcode.h
* harbour/include/hbdebug.ch
* harbour/include/hbmath.ch
* harbour/include/hbgfx.ch
* harbour/src/vm/classes.c
* harbour/utils/hbmk2/hbmk2.prg
* removed dummy trailing spaces at EOLs
* contrib/hbide/idemisc.prg
* contrib/hbide/idetools.prg
* contrib/hbide/ideprojmanager.prg
+ Implemented: hbIDE specific macros available in Project's Environments
batch. The usage is like :
[ MinGW 4.4.1 ]
{content} SET project_name=${project_name}
{content} SET project_path=${project_path}
All macros available in Tools & Utilities can be used here also.
+ Project Tree: context-menu - Any project building action sets
the current project to the one which is invoked. Here we have
nothing to loose, rather gain. Thanks Maurizio for pointing.
+ harbour/src/rtl/hbjson.c
+ added JavaScript Object Notation (JSON) encoder, decoder functions
; C level functions:
char * hb_jsonEncode( PHB_ITEM pValue, HB_SIZE * pnLen );
pValue - value to encode;
pnLen - if pnLen is not NULL, length of returned buffer is
stored to *pnLen;
returns pointer to encoded JSON buffer. buffer must be fried
by the caller.
HB_SIZE hb_jsonDecode( const char * szSource, PHB_ITEM pValue );
szSource - JSON source;
pValue - item to store decoded value. Item value is
undetermined in case of error;
returns number of bytes decoded from the buffer. This allows
to use the remaining part of the buffer for some other
purposes. Returns 0 on error.
Harbour level functions:
hb_jsonDecode( cJSON, @xValue ) --> nLengthDecoded
hb_jsonEncode( xValue ) --> cJSON
Note:
- Harbour types unsupported by JSON (date, timestamp, etc.) are
encoded as null values;
- strings are encoded in UTF-8;
- JSON encode functions are safe for recursive arrays and hashes.
Recursive part of array or hash will be stored as null. JSON
encoder still allows to use same structure in the leaves, in
this case content will be duplicate.
I.e.:
xI := {1, NIL}
xI[2] := xI
? hb_jsonEncode( xI ) // [1,null]
but:
xI := {1, .T.}
xI := {2, xI, xI}
? hb_jsonEncode( xI ) // [2,[1,true],[1,true]]
* harbour/config/c.mk
* harbour/config/rules.mk
* use .sx file extension instead of .S to avoid problems with
non case sensitive filesystems
* harbour/src/rtl/fstemp.c
! fixed DOS version of hb_fsTempDir() - tmpnam() may return pure
file name without path i.e. in OpenWartcom builds
* accept optionally TEMP, TMP and TMPDIR environment variables in
DOS and OS2 build looking for directory with temporary files
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
* contrib/hbide/idetools.prg
+ Added: Tools & Utilities - new macros:
"source_name_less_ext"
Current editing instance's source file's name part only.
hb_fNameSplit( cSource, , @cName ) => cName
"project_title"
Last compiled project's title. If no project is yet compiled
in current session of hbIDE, then project title of current
set project is used. If no current project is set, empty
string is substituted.
"project_path"
Last compiled project's path. Rest per "project_title" above.
"project_output_path"
Last compiled project's output path. If no project has been
compiled under current session, null string is substituted.
Here no assumption is taken from current set project.
Macros added per requested by Maurizio.
* contrib/hbxbp/hbpprocess.prg
+ Prepared to route stdOut and stdErr outputs accordingly.
* contrib/hbxbp/xbprtf.prg
! Minor.
* contrib/hbide/idemisc.prg
* contrib/hbide/ideprojmanager.prg
+ Implemented: first error reported by hbMK2 when a project is built,
is made visible in the "Output Console" after compile/link cycle is
finished. This facilitates to track errors instantly without naviaging
the contents of output console.
* src/compiler/hbcomp.c
! Revisiting non-*nix stdout/stderr usage in compiler.
From now on the Clipper (and old MS-DOS/Windows tool)
compatible behavior is only maintained for MS-DOS Harbour
builds, for the rest error messages are output to stderr,
regular msgs are output to stdout.
* contrib/hbqt/hbqt.ch
+ Added more constants.
* contrib/hbqt/qtgui/doc/en/class_hbqgraphicsitem.txt
* contrib/hbqt/qtgui/doc/en/class_hbqgraphicsscene.txt
* contrib/hbqt/qtgui/g/HBQGraphicsItem.cpp
* contrib/hbqt/qtgui/g/HBQGraphicsScene.cpp
* contrib/hbqt/qtgui/g/QLinearGradient.cpp
* contrib/hbqt/qtgui/g/THBQGraphicsItem.prg
* contrib/hbqt/qtgui/g/THBQGraphicsScene.prg
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsitem.h
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.cpp
* contrib/hbqt/qtgui/hbqt_hbqgraphicsscene.h
* contrib/hbqt/qtgui/qth/HBQGraphicsItem.qth
* contrib/hbqt/qtgui/qth/HBQGraphicsScene.qth
* contrib/hbqt/qtgui/qth/QLinearGradient.qth
* contrib/hbqt/tests/demoqt.prg
! One of the main-menu prompt constructed differently.
* contrib/hbide/hbqreportsmanager.prg
+ HbqReportsManager() class is split in two to manage graphic objects
more efficiently.
+ Implemented: Reports Manager - all graphics items drawn on .prg levels.
This implementation has cleans all c++ code responsible to draw
graphics primitives, and hance greatly reducing the c++ dependancy.
More c++ => prg conversion is on the cards.
* harbour/include/hbatomic.h
* added two new build time macros which can be used to control
using GCC atomic builtin functions changing the default settings.
HB_USE_GCCATOMIC_OFF - disable using atomic builtins
HB_USE_GCCATOMIC - force using atomic builtins
- harbour/src/pp/hbpp.1
+ harbour/examples/pp/pp.1
! moved man files for old harbour preprocessor to correct place
+ harbour/src/pp/hbpp.1
+ added new man file for current hbpp
* contrib/hbqt/utils/hbqtgen.prg
+ Implemented: QIcon() as a parameter now can be supplied as
filename, resource name, or constructed QIcon() as pointer.
Notified at HMG forums.
Since begining QIcon is passed as a string only. I do not
remember why I did it like that but it was very limiting,
though it solved our purpose well.
* contrib/hbqt/qtgui/g/QAbstractButton.cpp
* contrib/hbqt/qtgui/g/QAction.cpp
* contrib/hbqt/qtgui/g/QActionGroup.cpp
* contrib/hbqt/qtgui/g/QApplication.cpp
* contrib/hbqt/qtgui/g/QComboBox.cpp
* contrib/hbqt/qtgui/g/QListWidgetItem.cpp
* contrib/hbqt/qtgui/g/QMenu.cpp
* contrib/hbqt/qtgui/g/QMenuBar.cpp
* contrib/hbqt/qtgui/g/QStandardItem.cpp
* contrib/hbqt/qtgui/g/QSystemTrayIcon.cpp
* contrib/hbqt/qtgui/g/QTableWidgetItem.cpp
* contrib/hbqt/qtgui/g/QTabWidget.cpp
* contrib/hbqt/qtgui/g/QToolBar.cpp
* contrib/hbqt/qtgui/g/QToolBox.cpp
* contrib/hbqt/qtgui/g/QTreeWidgetItem.cpp
* contrib/hbqt/qtgui/g/QWidget.cpp
* Regenerated.
* contrib/hbxbp/xbpparthandler.prg
* contrib/hbxbp/xbpwindow.prg
! :status() more synchronized.
NIL => Not initialized.
XBP_STAT_INIT => Object is initialized.
XBP_STAT_CREATE => Object creation is successful.
XBP_STAT_FAILURE => Object creation is either failed or
object is destroyed.
* utils/hbmk2/hbmk2.pt_BR.po
* utils/hbmk2/hbmk2.hu_HU.po
* utils/hbmk2/hbmk2.prg
+ Switched .po files to UTF-8.
+ Set svn:mime-type accordingly.
; NOTE: Make sure to use UTF-8 aware editor to edit these files
from now on. These are the first UTF-8 files in hb repo.
* INSTALL
+ Added .xz source file. Thanks Tamas for installing it
required tools onto the nightly server.
* package/mpkg_win_nightly.bat
* Minor to reqs.