diff options
author | John Wiegley <johnw@newartisans.com> | 2012-03-05 17:47:12 -0600 |
---|---|---|
committer | John Wiegley <johnw@newartisans.com> | 2012-03-05 17:47:12 -0600 |
commit | e5885cc8a8a1d6cd2a65d04c56ba86d65317f4a1 (patch) | |
tree | 86d65169e1540cc0d57aabf061bf9e179097c04b /src/annotate.cc | |
parent | f9de33d21cd62d953147d62e01958557562a1311 (diff) | |
download | fork-ledger-e5885cc8a8a1d6cd2a65d04c56ba86d65317f4a1.tar.gz fork-ledger-e5885cc8a8a1d6cd2a65d04c56ba86d65317f4a1.tar.bz2 fork-ledger-e5885cc8a8a1d6cd2a65d04c56ba86d65317f4a1.zip |
Added annotation_t::operator<()
Diffstat (limited to 'src/annotate.cc')
-rw-r--r-- | src/annotate.cc | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/annotate.cc b/src/annotate.cc index cd1733ca..1e243beb 100644 --- a/src/annotate.cc +++ b/src/annotate.cc @@ -38,6 +38,34 @@ namespace ledger { +bool annotation_t::operator<(const annotation_t& rhs) const +{ + if (! price && rhs.price) return true; + if (price && ! rhs.price) return false; + if (! date && rhs.date) return true; + if (date && ! rhs.date) return false; + if (! tag && rhs.tag) return true; + if (tag && ! rhs.tag) return false; + + if (price) { + if (price->commodity().symbol() < rhs.price->commodity().symbol()) + return true; + if (price->commodity().symbol() > rhs.price->commodity().symbol()) + return false; + if (*price < *rhs.price) return true; + if (*price > *rhs.price) return false; + } + if (date) { + if (*date < *rhs.date) return true; + if (*date > *rhs.date) return false; + } + if (tag) { + if (*tag < *rhs.tag) return true; + if (*tag > *rhs.tag) return false; + } + return false; +} + void annotation_t::parse(std::istream& in) { do { |