xrpld
Loading...
Searching...
No Matches
include
xrpl
basics
strHex.h
1
#pragma once
2
3
#include <boost/algorithm/hex.hpp>
4
#include <boost/endian/conversion.hpp>
5
6
#include <
iterator
>
7
#include <
string
>
8
9
namespace
xrpl
{
10
11
template
<
class
FwdIt>
12
std::string
13
strHex
(FwdIt begin, FwdIt end)
14
{
15
static_assert
(
16
std::is_convertible_v
<
17
typename
std::iterator_traits<FwdIt>::iterator_category
,
18
std::forward_iterator_tag
>,
19
"FwdIt must be a forward iterator"
);
20
std::string
result;
21
result.
reserve
(2 *
std::distance
(begin, end));
22
boost::algorithm::hex(begin, end,
std::back_inserter
(result));
23
return
result;
24
}
25
26
template <class T, class = decltype(std::declval<T>().
begin
())>
27
std::string
28
strHex
(T
const
& from)
29
{
30
return
strHex
(from.begin(), from.end());
31
}
32
33
}
// namespace xrpl
std::back_inserter
T back_inserter(T... args)
std::string
std::string::begin
T begin(T... args)
std::distance
T distance(T... args)
std::is_convertible_v
T is_convertible_v
iterator
std::forward_iterator_tag
std::iterator_traits
xrpl
Use hash_* containers for keys that do not need a cryptographically secure hashing algorithm.
Definition
algorithm.h:5
xrpl::strHex
std::string strHex(FwdIt begin, FwdIt end)
Definition
strHex.h:13
std::string::reserve
T reserve(T... args)
string
Generated by
1.16.1