aboutsummaryrefslogtreecommitdiff
path: root/src/coincontrol.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/coincontrol.h')
-rw-r--r--src/coincontrol.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/coincontrol.h b/src/coincontrol.h
new file mode 100644
index 0000000000..92fae9847c
--- /dev/null
+++ b/src/coincontrol.h
@@ -0,0 +1,62 @@
+// Copyright (c) 2011-2013 The Bitcoin Core developers
+// Distributed under the MIT software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#ifndef BITCOIN_COINCONTROL_H
+#define BITCOIN_COINCONTROL_H
+
+#include "primitives/transaction.h"
+
+/** Coin Control Features. */
+class CCoinControl
+{
+public:
+ CTxDestination destChange;
+
+ CCoinControl()
+ {
+ SetNull();
+ }
+
+ void SetNull()
+ {
+ destChange = CNoDestination();
+ setSelected.clear();
+ }
+
+ bool HasSelected() const
+ {
+ return (setSelected.size() > 0);
+ }
+
+ bool IsSelected(const uint256& hash, unsigned int n) const
+ {
+ COutPoint outpt(hash, n);
+ return (setSelected.count(outpt) > 0);
+ }
+
+ void Select(const COutPoint& output)
+ {
+ setSelected.insert(output);
+ }
+
+ void UnSelect(const COutPoint& output)
+ {
+ setSelected.erase(output);
+ }
+
+ void UnSelectAll()
+ {
+ setSelected.clear();
+ }
+
+ void ListSelected(std::vector<COutPoint>& vOutpoints)
+ {
+ vOutpoints.assign(setSelected.begin(), setSelected.end());
+ }
+
+private:
+ std::set<COutPoint> setSelected;
+};
+
+#endif // BITCOIN_COINCONTROL_H