You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.6 KiB
71 lines
1.6 KiB
// Copyright (c) 2011-2015 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; |
|
//! If false, allows unselected inputs, but requires all selected inputs be used |
|
bool fAllowOtherInputs; |
|
//! Includes watch only addresses which match the ISMINE_WATCH_SOLVABLE criteria |
|
bool fAllowWatchOnly; |
|
//! Minimum absolute fee (not per kilobyte) |
|
CAmount nMinimumTotalFee; |
|
|
|
CCoinControl() |
|
{ |
|
SetNull(); |
|
} |
|
|
|
void SetNull() |
|
{ |
|
destChange = CNoDestination(); |
|
fAllowOtherInputs = false; |
|
fAllowWatchOnly = false; |
|
setSelected.clear(); |
|
nMinimumTotalFee = 0; |
|
} |
|
|
|
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) const |
|
{ |
|
vOutpoints.assign(setSelected.begin(), setSelected.end()); |
|
} |
|
|
|
private: |
|
std::set<COutPoint> setSelected; |
|
}; |
|
|
|
#endif // BITCOIN_COINCONTROL_H
|
|
|