Use Boost.Tuple

This commit is contained in:
John Wiegley 2012-03-09 03:19:25 -06:00
parent b0cf90ab50
commit 628875b33c
3 changed files with 14 additions and 13 deletions

View file

@ -129,16 +129,16 @@ commodity_t::find_price(const optional<commodity_t&>& commodity,
if (target && *this == *target)
return none;
optional<base_t::time_and_commodity_t> pair =
base_t::time_and_commodity_t(base_t::optional_time_pair_t(moment, oldest),
commodity ? &(*commodity) : NULL);
optional<base_t::memoized_price_entry>
entry(base_t::memoized_price_entry(moment, oldest,
commodity ? &(*commodity) : NULL));
DEBUG("commodity.price.find", "looking for memoized args: "
<< (moment ? format_datetime(*moment) : "NONE") << ", "
<< (oldest ? format_datetime(*oldest) : "NONE") << ", "
<< (commodity ? commodity->symbol() : "NONE"));
{
base_t::memoized_price_map::iterator i = base->price_map.find(*pair);
base_t::memoized_price_map::iterator i = base->price_map.find(*entry);
if (i != base->price_map.end()) {
DEBUG("commodity.price.find", "found! returning: "
<< ((*i).second ? (*i).second->price : amount_t(0L)));
@ -162,7 +162,7 @@ commodity_t::find_price(const optional<commodity_t&>& commodity,
pool().commodity_price_history.find_price(*this, *target, when, oldest) :
pool().commodity_price_history.find_price(*this, when, oldest);
if (pair) {
if (entry) {
if (base->price_map.size() > base_t::max_price_map_size) {
DEBUG("history.find",
"price map has grown too large, clearing it by half");
@ -172,9 +172,9 @@ commodity_t::find_price(const optional<commodity_t&>& commodity,
DEBUG("history.find",
"remembered: " << (point ? point->price : amount_t(0L)));
base->price_map.insert
(base_t::memoized_price_map::value_type(*pair, point));
base->price_map.insert(base_t::memoized_price_map::value_type(*entry, point));
}
return point;
}

View file

@ -117,11 +117,9 @@ protected:
optional<amount_t> larger;
optional<expr_t> value_expr;
typedef std::pair<optional<datetime_t>,
optional<datetime_t> > optional_time_pair_t;
typedef std::pair<optional_time_pair_t,
commodity_t *> time_and_commodity_t;
typedef std::map<time_and_commodity_t,
typedef tuple<optional<datetime_t>,
optional<datetime_t>, commodity_t *> memoized_price_entry;
typedef std::map<memoized_price_entry,
optional<price_point_t> > memoized_price_map;
static const std::size_t max_price_map_size = 16;

View file

@ -183,8 +183,11 @@ typedef std::ostream::pos_type ostream_pos_type;
#include <boost/regex/icu.hpp>
#else
#include <boost/regex.hpp>
#endif // HAVE_BOOST_REGEX_UNICODE
#include <boost/tuple/tuple.hpp>
#include <boost/tuple/tuple_comparison.hpp>
#include <boost/variant.hpp>
#include <boost/version.hpp>