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:
0if (net == "ipv4" || net == "IPv4") return NET_IPV4;
1if (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.