merge bitcoin#20499: Remove obsolete NODISCARD ifdef forest. Use [[nodiscard]] (C++17)

------------- BEGIN SCRIPT ---------------
gsed -i "s/NODISCARD/[[nodiscard]]/g" $(git grep -l "NODISCARD" ":(exclude)src/bench/nanobench.h" ":(exclude)src/attributes.h")
------------- END   SCRIPT ---------------
This commit is contained in:
Kittywhiskers Van Gogh 2021-06-16 13:31:16 +05:30
parent ef4dfa8524
commit f2f1843f0c
8 changed files with 22 additions and 35 deletions

View File

@ -6,19 +6,6 @@
#ifndef BITCOIN_ATTRIBUTES_H #ifndef BITCOIN_ATTRIBUTES_H
#define BITCOIN_ATTRIBUTES_H #define BITCOIN_ATTRIBUTES_H
#if defined(__has_cpp_attribute)
# if __has_cpp_attribute(nodiscard)
# define NODISCARD [[nodiscard]]
# endif
#endif
#ifndef NODISCARD
# if defined(_MSC_VER) && _MSC_VER >= 1700
# define NODISCARD _Check_return_
# else
# define NODISCARD __attribute__((warn_unused_result))
# endif
#endif
#if defined(__clang__) #if defined(__clang__)
# if __has_attribute(lifetimebound) # if __has_attribute(lifetimebound)
# define LIFETIMEBOUND [[clang::lifetimebound]] # define LIFETIMEBOUND [[clang::lifetimebound]]

View File

@ -35,13 +35,13 @@ std::string EncodeBase58(const std::vector<unsigned char>& vch);
* return true if decoding is successful. * return true if decoding is successful.
* psz cannot be nullptr. * psz cannot be nullptr.
*/ */
NODISCARD bool DecodeBase58(const char* psz, std::vector<unsigned char>& vchRet); [[nodiscard]] bool DecodeBase58(const char* psz, std::vector<unsigned char>& vchRet);
/** /**
* Decode a base58-encoded string (str) into a byte vector (vchRet). * Decode a base58-encoded string (str) into a byte vector (vchRet).
* return true if decoding is successful. * return true if decoding is successful.
*/ */
NODISCARD bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vchRet); [[nodiscard]] bool DecodeBase58(const std::string& str, std::vector<unsigned char>& vchRet);
/** /**
* Encode a byte vector into a base58-encoded string, including checksum * Encode a byte vector into a base58-encoded string, including checksum
@ -52,12 +52,12 @@ std::string EncodeBase58Check(const std::vector<unsigned char>& vchIn);
* Decode a base58-encoded string (psz) that includes a checksum into a byte * Decode a base58-encoded string (psz) that includes a checksum into a byte
* vector (vchRet), return true if decoding is successful * vector (vchRet), return true if decoding is successful
*/ */
NODISCARD bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRet); [[nodiscard]] bool DecodeBase58Check(const char* psz, std::vector<unsigned char>& vchRet);
/** /**
* Decode a base58-encoded string (str) that includes a checksum into a byte * Decode a base58-encoded string (str) that includes a checksum into a byte
* vector (vchRet), return true if decoding is successful * vector (vchRet), return true if decoding is successful
*/ */
NODISCARD bool DecodeBase58Check(const std::string& str, std::vector<unsigned char>& vchRet); [[nodiscard]] bool DecodeBase58Check(const std::string& str, std::vector<unsigned char>& vchRet);
#endif // BITCOIN_BASE58_H #endif // BITCOIN_BASE58_H

View File

@ -23,8 +23,8 @@ struct CSpentIndexTxInfo;
// core_read.cpp // core_read.cpp
CScript ParseScript(const std::string& s); CScript ParseScript(const std::string& s);
std::string ScriptToAsmStr(const CScript& script, const bool fAttemptSighashDecode = false); std::string ScriptToAsmStr(const CScript& script, const bool fAttemptSighashDecode = false);
NODISCARD bool DecodeHexTx(CMutableTransaction& tx, const std::string& strHexTx); [[nodiscard]] bool DecodeHexTx(CMutableTransaction& tx, const std::string& strHexTx);
NODISCARD bool DecodeHexBlk(CBlock&, const std::string& strHexBlk); [[nodiscard]] bool DecodeHexBlk(CBlock&, const std::string& strHexBlk);
uint256 ParseHashStr(const std::string&, const std::string& strName); uint256 ParseHashStr(const std::string&, const std::string& strName);
std::vector<unsigned char> ParseHexUV(const UniValue& v, const std::string& strName); std::vector<unsigned char> ParseHexUV(const UniValue& v, const std::string& strName);

