Remove temporary std::string creation in some hex->bin calls

This commit is contained in:
Lee Clagett 2019-11-17 04:26:32 +00:00
parent d1cf16364f
commit 81c5943453

View File

@ -42,6 +42,7 @@
#include <type_traits> #include <type_traits>
#include <boost/lexical_cast.hpp> #include <boost/lexical_cast.hpp>
#include <boost/algorithm/string/predicate.hpp> #include <boost/algorithm/string/predicate.hpp>
#include <boost/utility/string_ref.hpp>
#include "misc_log_ex.h" #include "misc_log_ex.h"
#include "storages/parserse_base_utils.h" #include "storages/parserse_base_utils.h"
#include "hex.h" #include "hex.h"
@ -69,7 +70,7 @@ namespace string_tools
return to_hex::string(to_byte_span(to_span(src))); return to_hex::string(to_byte_span(to_span(src)));
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool parse_hexstr_to_binbuff(const epee::span<const char> s, epee::span<char>& res) inline bool parse_hexstr_to_binbuff(const boost::string_ref s, epee::span<char> res)
{ {
if (s.size() != res.size() * 2) if (s.size() != res.size() * 2)
return false; return false;
@ -90,7 +91,7 @@ namespace string_tools
return true; return true;
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
inline bool parse_hexstr_to_binbuff(const std::string& s, std::string& res) inline bool parse_hexstr_to_binbuff(const boost::string_ref s, std::string& res)
{ {
if (s.size() & 1) if (s.size() & 1)
return false; return false;
@ -303,7 +304,7 @@ POP_WARNINGS
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
template<class t_pod_type> template<class t_pod_type>
bool hex_to_pod(const std::string& hex_str, t_pod_type& s) bool hex_to_pod(const boost::string_ref hex_str, t_pod_type& s)
{ {
static_assert(std::is_pod<t_pod_type>::value, "expected pod type"); static_assert(std::is_pod<t_pod_type>::value, "expected pod type");
if(sizeof(s)*2 != hex_str.size()) if(sizeof(s)*2 != hex_str.size())
@ -313,13 +314,13 @@ POP_WARNINGS
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
template<class t_pod_type> template<class t_pod_type>
bool hex_to_pod(const std::string& hex_str, tools::scrubbed<t_pod_type>& s) bool hex_to_pod(const boost::string_ref hex_str, tools::scrubbed<t_pod_type>& s)
{ {
return hex_to_pod(hex_str, unwrap(s)); return hex_to_pod(hex_str, unwrap(s));
} }
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
template<class t_pod_type> template<class t_pod_type>
bool hex_to_pod(const std::string& hex_str, epee::mlocked<t_pod_type>& s) bool hex_to_pod(const boost::string_ref hex_str, epee::mlocked<t_pod_type>& s)
{ {
return hex_to_pod(hex_str, unwrap(s)); return hex_to_pod(hex_str, unwrap(s));
} }