scripted-diff: Avoid temporary copies when looping over std::map
The ::value_type of the std::map/std::multimap/std::unordered_map containers is std::pair<const Key, T>. Dropping the const results in an unnecessary copy, for example in C++11 range-based loops. For this I started with a more general scripted diff, then narrowed it down based on the inspection showing that all actual map/multimap/unordered_map variables used in loops start with m or have map in the name. -BEGIN VERIFY SCRIPT- sed -i -E 's/for \(([^<]*)std::pair<([^c])(.+) : m/for (\1std::pair<const \2\3 : m/' src/*.cpp src/**/*.cpp sed -i -E 's/for \(([^<]*)std::pair<([^c])(.+) : (.*)map/for (\1std::pair<const \2\3 : \4map/' src/*.cpp src/**/*.cpp -END VERIFY SCRIPT-
This commit is contained in:
parent
7c32b414b6
commit
9b72c988a0
5 changed files with 18 additions and 18 deletions
|
@ -614,7 +614,7 @@ static void CleanupBlockRevFiles()
|
||||||
// keeping a separate counter. Once we hit a gap (or if 0 doesn't exist)
|
// keeping a separate counter. Once we hit a gap (or if 0 doesn't exist)
|
||||||
// start removing block files.
|
// start removing block files.
|
||||||
int nContigCounter = 0;
|
int nContigCounter = 0;
|
||||||
for (const std::pair<std::string, fs::path>& item : mapBlockFiles) {
|
for (const std::pair<const std::string, fs::path>& item : mapBlockFiles) {
|
||||||
if (atoi(item.first) == nContigCounter) {
|
if (atoi(item.first) == nContigCounter) {
|
||||||
nContigCounter++;
|
nContigCounter++;
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -475,7 +475,7 @@ static UniValue getnetworkinfo(const JSONRPCRequest& request)
|
||||||
UniValue localAddresses(UniValue::VARR);
|
UniValue localAddresses(UniValue::VARR);
|
||||||
{
|
{
|
||||||
LOCK(cs_mapLocalHost);
|
LOCK(cs_mapLocalHost);
|
||||||
for (const std::pair<CNetAddr, LocalServiceInfo> &item : mapLocalHost)
|
for (const std::pair<const CNetAddr, LocalServiceInfo> &item : mapLocalHost)
|
||||||
{
|
{
|
||||||
UniValue rec(UniValue::VOBJ);
|
UniValue rec(UniValue::VOBJ);
|
||||||
rec.pushKV("address", item.first.ToString());
|
rec.pushKV("address", item.first.ToString());
|
||||||
|
|
|
@ -3840,7 +3840,7 @@ bool CChainState::LoadBlockIndex(const Consensus::Params& consensus_params, CBlo
|
||||||
// Calculate nChainWork
|
// Calculate nChainWork
|
||||||
std::vector<std::pair<int, CBlockIndex*> > vSortedByHeight;
|
std::vector<std::pair<int, CBlockIndex*> > vSortedByHeight;
|
||||||
vSortedByHeight.reserve(mapBlockIndex.size());
|
vSortedByHeight.reserve(mapBlockIndex.size());
|
||||||
for (const std::pair<uint256, CBlockIndex*>& item : mapBlockIndex)
|
for (const std::pair<const uint256, CBlockIndex*>& item : mapBlockIndex)
|
||||||
{
|
{
|
||||||
CBlockIndex* pindex = item.second;
|
CBlockIndex* pindex = item.second;
|
||||||
vSortedByHeight.push_back(std::make_pair(pindex->nHeight, pindex));
|
vSortedByHeight.push_back(std::make_pair(pindex->nHeight, pindex));
|
||||||
|
@ -3907,7 +3907,7 @@ bool static LoadBlockIndexDB(const CChainParams& chainparams)
|
||||||
// Check presence of blk files
|
// Check presence of blk files
|
||||||
LogPrintf("Checking all blk files are present...\n");
|
LogPrintf("Checking all blk files are present...\n");
|
||||||
std::set<int> setBlkDataFiles;
|
std::set<int> setBlkDataFiles;
|
||||||
for (const std::pair<uint256, CBlockIndex*>& item : mapBlockIndex)
|
for (const std::pair<const uint256, CBlockIndex*>& item : mapBlockIndex)
|
||||||
{
|
{
|
||||||
CBlockIndex* pindex = item.second;
|
CBlockIndex* pindex = item.second;
|
||||||
if (pindex->nStatus & BLOCK_HAVE_DATA) {
|
if (pindex->nStatus & BLOCK_HAVE_DATA) {
|
||||||
|
|
|
@ -120,7 +120,7 @@ static void WalletTxToJSON(const CWalletTx& wtx, UniValue& entry)
|
||||||
}
|
}
|
||||||
entry.pushKV("bip125-replaceable", rbfStatus);
|
entry.pushKV("bip125-replaceable", rbfStatus);
|
||||||
|
|
||||||
for (const std::pair<std::string, std::string>& item : wtx.mapValue)
|
for (const std::pair<const std::string, std::string>& item : wtx.mapValue)
|
||||||
entry.pushKV(item.first, item.second);
|
entry.pushKV(item.first, item.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,7 +343,7 @@ static UniValue setlabel(const JSONRPCRequest& request)
|
||||||
// If so, delete the account record for it. Labels, unlike addresses, can be deleted,
|
// If so, delete the account record for it. Labels, unlike addresses, can be deleted,
|
||||||
// and if we wouldn't do this, the record would stick around forever.
|
// and if we wouldn't do this, the record would stick around forever.
|
||||||
bool found_address = false;
|
bool found_address = false;
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
for (const std::pair<const CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
||||||
if (item.second.name == label) {
|
if (item.second.name == label) {
|
||||||
found_address = true;
|
found_address = true;
|
||||||
break;
|
break;
|
||||||
|
@ -440,7 +440,7 @@ static UniValue getaddressesbyaccount(const JSONRPCRequest& request)
|
||||||
|
|
||||||
// Find all addresses that have the given account
|
// Find all addresses that have the given account
|
||||||
UniValue ret(UniValue::VARR);
|
UniValue ret(UniValue::VARR);
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
for (const std::pair<const CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
||||||
const CTxDestination& dest = item.first;
|
const CTxDestination& dest = item.first;
|
||||||
const std::string& strName = item.second.name;
|
const std::string& strName = item.second.name;
|
||||||
if (strName == strAccount) {
|
if (strName == strAccount) {
|
||||||
|
@ -753,7 +753,7 @@ static UniValue getreceivedbyaddress(const JSONRPCRequest& request)
|
||||||
|
|
||||||
// Tally
|
// Tally
|
||||||
CAmount nAmount = 0;
|
CAmount nAmount = 0;
|
||||||
for (const std::pair<uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
for (const std::pair<const uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
||||||
const CWalletTx& wtx = pairWtx.second;
|
const CWalletTx& wtx = pairWtx.second;
|
||||||
if (wtx.IsCoinBase() || !CheckFinalTx(*wtx.tx))
|
if (wtx.IsCoinBase() || !CheckFinalTx(*wtx.tx))
|
||||||
continue;
|
continue;
|
||||||
|
@ -821,7 +821,7 @@ static UniValue getreceivedbylabel(const JSONRPCRequest& request)
|
||||||
|
|
||||||
// Tally
|
// Tally
|
||||||
CAmount nAmount = 0;
|
CAmount nAmount = 0;
|
||||||
for (const std::pair<uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
for (const std::pair<const uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
||||||
const CWalletTx& wtx = pairWtx.second;
|
const CWalletTx& wtx = pairWtx.second;
|
||||||
if (wtx.IsCoinBase() || !CheckFinalTx(*wtx.tx))
|
if (wtx.IsCoinBase() || !CheckFinalTx(*wtx.tx))
|
||||||
continue;
|
continue;
|
||||||
|
@ -1534,7 +1534,7 @@ static UniValue ListReceived(CWallet * const pwallet, const UniValue& params, bo
|
||||||
|
|
||||||
// Tally
|
// Tally
|
||||||
std::map<CTxDestination, tallyitem> mapTally;
|
std::map<CTxDestination, tallyitem> mapTally;
|
||||||
for (const std::pair<uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
for (const std::pair<const uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
||||||
const CWalletTx& wtx = pairWtx.second;
|
const CWalletTx& wtx = pairWtx.second;
|
||||||
|
|
||||||
if (wtx.IsCoinBase() || !CheckFinalTx(*wtx.tx))
|
if (wtx.IsCoinBase() || !CheckFinalTx(*wtx.tx))
|
||||||
|
@ -2113,13 +2113,13 @@ static UniValue listaccounts(const JSONRPCRequest& request)
|
||||||
includeWatchonly = includeWatchonly | ISMINE_WATCH_ONLY;
|
includeWatchonly = includeWatchonly | ISMINE_WATCH_ONLY;
|
||||||
|
|
||||||
std::map<std::string, CAmount> mapAccountBalances;
|
std::map<std::string, CAmount> mapAccountBalances;
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& entry : pwallet->mapAddressBook) {
|
for (const std::pair<const CTxDestination, CAddressBookData>& entry : pwallet->mapAddressBook) {
|
||||||
if (IsMine(*pwallet, entry.first) & includeWatchonly) { // This address belongs to me
|
if (IsMine(*pwallet, entry.first) & includeWatchonly) { // This address belongs to me
|
||||||
mapAccountBalances[entry.second.name] = 0;
|
mapAccountBalances[entry.second.name] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const std::pair<uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
for (const std::pair<const uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
||||||
const CWalletTx& wtx = pairWtx.second;
|
const CWalletTx& wtx = pairWtx.second;
|
||||||
CAmount nFee;
|
CAmount nFee;
|
||||||
std::string strSentAccount;
|
std::string strSentAccount;
|
||||||
|
@ -2148,7 +2148,7 @@ static UniValue listaccounts(const JSONRPCRequest& request)
|
||||||
mapAccountBalances[entry.strAccount] += entry.nCreditDebit;
|
mapAccountBalances[entry.strAccount] += entry.nCreditDebit;
|
||||||
|
|
||||||
UniValue ret(UniValue::VOBJ);
|
UniValue ret(UniValue::VOBJ);
|
||||||
for (const std::pair<std::string, CAmount>& accountBalance : mapAccountBalances) {
|
for (const std::pair<const std::string, CAmount>& accountBalance : mapAccountBalances) {
|
||||||
ret.pushKV(accountBalance.first, ValueFromAmount(accountBalance.second));
|
ret.pushKV(accountBalance.first, ValueFromAmount(accountBalance.second));
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -2257,7 +2257,7 @@ static UniValue listsinceblock(const JSONRPCRequest& request)
|
||||||
|
|
||||||
UniValue transactions(UniValue::VARR);
|
UniValue transactions(UniValue::VARR);
|
||||||
|
|
||||||
for (const std::pair<uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
for (const std::pair<const uint256, CWalletTx>& pairWtx : pwallet->mapWallet) {
|
||||||
CWalletTx tx = pairWtx.second;
|
CWalletTx tx = pairWtx.second;
|
||||||
|
|
||||||
if (depth == -1 || tx.GetDepthInMainChain() < depth) {
|
if (depth == -1 || tx.GetDepthInMainChain() < depth) {
|
||||||
|
@ -4194,7 +4194,7 @@ static UniValue getaddressesbylabel(const JSONRPCRequest& request)
|
||||||
|
|
||||||
// Find all addresses that have the given label
|
// Find all addresses that have the given label
|
||||||
UniValue ret(UniValue::VOBJ);
|
UniValue ret(UniValue::VOBJ);
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
for (const std::pair<const CTxDestination, CAddressBookData>& item : pwallet->mapAddressBook) {
|
||||||
if (item.second.name == label) {
|
if (item.second.name == label) {
|
||||||
ret.pushKV(EncodeDestination(item.first), AddressBookDataToJSON(item.second, false));
|
ret.pushKV(EncodeDestination(item.first), AddressBookDataToJSON(item.second, false));
|
||||||
}
|
}
|
||||||
|
@ -4247,7 +4247,7 @@ static UniValue listlabels(const JSONRPCRequest& request)
|
||||||
|
|
||||||
// Add to a set to sort by label name, then insert into Univalue array
|
// Add to a set to sort by label name, then insert into Univalue array
|
||||||
std::set<std::string> label_set;
|
std::set<std::string> label_set;
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& entry : pwallet->mapAddressBook) {
|
for (const std::pair<const CTxDestination, CAddressBookData>& entry : pwallet->mapAddressBook) {
|
||||||
if (purpose.empty() || entry.second.purpose == purpose) {
|
if (purpose.empty() || entry.second.purpose == purpose) {
|
||||||
label_set.insert(entry.second.name);
|
label_set.insert(entry.second.name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -3284,7 +3284,7 @@ bool CWallet::DelAddressBook(const CTxDestination& address)
|
||||||
|
|
||||||
// Delete destdata tuples associated with address
|
// Delete destdata tuples associated with address
|
||||||
std::string strAddress = EncodeDestination(address);
|
std::string strAddress = EncodeDestination(address);
|
||||||
for (const std::pair<std::string, std::string> &item : mapAddressBook[address].destdata)
|
for (const std::pair<const std::string, std::string> &item : mapAddressBook[address].destdata)
|
||||||
{
|
{
|
||||||
WalletBatch(*database).EraseDestData(strAddress, item.first);
|
WalletBatch(*database).EraseDestData(strAddress, item.first);
|
||||||
}
|
}
|
||||||
|
@ -3685,7 +3685,7 @@ std::set<CTxDestination> CWallet::GetLabelAddresses(const std::string& label) co
|
||||||
{
|
{
|
||||||
LOCK(cs_wallet);
|
LOCK(cs_wallet);
|
||||||
std::set<CTxDestination> result;
|
std::set<CTxDestination> result;
|
||||||
for (const std::pair<CTxDestination, CAddressBookData>& item : mapAddressBook)
|
for (const std::pair<const CTxDestination, CAddressBookData>& item : mapAddressBook)
|
||||||
{
|
{
|
||||||
const CTxDestination& address = item.first;
|
const CTxDestination& address = item.first;
|
||||||
const std::string& strName = item.second.name;
|
const std::string& strName = item.second.name;
|
||||||
|
|
Loading…
Reference in a new issue