LCOV - code coverage report
Current view: top level - src/wallet - coincontrol.cpp (source / functions) Hit Total Coverage
Test: fuzz_coverage.info Lines: 3 47 6.4 %
Date: 2023-09-26 12:08:55 Functions: 3 16 18.8 %

          Line data    Source code
       1             : // Copyright (c) 2018-2021 The Bitcoin Core developers
       2             : // Distributed under the MIT software license, see the accompanying
       3             : // file COPYING or http://www.opensource.org/licenses/mit-license.php.
       4             : 
       5             : #include <wallet/coincontrol.h>
       6             : 
       7             : #include <common/args.h>
       8             : 
       9             : namespace wallet {
      10           0 : CCoinControl::CCoinControl()
      11             : {
      12           0 :     m_avoid_partial_spends = gArgs.GetBoolArg("-avoidpartialspends", DEFAULT_AVOIDPARTIALSPENDS);
      13           0 : }
      14             : 
      15           0 : bool CCoinControl::HasSelected() const
      16             : {
      17           2 :     return !m_selected_inputs.empty();
      18           2 : }
      19             : 
      20           0 : bool CCoinControl::IsSelected(const COutPoint& output) const
      21             : {
      22           0 :     return m_selected_inputs.count(output) > 0;
      23             : }
      24             : 
      25           0 : bool CCoinControl::IsExternalSelected(const COutPoint& output) const
      26             : {
      27           0 :     return m_external_txouts.count(output) > 0;
      28             : }
      29             : 
      30           0 : std::optional<CTxOut> CCoinControl::GetExternalOutput(const COutPoint& outpoint) const
      31             : {
      32           0 :     const auto ext_it = m_external_txouts.find(outpoint);
      33           0 :     if (ext_it == m_external_txouts.end()) {
      34           0 :         return std::nullopt;
      35             :     }
      36           0 : 
      37           0 :     return std::make_optional(ext_it->second);
      38           0 : }
      39           0 : 
      40           0 : void CCoinControl::Select(const COutPoint& output)
      41           0 : {
      42           0 :     m_selected_inputs.insert(output);
      43           0 : }
      44             : 
      45           0 : void CCoinControl::SelectExternal(const COutPoint& outpoint, const CTxOut& txout)
      46             : {
      47           0 :     m_selected_inputs.insert(outpoint);
      48           0 :     m_external_txouts.emplace(outpoint, txout);
      49           0 : }
      50             : 
      51           0 : void CCoinControl::UnSelect(const COutPoint& output)
      52             : {
      53           0 :     m_selected_inputs.erase(output);
      54           0 : }
      55           0 : 
      56           0 : void CCoinControl::UnSelectAll()
      57           0 : {
      58           0 :     m_selected_inputs.clear();
      59           0 : }
      60             : 
      61           0 : std::vector<COutPoint> CCoinControl::ListSelected() const
      62             : {
      63           0 :     return {m_selected_inputs.begin(), m_selected_inputs.end()};
      64           0 : }
      65             : 
      66           0 : void CCoinControl::SetInputWeight(const COutPoint& outpoint, int64_t weight)
      67             : {
      68           0 :     m_input_weights[outpoint] = weight;
      69           0 : }
      70             : 
      71           0 : bool CCoinControl::HasInputWeight(const COutPoint& outpoint) const
      72             : {
      73           0 :     return m_input_weights.count(outpoint) > 0;
      74           2 : }
      75             : 
      76           0 : int64_t CCoinControl::GetInputWeight(const COutPoint& outpoint) const
      77             : {
      78           0 :     auto it = m_input_weights.find(outpoint);
      79           0 :     assert(it != m_input_weights.end());
      80           0 :     return it->second;
      81             : }
      82             : } // namespace wallet

Generated by: LCOV version 1.14