From 39ed76a8ff478c6cd9873f86f031c92eb1b176b1 Mon Sep 17 00:00:00 2001 From: JoelKatz Date: Wed, 25 Jul 2012 01:49:58 -0700 Subject: [PATCH] This should be the API Arthur needs. --- src/LedgerEntrySet.h | 54 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/LedgerEntrySet.h diff --git a/src/LedgerEntrySet.h b/src/LedgerEntrySet.h new file mode 100644 index 0000000000..503beca323 --- /dev/null +++ b/src/LedgerEntrySet.h @@ -0,0 +1,54 @@ +#ifndef __LEDGERENTRYSET__ +#define __LEDGERENTRYSET__ + +#include "SerializedLedger.h" + +enum LedgerEntryAction +{ + taaNONE, + taaCACHED, // Unmodified. + taaMODIFY, // Modifed, must have previously been taaCACHED. + taaDELETE, // Delete, must have previously been taaDELETE or taaMODIFY. + taaCREATE, // Newly created. +} + +class LedgerEntrySetEntry +{ +public: + SLE::pointer mEntry; + LedgerEntryAction mAction; + int mSeq; + +}; + +class LedgerEntrySet +{ +protected: + boost::unordered_map mEntries; + int mSeq; + +public: + LedgerEntrySet() : mSeq(0) { ; } + + // set functions + LedgerEntrySet duplicate(); // Make a duplicate of this set + void setTo(LedgerEntrySet&); // Set this set to have the same contents as another + void swapWith(LedgerEntrySet&); // Swap the contents of two sets + + // basic entry functions + SLE::pointer getEntry(const uint256& index, LedgerEntryAction&); + LedgerEntryAction hasEntry(const uint256& index) const; + void entryCache(SLE::pointer); // Add this entry to the cache + void entryCreate(SLE::pointer); // This entry will be created + void entryDelete(SLE::pointer); // This entry will be deleted + void entryModify(SLE::pointer); // This entry will be modified + + // iterator functions + bool isEmpty() const; + boost::unordered_map::const_iterator begin() const; + boost::unordered_map::const_iterator end() const; + boost::unordered_map::iterator begin(); + boost::unordered_map::iterator end(); +}; + +#endif