summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Earls <enderw88@gmail.com>2013-01-07 20:15:49 -0700
committerCraig Earls <enderw88@gmail.com>2013-01-07 20:15:49 -0700
commit67a598f6ff3b9b19b08af108c8bfe26064728457 (patch)
tree300f91a73c6610c718cf69e1f532d040494d2d35
parent63a14fd5e0aeb64a0508ddac71803acc926425c5 (diff)
downloadfork-ledger-67a598f6ff3b9b19b08af108c8bfe26064728457.tar.gz
fork-ledger-67a598f6ff3b9b19b08af108c8bfe26064728457.tar.bz2
fork-ledger-67a598f6ff3b9b19b08af108c8bfe26064728457.zip
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.
-rw-r--r--src/account.h7
-rw-r--r--src/commodity.h7
-rw-r--r--src/output.h4
3 files changed, 16 insertions, 2 deletions
diff --git a/src/account.h b/src/account.h
index a2fcb8de..3642ada0 100644
--- a/src/account.h
+++ b/src/account.h
@@ -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
diff --git a/src/commodity.h b/src/commodity.h
index ab496850..37b02e74 100644
--- a/src/commodity.h
+++ b/src/commodity.h
@@ -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
diff --git a/src/output.h b/src/output.h
index 281f69b6..5ce9dc58 100644
--- a/src/output.h
+++ b/src/output.h
@@ -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;