Bug551 fixed, commodities and accounts now sort

Added two compare structs for std::map to use.  I tried to override
the < operator got a clean compile but map wasn't picking it up, I
couldn't figure out why so I took the less elegant route.
This commit is contained in:
Craig Earls 2013-01-07 20:15:49 -07:00
parent 63a14fd5e0
commit 67a598f6ff
3 changed files with 16 additions and 2 deletions

View file

@ -308,6 +308,13 @@ std::ostream& operator<<(std::ostream& out, const account_t& account);
void put_account(property_tree::ptree& pt, const account_t& acct,
function<bool(const account_t&)> pred);
//simple struct added to allow std::map to compare accounts in the accounts report
struct account_compare {
bool operator() (const account_t& lhs, const account_t& rhs){
return (lhs.fullname().compare(rhs.fullname()) < 0);
}
};
} // namespace ledger
#endif // _ACCOUNT_H

View file

@ -349,6 +349,13 @@ inline std::ostream& operator<<(std::ostream& out, const commodity_t& comm) {
void put_commodity(property_tree::ptree& pt, const commodity_t& comm,
bool commodity_details = false);
//simple struct to allow std::map to compare commodities names
struct commodity_compare {
bool operator() (const commodity_t* lhs, const commodity_t* rhs){
return (lhs->symbol().compare(rhs->symbol()) < 0);
}
};
} // namespace ledger
#endif // _COMMODITY_H

View file

@ -142,7 +142,7 @@ class report_accounts : public item_handler<post_t>
protected:
report_t& report;
std::map<account_t *, std::size_t> accounts;
std::map<account_t *, std::size_t, account_compare> accounts;
typedef std::map<account_t *, std::size_t>::value_type accounts_pair;
@ -194,7 +194,7 @@ class report_commodities : public item_handler<post_t>
protected:
report_t& report;
std::map<commodity_t *, std::size_t> commodities;
std::map<commodity_t *, std::size_t, commodity_compare> commodities;
typedef std::map<commodity_t *, std::size_t>::value_type commodities_pair;