Add get first/last/next SLE functions.

This commit is contained in:
JoelKatz
2012-07-14 19:16:58 -07:00
parent 36e3ed784a
commit 8bcb9c0041
2 changed files with 27 additions and 0 deletions

View File

@@ -156,6 +156,9 @@ public:
static Ledger::pointer loadByHash(const uint256& ledgerHash);
// next/prev function
SLE::pointer getSLE(const uint256& uHash);
SLE::pointer getFirstSLE();
SLE::pointer getLastSLE();
SLE::pointer getNextSLE(const uint256& uHash); // first node >hash
SLE::pointer getNextSLE(const uint256& uHash, const uint256& uEnd); // first node >hash, <end
SLE::pointer getPrevSLE(const uint256& uHash); // last node <hash

View File

@@ -46,6 +46,30 @@ LedgerStateParms Ledger::writeBack(LedgerStateParms parms, SLE::pointer entry)
return lepOKAY;
}
SLE::pointer Ledger::getSLE(const uint256& uHash)
{
SHAMapItem::pointer node = mAccountStateMap->peekItem();
if (!node)
return SLE::pointer();
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
}
SLE::pointer Ledger::getFirstSLE()
{
SHAMapItem::pointer node = mAccountStateMap->peekFirstItem();
if (!node)
return SLE::pointer();
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
}
SLE::pointer Ledger::getLastSLE()
{
SHAMapItem::pointer node = mAccountStateMap->peekLastItem();
if (!node)
return SLE::pointer();
return boost::make_shared<SLE>(node->peekSerializer(), node->getTag());
}
SLE::pointer Ledger::getNextSLE(const uint256& uHash)
{
SHAMapItem::pointer node = mAccountStateMap->peekNextItem(uHash);