#ifndef __ACCOUNTSTATE__ #define __ACCOUNTSTATE__ // // Provide abstract access to an account's state, such that access to the serialized format is hidden. // #include #include #include "../json/value.h" #include "types.h" #include "NewcoinAddress.h" #include "SerializedLedger.h" class AccountState { public: typedef boost::shared_ptr pointer; private: NewcoinAddress mAccountID; NewcoinAddress mAuthorizedKey; SerializedLedgerEntry::pointer mLedgerEntry; bool mValid; public: AccountState(const NewcoinAddress& AccountID); // For new accounts AccountState(SerializedLedgerEntry::pointer ledgerEntry); // For accounts in a ledger bool bHaveAuthorizedKey() { return mLedgerEntry->getIFieldPresent(sfAuthorizedKey); } uint160 getAuthorizedKey() { return mLedgerEntry->getIFieldH160(sfAuthorizedKey); } const NewcoinAddress& getAccountID() const { return mAccountID; } STAmount getBalance() const { return mLedgerEntry->getIValueFieldAmount(sfBalance); } uint32 getSeq() const { return mLedgerEntry->getIFieldU32(sfSequence); } SerializedLedgerEntry::pointer getSLE() { return mLedgerEntry; } const SerializedLedgerEntry& peekSLE() const { return *mLedgerEntry; } SerializedLedgerEntry& peekSLE() { return *mLedgerEntry; } std::vector getRaw() const; void addJson(Json::Value& value); void dump(); }; #endif // vim:ts=4