Changed protection level of many parts of commodity_t

This commit is contained in:
John Wiegley 2009-11-02 17:05:51 -05:00
parent dea9530cb7
commit e663a13502
4 changed files with 122 additions and 129 deletions

View file

@ -38,12 +38,12 @@
namespace ledger {
bool commodity_t::base_t::european_by_default = false;
bool commodity_t::european_by_default = false;
void commodity_t::base_t::history_t::add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
const bool reflexive)
void commodity_t::history_t::add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
const bool reflexive)
{
DEBUG("commodity.prices.add", "add_price to " << source
<< (reflexive ? " (secondary)" : " (primary)")
@ -69,7 +69,7 @@ void commodity_t::base_t::history_t::add_price(commodity_t& source,
}
}
bool commodity_t::base_t::history_t::remove_price(const datetime_t& date)
bool commodity_t::history_t::remove_price(const datetime_t& date)
{
DEBUG("commodity.prices.add", "remove_price: " << date);
@ -79,7 +79,7 @@ bool commodity_t::base_t::history_t::remove_price(const datetime_t& date)
return false;
}
void commodity_t::base_t::varied_history_t::
void commodity_t::varied_history_t::
add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
@ -99,9 +99,8 @@ void commodity_t::base_t::varied_history_t::
hist->add_price(source, date, price, reflexive);
}
bool commodity_t::base_t::varied_history_t::
remove_price(const datetime_t& date,
commodity_t& comm)
bool commodity_t::varied_history_t::remove_price(const datetime_t& date,
commodity_t& comm)
{
DEBUG("commodity.prices.add", "varied_remove_price: " << date << ", " << comm);
@ -111,13 +110,12 @@ bool commodity_t::base_t::varied_history_t::
}
optional<price_point_t>
commodity_t::base_t::history_t::
find_price(const optional<datetime_t>& moment,
const optional<datetime_t>& oldest
commodity_t::history_t::find_price(const optional<datetime_t>& moment,
const optional<datetime_t>& oldest
#if defined(DEBUG_ON)
, const int indent
, const int indent
#endif
) const
) const
{
price_point_t point;
bool found = false;
@ -222,15 +220,14 @@ optional<price_point_t>
}
optional<price_point_t>
commodity_t::base_t::varied_history_t::
find_price(const commodity_t& source,
const optional<commodity_t&>& commodity,
const optional<datetime_t>& moment,
const optional<datetime_t>& oldest
commodity_t::varied_history_t::find_price(const commodity_t& source,
const optional<commodity_t&>& commodity,
const optional<datetime_t>& moment,
const optional<datetime_t>& oldest
#if defined(DEBUG_ON)
, const int indent
, const int indent
#endif
) const
) const
{
optional<price_point_t> point;
optional<datetime_t> limit = oldest;
@ -354,9 +351,8 @@ optional<price_point_t>
return none;
}
optional<commodity_t::base_t::history_t&>
commodity_t::base_t::varied_history_t::
history(const optional<commodity_t&>& commodity)
optional<commodity_t::history_t&>
commodity_t::varied_history_t::history(const optional<commodity_t&>& commodity)
{
commodity_t * comm = NULL;
if (! commodity) {

View file

@ -86,87 +86,85 @@ class commodity_t
: public delegates_flags<uint_least16_t>,
public equality_comparable1<commodity_t, noncopyable>
{
friend class commodity_pool_t;
public:
typedef std::map<const datetime_t, amount_t> history_map;
struct history_t
{
history_map prices;
void add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
const bool reflexive = true);
bool remove_price(const datetime_t& date);
optional<price_point_t>
find_price(const optional<datetime_t>& moment = none,
const optional<datetime_t>& oldest = none
#if defined(DEBUG_ON)
, const int indent = 0
#endif
) const;
#if defined(HAVE_BOOST_SERIALIZATION)
private:
/** Serialization. */
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int /* version */) {
ar & prices;
}
#endif // HAVE_BOOST_SERIALIZATION
};
typedef std::map<commodity_t *, history_t> history_by_commodity_map;
struct varied_history_t
{
history_by_commodity_map histories;
void add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
const bool reflexive = true);
bool remove_price(const datetime_t& date, commodity_t& commodity);
optional<price_point_t>
find_price(const commodity_t& source,
const optional<commodity_t&>& commodity = none,
const optional<datetime_t>& moment = none,
const optional<datetime_t>& oldest = none
#if defined(DEBUG_ON)
, const int indent = 0
#endif
) const;
optional<history_t&>
history(const optional<commodity_t&>& commodity = none);
#if defined(HAVE_BOOST_SERIALIZATION)
private:
/** Serialization. */
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int /* version */) {
ar & histories;
}
#endif // HAVE_BOOST_SERIALIZATION
};
protected:
friend class commodity_pool_t;
friend class annotated_commodity_t;
class base_t : public noncopyable, public supports_flags<uint_least16_t>
{
base_t() {
TRACE_CTOR(base_t, "");
}
public:
typedef std::map<const datetime_t, amount_t> history_map;
struct history_t
{
history_map prices;
void add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
const bool reflexive = true);
bool remove_price(const datetime_t& date);
optional<price_point_t>
find_price(const optional<datetime_t>& moment = none,
const optional<datetime_t>& oldest = none
#if defined(DEBUG_ON)
, const int indent = 0
#endif
) const;
#if defined(HAVE_BOOST_SERIALIZATION)
private:
/** Serialization. */
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int /* version */) {
ar & prices;
}
#endif // HAVE_BOOST_SERIALIZATION
};
typedef std::map<commodity_t *, history_t> history_by_commodity_map;
struct varied_history_t
{
history_by_commodity_map histories;
void add_price(commodity_t& source,
const datetime_t& date,
const amount_t& price,
const bool reflexive = true);
bool remove_price(const datetime_t& date, commodity_t& commodity);
optional<price_point_t>
find_price(const commodity_t& source,
const optional<commodity_t&>& commodity = none,
const optional<datetime_t>& moment = none,
const optional<datetime_t>& oldest = none
#if defined(DEBUG_ON)
, const int indent = 0
#endif
) const;
optional<history_t&>
history(const optional<commodity_t&>& commodity = none);
#if defined(HAVE_BOOST_SERIALIZATION)
private:
/** Serialization. */
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int /* version */) {
ar & histories;
}
#endif // HAVE_BOOST_SERIALIZATION
};
#define COMMODITY_STYLE_DEFAULTS 0x000
#define COMMODITY_STYLE_SUFFIXED 0x001
#define COMMODITY_STYLE_SEPARATED 0x002
@ -188,11 +186,9 @@ public:
mutable bool searched;
static bool european_by_default;
public:
explicit base_t(const string& _symbol)
: supports_flags<uint_least16_t>(european_by_default ?
: supports_flags<uint_least16_t>(commodity_t::european_by_default ?
COMMODITY_STYLE_EUROPEAN :
COMMODITY_STYLE_DEFAULTS),
symbol(_symbol), precision(0), searched(false) {
@ -203,33 +199,31 @@ public:
}
#if defined(HAVE_BOOST_SERIALIZATION)
private:
/** Serialization. */
private:
base_t() {
TRACE_CTOR(base_t, "");
}
friend class boost::serialization::access;
/** Serialization. */
template<class Archive>
void serialize(Archive & ar, const unsigned int /* version */) {
ar & boost::serialization::base_object<supports_flags<uint_least16_t> >(*this);
ar & symbol;
ar & precision;
ar & name;
ar & note;
ar & varied_history;
ar & smaller;
ar & larger;
}
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive & ar, const unsigned int /* version */) {
ar & boost::serialization::base_object<supports_flags<uint_least16_t> >(*this);
ar & symbol;
ar & precision;
ar & name;
ar & note;
ar & varied_history;
ar & smaller;
ar & larger;
}
#endif // HAVE_BOOST_SERIALIZATION
};
public:
static bool symbol_needs_quotes(const string& symbol);
typedef base_t::history_t history_t;
typedef base_t::history_map history_map;
typedef base_t::varied_history_t varied_history_t;
typedef base_t::history_by_commodity_map history_by_commodity_map;
shared_ptr<base_t> base;
commodity_pool_t * parent_;
@ -237,13 +231,16 @@ public:
optional<string> mapping_key_;
bool annotated;
public:
explicit commodity_t(commodity_pool_t * _parent,
const shared_ptr<base_t>& _base)
: delegates_flags<uint_least16_t>(*_base.get()), base(_base),
parent_(_parent), annotated(false) {
TRACE_CTOR(commodity_t, "commodity_pool_t *, shared_ptr<base_t>");
}
public:
static bool european_by_default;
virtual ~commodity_t() {
TRACE_DTOR(commodity_t);
}

View file

@ -94,9 +94,9 @@ void posts_commodities_iterator::reset(journal_t& journal)
comm->varied_history()) {
account_t * account = journal.master->find_account(comm->symbol());
foreach (commodity_t::base_t::history_by_commodity_map::value_type pair,
foreach (commodity_t::history_by_commodity_map::value_type pair,
history->histories) {
foreach (commodity_t::base_t::history_map::value_type hpair,
foreach (commodity_t::history_map::value_type hpair,
pair.second.prices) {
xact_t * xact;
string symbol = hpair.second.commodity().symbol();

View file

@ -127,7 +127,7 @@ public:
OPTION(session_t, download); // -Q
OPTION_(session_t, european, DO() {
commodity_t::base_t::european_by_default = true;
commodity_t::european_by_default = true;
});
OPTION__