|
Boost : |
From: Ion Gaztañaga (igaztanaga_at_[hidden])
Date: 2007-09-27 04:38:46
Hi to all,
I've uploaded to SVN a new version of Boost.Intrusive that uses the
new option specification syntax discussed some time ago in this mailing
list:
using namespace boost::intrusive;
class MyClass
: public list_base_hook
< void_pointer<offset_ptr<void> >
, link_mode<auto_unlink>
>
{
//...
};
typedef list<MyClass, constant_time_size<false> > IntrusiveList;
The new syntax is more verbose, but easier for common uses:
class MyClass
: unordered_set_base_hook<>
{
friend operator==(...);
friend hash_value(...);
};
//We don't need to specify default hash and equality functors
typedef unordered_set<MyClass> MyHashSet;
I've uploaded the new documentation here:
http://igaztanaga.drivehq.com/intrusive
Documentation is still lacking but I think it's fairly adapted to the
new syntax. Apart from the new syntax, new features:
-> Added stateful value traits.
-> Fixed bug in 64 bit platforms (thanks Glenn!).
-> Added support for custom bucket traits in unordered containers.
-> Added option to use masks instead of modulo operations to determine
the bucket number from the hash value (provided bucket length is always
power of two).
-> Changed all recursive functions from red-black tree algorithms with
non-recursive ones (thanks Steven!).
Interface change is a big change in the library, so I expect complaints
from users. But I think the new syntax is much easier to use,
specially as new options are added (unordered containers now receive upt
o 7 options!). And the time to do breaking changes is before the library
is officially released. Suggestions, improvements and comments are
welcome ;-)
Regards,
Ion
P.S.: If users prefer the old syntax, we can go back again to the old
way. Just be polite ;-)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk