merge bitcoin#24531: Use designated initializers

This commit is contained in:
Kittywhiskers Van Gogh 2022-03-11 10:14:31 +01:00
parent 17110f50b3
commit b50febc0f0
No known key found for this signature in database
GPG Key ID: 30CD0C065E5C4AAD
3 changed files with 37 additions and 6 deletions

View File

@ -336,6 +336,7 @@ BITCOIN_CORE_H = \
util/bip32.h \
util/bytevectorhash.h \
util/check.h \
util/designator.h \
util/edge.h \
util/enumerate.h \
util/epochguard.h \

View File

@ -27,6 +27,7 @@
#include <protocol.h>
#include <random.h>
#include <scheduler.h>
#include <util/designator.h>
#include <util/sock.h>
#include <util/strencodings.h>
#include <util/system.h>
@ -1329,12 +1330,20 @@ bool CConnman::AttemptToEvictConnection()
}
}
NodeEvictionCandidate candidate = {node->GetId(), node->m_connected, node->m_min_ping_time,
node->m_last_block_time, node->m_last_tx_time,
node->m_has_all_wanted_services,
node->m_relays_txs.load(), node->m_bloom_filter_loaded.load(),
node->nKeyedNetGroup, node->m_prefer_evict, node->addr.IsLocal(),
node->ConnectedThroughNetwork()};
NodeEvictionCandidate candidate{
Desig(id) node->GetId(),
Desig(m_connected) node->m_connected,
Desig(m_min_ping_time) node->m_min_ping_time,
Desig(m_last_block_time) node->m_last_block_time,
Desig(m_last_tx_time) node->m_last_tx_time,
Desig(fRelevantServices) node->m_has_all_wanted_services,
Desig(m_relay_txs) node->m_relays_txs.load(),
Desig(fBloomFilter) node->m_bloom_filter_loaded.load(),
Desig(nKeyedNetGroup) node->nKeyedNetGroup,
Desig(prefer_evict) node->m_prefer_evict,
Desig(m_is_local) node->addr.IsLocal(),
Desig(m_network) node->ConnectedThroughNetwork(),
};
vEvictionCandidates.push_back(candidate);
}
}

21
src/util/designator.h Normal file
View File

@ -0,0 +1,21 @@
// Copyright (c) 2022 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_UTIL_DESIGNATOR_H
#define BITCOIN_UTIL_DESIGNATOR_H
/**
* Designated initializers can be used to avoid ordering mishaps in aggregate
* initialization. However, they do not prevent uninitialized members. The
* checks can be disabled by defining DISABLE_DESIGNATED_INITIALIZER_ERRORS.
* This should only be needed on MSVC 2019. MSVC 2022 supports them with the
* option "/std:c++20"
*/
#ifndef DISABLE_DESIGNATED_INITIALIZER_ERRORS
#define Desig(field_name) .field_name =
#else
#define Desig(field_name)
#endif
#endif // BITCOIN_UTIL_DESIGNATOR_H