|
Boost Users : |
From: bert hubert (bert.hubert_at_[hidden])
Date: 2006-12-15 03:32:23
On Thu, Dec 14, 2006 at 07:13:03PM +0100, Joaqu?n M? L?pez Mu?oz wrote:
> d_cachecache=d_cache.equal_range(
> boost::make_tuple(qname.c_str()), // you can omit the make_tuple wrapper in Boost
> 1.34
> composite_key_compare<string_char_comp>());
Wonderful!
> d_cachecache=d_cache.equal_range(
> boost::make_tuple(qname.c_str(),105), // you cannot omit make_tuple here
> composite_key_compare<string_char_comp,std::less<uint16_t> >());
The power of Boost.MultiIndex never ceases to amaze me Joaquin! In the end,
I've solved the problem slightly differently, before your answer came in:
typedef multi_index_container<
CacheEntry,
indexed_by <
ordered_unique<
composite_key<
CacheEntry,
member<CacheEntry,string,&CacheEntry::d_qname>,
member<CacheEntry,uint16_t,&CacheEntry::d_qtype>
>,
composite_key_compare<CIStringCompare, std::less<uint16_t> >
>,
sequenced<>
>
> cache_t;
I've taught CIStringCompare that it can also compare const char*'s against
std::strings, and things Just Worked - I tested it uses the char*/string
comparisons now, and not the string/string comparison.
> Hope this helps. Thanks for using Boost.MultiIndex in such exciting ways as
> you're doing in PowerDNS.
To a large extent, PowerDNS is just a frontend to Boost.MultiIndex. Also
see: http://blog.netherlabs.nl/articles/2006/12/14/powerdns-speedups
Thanks again Joaquin!
-- http://www.PowerDNS.com Open source, database driven DNS Software http://netherlabs.nl Open and Closed source services
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net