0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-03-09 15:37:00 -04:00
bitcoin-core/src
Wladimir J. van der Laan 5924dadc2f
Merge #13671: Remove the boost/algorithm/string/case_conv.hpp dependency
b193d5a443 Removes the Boost case_conv.hpp dependency. (251)
7a208d9fad Implements custom tolower and toupper functions. (251)
e2ba043b8d Implements ParseNetwork unit test. (251)

Pull request description:

  This pull request removes the `boost/algorithm/string/case_conv.hpp` dependency from the project.

  `boost/algorithm/string/case_conv.hpp` is included for the `boost::to_lower` and `boost::to_upper` template functions.

  We can replace the calls to these functions with straightforward alternative implementations that use the C++ Standard Library, because the functions are called with `std::string` objects that use standard 7-bit ASCII characters as argument.

  The refactored implementation should work without the explicit `static_cast<unsigned char>` cast and `unsigned char` lambda return type. Both have been added defensively and to be explicit. Especially in case of the former, behaviour is undefined (potentially result in a crash) if the `std::toupper` argument is not an `unsigned char`.

  A potential alternative, maybe even preferred, implementation to address the `boost::to_lower` function call in `ParseNetwork(std::string)` could have been:

  ```c++
  if (net == "ipv4" || net == "IPv4") return NET_IPV4;
  if (net == "ipv6" || net == "IPv6") return NET_IPV6;
  ```
  This alternative implementation would however change the external behaviour of `ParseNetwork(std::string)`.

  This pull requests includes a unit test to validate the implementation of `ParseNetwork(std::string)`  prior and after the removal of the `case_conv.hpp` dependency.

  `boost/algorithm/string/case_conv.hpp` has been removed from the `EXPECTED_BOOST_INCLUDES` in `test/lint/lint-includes.sh` because it is no longer required.

