Boost logo

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