Boost logo

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