|
|
|
// Copyright (c) 2011-2013 The Bitcoin Core developers
|
|
|
|
// Copyright (c) 2019-2020 The Hush developers
|
|
|
|
// Distributed under the GPLv3 software license, see the accompanying
|
|
|
|
// file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
|
|
* Copyright © 2014-2019 The SuperNET Developers. *
|
|
|
|
* *
|
|
|
|
* See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at *
|
|
|
|
* the top-level directory of this distribution for the individual copyright *
|
|
|
|
* holder information and the developer policies on copyright and licensing. *
|
|
|
|
* *
|
|
|
|
* Unless otherwise agreed in a custom licensing agreement, no part of the *
|
|
|
|
* SuperNET software, including this file may be copied, modified, propagated *
|
|
|
|
* or distributed except according to the terms contained in the LICENSE file *
|
|
|
|
* *
|
|
|
|
* Removal or modification of this copyright notice is prohibited. *
|
|
|
|
* *
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
#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;
|
|
|
|
|
|
|
|
CCoinControl()
|
|
|
|
{
|
|
|
|
SetNull();
|
|
|
|
}
|
|
|
|
|
|
|
|
void SetNull()
|
|
|
|
{
|
|
|
|
destChange = CNoDestination();
|
|
|
|
fAllowOtherInputs = false;
|
|
|
|
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) const
|
|
|
|
{
|
|
|
|
vOutpoints.assign(setSelected.begin(), setSelected.end());
|
|
|
|
}
|
|
|
|
|
|
|
|
private:
|
|
|
|
std::set<COutPoint> setSelected;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // BITCOIN_COINCONTROL_H
|