View File

@ -508,7 +508,7 @@ public:
private: private:
template <typename T> template <typename T>
NODISCARD bool AddUniqueProperty(const CDeterministicMNCPtr& dmn, const T& v) [[nodiscard]] bool AddUniqueProperty(const CDeterministicMNCPtr& dmn, const T& v)
{ {
static const T nullValue; static const T nullValue;
if (v == nullValue) { if (v == nullValue) {
@ -528,7 +528,7 @@ private:
return true; return true;
} }
template <typename T> template <typename T>
NODISCARD bool DeleteUniqueProperty(const CDeterministicMNCPtr& dmn, const T& oldValue) [[nodiscard]] bool DeleteUniqueProperty(const CDeterministicMNCPtr& dmn, const T& oldValue)
{ {
static const T nullValue; static const T nullValue;
if (oldValue == nullValue) { if (oldValue == nullValue) {
@ -548,7 +548,7 @@ private:
return true; return true;
} }
template <typename T> template <typename T>
NODISCARD bool UpdateUniqueProperty(const CDeterministicMNCPtr& dmn, const T& oldValue, const T& newValue) [[nodiscard]] bool UpdateUniqueProperty(const CDeterministicMNCPtr& dmn, const T& oldValue, const T& newValue)
{ {
if (oldValue == newValue) { if (oldValue == newValue) {
return true; return true;

View File

@ -19,7 +19,7 @@
* JSON but use AmountFromValue and ValueFromAmount for that. * JSON but use AmountFromValue and ValueFromAmount for that.
*/ */
std::string FormatMoney(const CAmount& n); std::string FormatMoney(const CAmount& n);
NODISCARD bool ParseMoney(const std::string& str, CAmount& nRet); [[nodiscard]] bool ParseMoney(const std::string& str, CAmount& nRet);
NODISCARD bool ParseMoney(const char* pszIn, CAmount& nRet); [[nodiscard]] bool ParseMoney(const char* pszIn, CAmount& nRet);
#endif // BITCOIN_UTIL_MONEYSTR_H #endif // BITCOIN_UTIL_MONEYSTR_H

View File

@ -266,7 +266,7 @@ std::string DecodeBase32(const std::string& str, bool* pf_invalid)
return std::string((const char*)vchRet.data(), vchRet.size()); return std::string((const char*)vchRet.data(), vchRet.size());
} }
NODISCARD static bool ParsePrechecks(const std::string& str) [[nodiscard]] static bool ParsePrechecks(const std::string& str)
{ {
if (str.empty()) // No empty string allowed if (str.empty()) // No empty string allowed
return false; return false;

View File

@ -92,42 +92,42 @@ constexpr bool IsDigit(char c)
* @returns true if the entire string could be parsed as valid integer, * @returns true if the entire string could be parsed as valid integer,
* false if not the entire string could be parsed or when overflow or underflow occurred. * false if not the entire string could be parsed or when overflow or underflow occurred.
*/ */
NODISCARD bool ParseInt32(const std::string& str, int32_t *out); [[nodiscard]] bool ParseInt32(const std::string& str, int32_t *out);
/** /**
* Convert string to signed 64-bit integer with strict parse error feedback. * Convert string to signed 64-bit integer with strict parse error feedback.
* @returns true if the entire string could be parsed as valid integer, * @returns true if the entire string could be parsed as valid integer,
* false if not the entire string could be parsed or when overflow or underflow occurred. * false if not the entire string could be parsed or when overflow or underflow occurred.
*/ */
NODISCARD bool ParseInt64(const std::string& str, int64_t *out); [[nodiscard]] bool ParseInt64(const std::string& str, int64_t *out);
/** /**
* Convert decimal string to unsigned 8-bit integer with strict parse error feedback. * Convert decimal string to unsigned 8-bit integer with strict parse error feedback.
* @returns true if the entire string could be parsed as valid integer, * @returns true if the entire string could be parsed as valid integer,
* false if not the entire string could be parsed or when overflow or underflow occurred. * false if not the entire string could be parsed or when overflow or underflow occurred.
*/ */
NODISCARD bool ParseUInt8(const std::string& str, uint8_t *out); [[nodiscard]] bool ParseUInt8(const std::string& str, uint8_t *out);
/** /**
* Convert decimal string to unsigned 32-bit integer with strict parse error feedback. * Convert decimal string to unsigned 32-bit integer with strict parse error feedback.
* @returns true if the entire string could be parsed as valid integer, * @returns true if the entire string could be parsed as valid integer,
* false if not the entire string could be parsed or when overflow or underflow occurred. * false if not the entire string could be parsed or when overflow or underflow occurred.
*/ */
NODISCARD bool ParseUInt32(const std::string& str, uint32_t *out); [[nodiscard]] bool ParseUInt32(const std::string& str, uint32_t *out);
/** /**
* Convert decimal string to unsigned 64-bit integer with strict parse error feedback. * Convert decimal string to unsigned 64-bit integer with strict parse error feedback.
* @returns true if the entire string could be parsed as valid integer, * @returns true if the entire string could be parsed as valid integer,
* false if not the entire string could be parsed or when overflow or underflow occurred. * false if not the entire string could be parsed or when overflow or underflow occurred.
*/ */
NODISCARD bool ParseUInt64(const std::string& str, uint64_t *out); [[nodiscard]] bool ParseUInt64(const std::string& str, uint64_t *out);
/** /**
* Convert string to double with strict parse error feedback. * Convert string to double with strict parse error feedback.
* @returns true if the entire string could be parsed as valid double, * @returns true if the entire string could be parsed as valid double,
* false if not the entire string could be parsed or when overflow or underflow occurred. * false if not the entire string could be parsed or when overflow or underflow occurred.
*/ */
NODISCARD bool ParseDouble(const std::string& str, double *out); [[nodiscard]] bool ParseDouble(const std::string& str, double *out);
/** /**
* Convert a span of bytes to a lower-case hexadecimal string. * Convert a span of bytes to a lower-case hexadecimal string.
@ -161,7 +161,7 @@ bool TimingResistantEqual(const T& a, const T& b)
* @returns true on success, false on error. * @returns true on success, false on error.
* @note The result must be in the range (-10^18,10^18), otherwise an overflow error will trigger. * @note The result must be in the range (-10^18,10^18), otherwise an overflow error will trigger.
*/ */
NODISCARD bool ParseFixedPoint(const std::string &val, int decimals, int64_t *amount_out); [[nodiscard]] bool ParseFixedPoint(const std::string &val, int decimals, int64_t *amount_out);
/** Convert from one power-of-2 number base to another. */ /** Convert from one power-of-2 number base to another. */
template<int frombits, int tobits, bool pad, typename O, typename I> template<int frombits, int tobits, bool pad, typename O, typename I>

View File

@ -15,7 +15,7 @@
#include <string> #include <string>
#include <vector> #include <vector>
NODISCARD inline std::string TrimString(const std::string& str, const std::string& pattern = " \f\n\r\t\v") [[nodiscard]] inline std::string TrimString(const std::string& str, const std::string& pattern = " \f\n\r\t\v")
{ {
std::string::size_type front = str.find_first_not_of(pattern); std::string::size_type front = str.find_first_not_of(pattern);
if (front == std::string::npos) { if (front == std::string::npos) {
@ -59,7 +59,7 @@ inline std::string Join(const std::vector<std::string>& list, const std::string&
/** /**
* Check if a string does not contain any embedded NUL (\0) characters * Check if a string does not contain any embedded NUL (\0) characters
*/ */
NODISCARD inline bool ValidAsCString(const std::string& str) noexcept [[nodiscard]] inline bool ValidAsCString(const std::string& str) noexcept
{ {
return str.size() == strlen(str.c_str()); return str.size() == strlen(str.c_str());
} }
@ -68,7 +68,7 @@ NODISCARD inline bool ValidAsCString(const std::string& str) noexcept
* Check whether a container begins with the given prefix. * Check whether a container begins with the given prefix.
*/ */
template <typename T1, size_t PREFIX_LEN> template <typename T1, size_t PREFIX_LEN>
NODISCARD inline bool HasPrefix(const T1& obj, [[nodiscard]] inline bool HasPrefix(const T1& obj,
const std::array<uint8_t, PREFIX_LEN>& prefix) const std::array<uint8_t, PREFIX_LEN>& prefix)
{ {
return obj.size() >= PREFIX_LEN && return obj.size() >= PREFIX_LEN &&