Tree-SHA512: d803ae709f2368a3efb223097384a722436955bce0c44a1a5cffd0abb3164be0cce85ba0e9ebd9408166df3f1a95ea0c0d29e3a2534af2fae206c0419d67fde9
2018-08-29 14:59:49 +02:00
..
bench Merge #13767: Remove redundant assignments (dead stores) 2018-08-27 13:39:46 -04:00
compat Merge #13665: [build] Add risc-v support to gitian 2018-08-16 20:33:50 +02:00
config
consensus Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
crypto Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
index Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
interfaces Merge #13769: Mark single-argument constructors "explicit" 2018-08-27 13:33:04 -04:00
leveldb Merge leveldb subtree 2018-08-09 11:31:45 -04:00
obj
obj-test
policy Merge #13429: Return the script type from Solver 2018-08-25 17:41:00 +02:00
primitives Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
qt Merge #13769: Mark single-argument constructors "explicit" 2018-08-27 13:33:04 -04:00
rpc Removes the Boost case_conv.hpp dependency. 2018-08-28 18:42:53 +02:00
script Merge #13723: PSBT key path cleanups 2018-08-28 16:25:04 +02:00
secp256k1
support Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
test Merge #13671: Remove the boost/algorithm/string/case_conv.hpp dependency 2018-08-29 14:59:49 +02:00
univalue
wallet Merge #14055: fix walletcreatefundedpsbt deriv paths, add test 2018-08-28 23:11:15 +02:00
zmq Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
.clang-format Fix inconsistent namespace formatting guidelines 2018-04-13 15:37:20 -04:00
addrdb.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
addrdb.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
addrman.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
addrman.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
amount.h
arith_uint256.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
arith_uint256.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
base58.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
base58.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
bech32.cpp Tighten up bech32::Decode(); add tests. 2018-04-12 17:52:33 -07:00
bech32.h
bitcoin-cli-res.rc
bitcoin-cli.cpp util: Replace boost::signals2 with std::function 2018-08-24 08:34:38 -04:00
bitcoin-tx-res.rc
bitcoin-tx.cpp util: Replace boost::signals2 with std::function 2018-08-24 08:34:38 -04:00
bitcoind-res.rc
bitcoind.cpp util: Replace boost::signals2 with std::function 2018-08-24 08:34:38 -04:00
blockencodings.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
blockencodings.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
blockfilter.cpp blockfilter: Optimization on compilers with int128 support. 2018-08-25 10:02:37 -07:00
blockfilter.h blockfilter: Additional helper methods to compute hash and header. 2018-08-25 10:02:37 -07:00
bloom.cpp Merge #13429: Return the script type from Solver 2018-08-25 17:41:00 +02:00
bloom.h Removes unsed CBloomFilter constructor. 2018-08-13 01:24:55 +02:00
chain.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chain.h [trivial] Fix typo in CDiskBlockPos struct's ToString 2018-08-14 18:03:43 -05:00
chainparams.cpp Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
chainparams.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
chainparamsbase.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chainparamsbase.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
chainparamsseeds.h net: Update hardcoded seeds 2018-08-13 13:57:15 +02:00
checkpoints.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
checkpoints.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
checkqueue.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
clientversion.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
clientversion.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
coins.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
coins.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
compat.h Make IS_TRIVIALLY_CONSTRUCTIBLE consistent on GCC < 5 2018-08-23 10:38:59 -07:00
compressor.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
compressor.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
core_io.h rpc: Expose ProcessNewBlockHeaders 2018-08-13 14:27:40 -04:00
core_memusage.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
core_read.cpp rpc: Expose ProcessNewBlockHeaders 2018-08-13 14:27:40 -04:00
core_write.cpp Merge #13429: Return the script type from Solver 2018-08-25 17:41:00 +02:00
cuckoocache.h
dbwrapper.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
dbwrapper.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
fs.cpp add unicode compatible file_lock for Windows 2018-08-28 00:55:13 +08:00
fs.h add unicode compatible file_lock for Windows 2018-08-28 00:55:13 +08:00
hash.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
hash.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
httprpc.cpp Merge #13534: Don't assert(foo()) where foo() has side effects 2018-08-13 10:02:50 -04:00
httprpc.h Cleanup StartRest() 2018-08-11 09:34:47 +03:00
httpserver.cpp http: Add const modifier to HTTPRequest methods 2018-08-20 01:35:55 +01:00
httpserver.h http: Add const modifier to HTTPRequest methods 2018-08-20 01:35:55 +01:00
indirectmap.h
init.cpp add unicode compatible file_lock for Windows 2018-08-28 00:55:13 +08:00
init.h Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
key.cpp Merge #13666: Always create signatures with Low R values 2018-08-13 12:07:20 +02:00
key.h Merge #13666: Always create signatures with Low R values 2018-08-13 12:07:20 +02:00
key_io.cpp Merge #13769: Mark single-argument constructors "explicit" 2018-08-27 13:33:04 -04:00
key_io.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
keystore.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
keystore.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
limitedmap.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
logging.cpp refactor: use fs:: over boost::filesystem:: 2018-08-15 21:05:21 +08:00
logging.h logging: remove unused return value from LogPrintStr 2018-05-02 11:25:20 +02:00
Makefile.am blockfilter: Implement GCSFilter constructors. 2018-08-25 10:02:37 -07:00
Makefile.bench.include bench: Benchmark GCS filter creation and matching. 2018-08-25 10:02:37 -07:00
Makefile.leveldb.include
Makefile.qt.include scripted-diff: Remove trailing whitespaces 2018-07-24 20:46:23 +01:00
Makefile.qttest.include crypto: cleanup sha256 build 2018-06-06 17:36:53 -04:00
Makefile.test.include [tests] Remove wallet accounts test 2018-08-27 09:34:01 -04:00
memusage.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
merkleblock.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
merkleblock.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
miner.cpp Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
miner.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
net.cpp Report minfeefilter value in getpeerinfo rpc 2018-08-27 21:13:15 +10:00
net.h Report minfeefilter value in getpeerinfo rpc 2018-08-27 21:13:15 +10:00
net_processing.cpp Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
net_processing.h Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
netaddress.cpp Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
netaddress.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
netbase.cpp Removes the Boost case_conv.hpp dependency. 2018-08-28 18:42:53 +02:00
netbase.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
netmessagemaker.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
noui.cpp util: Replace boost::signals2 with std::function 2018-08-24 08:34:38 -04:00
noui.h
outputtype.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
outputtype.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pow.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pow.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
prevector.h Remove default argument to prevector constructor to remove ambiguity 2018-08-23 02:57:39 -07:00
protocol.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
protocol.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pubkey.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
pubkey.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
random.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
random.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
rest.cpp Cleanup StartRest() 2018-08-11 09:34:47 +03:00
reverse_iterator.h scripted-diff: Remove trailing whitespaces 2018-07-24 20:46:23 +01:00
reverselock.h
scheduler.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
scheduler.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
serialize.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
shutdown.cpp Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
shutdown.h Break circular dependency: init -> * -> init by extracting shutdown.h 2018-06-25 00:08:49 -04:00
span.h Add more methods to Span class 2018-07-27 11:52:18 -07:00
streams.h streams: Implement BitStreamReader/Writer classes. 2018-08-25 10:02:37 -07:00
sync.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
sync.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
threadinterrupt.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
threadinterrupt.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
threadsafety.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
timedata.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
timedata.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
tinyformat.h
torcontrol.cpp Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
torcontrol.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
txdb.cpp Return void instead of bool for functions that cannot fail 2018-07-27 13:19:03 +02:00
txdb.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00
txmempool.cpp Merge #13767: Remove redundant assignments (dead stores) 2018-08-27 13:39:46 -04:00
txmempool.h Move cs_main locking annotations from .cpp to .h 2018-08-26 11:15:17 +02:00
ui_interface.cpp Merge #13634: ui: Compile boost::signals2 only once 2018-08-13 15:02:38 -04:00
ui_interface.h Make macro compatible with MSVC 2018-08-14 09:19:47 +00:00
uint256.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
uint256.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
undo.h blockfilter: Construction of basic block filters. 2018-08-25 10:02:37 -07:00
util.cpp add unicode compatible file_lock for Windows 2018-08-28 00:55:13 +08:00
util.h util: Replace boost::signals2 with std::function 2018-08-24 08:34:38 -04:00
utilmemory.h Extract MakeUnique into utilmemory.h 2018-07-17 13:56:21 -04:00
utilmoneystr.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
utilmoneystr.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
utilstrencodings.cpp Implements custom tolower and toupper functions. 2018-08-28 18:42:27 +02:00
utilstrencodings.h Implements custom tolower and toupper functions. 2018-08-28 18:42:27 +02:00
utiltime.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
utiltime.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
validation.cpp Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
validation.h Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
validationinterface.cpp Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
validationinterface.h Add compile time checking for all cs_main runtime locking assertions 2018-08-26 00:25:28 +02:00
version.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
versionbits.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
versionbits.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
walletinitinterface.h Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
warnings.cpp Update copyright headers to 2018 2018-07-27 07:15:02 -04:00
warnings.h Merge #13780: 0.17: Pre-branch maintenance 2018-08-08 13:55:27 +02:00