Hi Przemek, That sounds great, may I ask for a simple example which show the usefulness of this feature over regular hashes?
Viktor On 2010 May 25, at 13:20, dru...@users.sourceforge.net wrote: > Revision: 14579 > > http://harbour-project.svn.sourceforge.net/harbour-project/?rev=14579&view=rev > Author: druzus > Date: 2010-05-25 11:20:34 +0000 (Tue, 25 May 2010) > > Log Message: > ----------- > 2010-05-25 13:20 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl) > * harbour/include/hbapi.h > * harbour/src/vm/hashes.c > * harbour/src/vm/hashfunc.c > + added support for keeping strict assign order in hash arrays. It's > enabled optionally by setting HB_HASH_KEEPORDER hash array flag. > It gives the same functionality as associative arrays in xHarbour > (enabled by HSETAACOMPATIBILITY()) but this implementation is > internally completely different. It does not introduce linear > scan in add operation so enabling it should not reduce the > performance in this operation. It can even improve it on some > hardware reducing number of memory bytes which have to be moved. > Only delete operation will force linear index scan. The most > important in this implementation is that it does not need any > additional functions like HAA*() in xHarbour. Just simply all > existing functions operating on position indexes like HB_HPOS(), > HB_HKEYAT(), HB_HVALUEAT(), HB_HPAIRAT(), HB_HDELAT(), HB_HSCAN() > use as index natural order in which items were added to hash array. > Also HB_HKEYS(), HB_HVALUES() and FOR EACH iterations respect it. > + added new PRG functions > HB_HKEEPORDER( <hValue> [, <lNewSetting> ] ) -> <lPrevSetting> > HB_HSETORDER( <hValue> [, <lNewSetting> ] ) -> <hValue> > which cam be used to enable/disable strict order in hash array. > Enabling strict order for non empty hash arrays accept the order > created after sorting existing item not the original assign order. > Disabling strict order for non empty hash arrays may change the > items order. > ; TODO: add translation for xHarbour's HAA*() functions to hbcompat.ch > and/or xhb library. > > * harbour/contrib/hbnetio/netiocli.c > * harbour/contrib/hbnetio/netiosrv.c > % reenabled TCP_NODELAY on client and server side > I had to be really tired when I was making tests and I mixed > hb_socketSetNoDelay() with hb_socketSetBlockingIO(). > Thanks to Aleksander Czajczynski who noticed the delay in his > tests. > > * harbour/contrib/hbwin/olecore.c > * minor cleanup > > Modified Paths: > -------------- > trunk/harbour/ChangeLog > trunk/harbour/contrib/hbnetio/netiocli.c > trunk/harbour/contrib/hbnetio/netiosrv.c > trunk/harbour/contrib/hbwin/olecore.c > trunk/harbour/include/hbapi.h > trunk/harbour/src/vm/hashes.c > trunk/harbour/src/vm/hashfunc.c > > > This was sent by the SourceForge.net collaborative development platform, the > world's largest Open Source development site. > _______________________________________________ > Harbour mailing list (attachment size limit: 40KB) > Harbour@harbour-project.org > http://lists.harbour-project.org/mailman/listinfo/harbour _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour