aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wallet/wallet.cpp68
-rw-r--r--src/wallet/wallet.h68
2 files changed, 76 insertions, 60 deletions
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp
index 167639b53d..cc03d5632e 100644
--- a/src/wallet/wallet.cpp
+++ b/src/wallet/wallet.cpp
@@ -817,6 +817,18 @@ CAmount CWallet::GetDebit(const CTxIn &txin, const isminefilter& filter) const
return 0;
}
+isminetype CWallet::IsMine(const CTxOut& txout) const
+{
+ return ::IsMine(*this, txout.scriptPubKey);
+}
+
+CAmount CWallet::GetCredit(const CTxOut& txout, const isminefilter& filter) const
+{
+ if (!MoneyRange(txout.nValue))
+ throw std::runtime_error("CWallet::GetCredit(): value out of range");
+ return ((IsMine(txout) & filter) ? txout.nValue : 0);
+}
+
bool CWallet::IsChange(const CTxOut& txout) const
{
// TODO: fix handling of 'change' outputs. The assumption is that any
@@ -839,6 +851,62 @@ bool CWallet::IsChange(const CTxOut& txout) const
return false;
}
+CAmount CWallet::GetChange(const CTxOut& txout) const
+{
+ if (!MoneyRange(txout.nValue))
+ throw std::runtime_error("CWallet::GetChange(): value out of range");
+ return (IsChange(txout) ? txout.nValue : 0);
+}
+
+bool CWallet::IsMine(const CTransaction& tx) const
+{
+ BOOST_FOREACH(const CTxOut& txout, tx.vout)
+ if (IsMine(txout))
+ return true;
+ return false;
+}
+
+bool CWallet::IsFromMe(const CTransaction& tx) const
+{
+ return (GetDebit(tx, ISMINE_ALL) > 0);
+}
+
+CAmount CWallet::GetDebit(const CTransaction& tx, const isminefilter& filter) const
+{
+ CAmount nDebit = 0;
+ BOOST_FOREACH(const CTxIn& txin, tx.vin)
+ {
+ nDebit += GetDebit(txin, filter);
+ if (!MoneyRange(nDebit))
+ throw std::runtime_error("CWallet::GetDebit(): value out of range");
+ }
+ return nDebit;
+}
+
+CAmount CWallet::GetCredit(const CTransaction& tx, const isminefilter& filter) const
+{
+ CAmount nCredit = 0;
+ BOOST_FOREACH(const CTxOut& txout, tx.vout)
+ {
+ nCredit += GetCredit(txout, filter);
+ if (!MoneyRange(nCredit))
+ throw std::runtime_error("CWallet::GetCredit(): value out of range");
+ }
+ return nCredit;
+}
+
+CAmount CWallet::GetChange(const CTransaction& tx) const
+{
+ CAmount nChange = 0;
+ BOOST_FOREACH(const CTxOut& txout, tx.vout)
+ {
+ nChange += GetChange(txout);
+ if (!MoneyRange(nChange))
+ throw std::runtime_error("CWallet::GetChange(): value out of range");
+ }
+ return nChange;
+}
+
int64_t CWalletTx::GetTxTime() const
{
int64_t n = nTimeSmart;
diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h
index 3010444978..9abc73f9ce 100644
--- a/src/wallet/wallet.h
+++ b/src/wallet/wallet.h
@@ -641,68 +641,16 @@ public:
isminetype IsMine(const CTxIn& txin) const;
CAmount GetDebit(const CTxIn& txin, const isminefilter& filter) const;
- isminetype IsMine(const CTxOut& txout) const
- {
- return ::IsMine(*this, txout.scriptPubKey);
- }
- CAmount GetCredit(const CTxOut& txout, const isminefilter& filter) const
- {
- if (!MoneyRange(txout.nValue))
- throw std::runtime_error("CWallet::GetCredit(): value out of range");
- return ((IsMine(txout) & filter) ? txout.nValue : 0);
- }
+ isminetype IsMine(const CTxOut& txout) const;
+ CAmount GetCredit(const CTxOut& txout, const isminefilter& filter) const;
bool IsChange(const CTxOut& txout) const;
- CAmount GetChange(const CTxOut& txout) const
- {
- if (!MoneyRange(txout.nValue))
- throw std::runtime_error("CWallet::GetChange(): value out of range");
- return (IsChange(txout) ? txout.nValue : 0);
- }
- bool IsMine(const CTransaction& tx) const
- {
- BOOST_FOREACH(const CTxOut& txout, tx.vout)
- if (IsMine(txout))
- return true;
- return false;
- }
+ CAmount GetChange(const CTxOut& txout) const;
+ bool IsMine(const CTransaction& tx) const;
/** should probably be renamed to IsRelevantToMe */
- bool IsFromMe(const CTransaction& tx) const
- {
- return (GetDebit(tx, ISMINE_ALL) > 0);
- }
- CAmount GetDebit(const CTransaction& tx, const isminefilter& filter) const
- {
- CAmount nDebit = 0;
- BOOST_FOREACH(const CTxIn& txin, tx.vin)
- {
- nDebit += GetDebit(txin, filter);
- if (!MoneyRange(nDebit))
- throw std::runtime_error("CWallet::GetDebit(): value out of range");
- }
- return nDebit;
- }
- CAmount GetCredit(const CTransaction& tx, const isminefilter& filter) const
- {
- CAmount nCredit = 0;
- BOOST_FOREACH(const CTxOut& txout, tx.vout)
- {
- nCredit += GetCredit(txout, filter);
- if (!MoneyRange(nCredit))
- throw std::runtime_error("CWallet::GetCredit(): value out of range");
- }
- return nCredit;
- }
- CAmount GetChange(const CTransaction& tx) const
- {
- CAmount nChange = 0;
- BOOST_FOREACH(const CTxOut& txout, tx.vout)
- {
- nChange += GetChange(txout);
- if (!MoneyRange(nChange))
- throw std::runtime_error("CWallet::GetChange(): value out of range");
- }
- return nChange;
- }
+ bool IsFromMe(const CTransaction& tx) const;
+ CAmount GetDebit(const CTransaction& tx, const isminefilter& filter) const;
+ CAmount GetCredit(const CTransaction& tx, const isminefilter& filter) const;
+ CAmount GetChange(const CTransaction& tx) const;
void SetBestChain(const CBlockLocator& loc);
DBErrors LoadWallet(bool& fFirstRunRet);