30 #include <boost/range/irange.hpp> 34 typename std::vector<T>::iterator
append(
35 std::vector<T> &dest,
const std::vector<T> &source);
38 typename std::vector<T>::iterator
append(
39 std::vector<T> &dest, std::vector<T> &&source);
42 std::string
str(
const T &
object);
44 template <
class ByteType =
unsigned char,
class T>
45 std::array<ByteType, sizeof(T)>
to_bytes(T number);
47 std::string
to_lower(std::string
string);
50 std::ostream &operator<<(std::ostream &os, const std::vector<T> &vector);
64 typename std::vector<T>::iterator
append(
65 std::vector<T> &dest,
const std::vector<T> &source)
67 typename std::vector<T>::iterator result;
72 result = std::begin(dest);
77 dest.insert(std::end(dest), std::cbegin(source), std::cend(source));
96 typename std::vector<T>::iterator
append(
97 std::vector<T> &dest, std::vector<T> &&source)
99 typename std::vector<T>::iterator result;
103 dest = std::move(source);
104 result = std::begin(dest);
108 result = dest.insert(
110 std::make_move_iterator(std::begin(source)),
111 std::make_move_iterator(std::end(source)));
115 source.shrink_to_fit();
128 std::string
str(
const T &
object)
130 std::ostringstream oss;
144 template <
class ByteType,
class T>
147 std::array<ByteType, sizeof(T)> n;
150 for (
auto i : boost::irange(static_cast<size_t>(0),
sizeof(T)))
152 n[i] = (number >> i * 8) & 0xFF;
168 std::ostream &operator<<(std::ostream &os, const std::vector<T> &vector)
172 if (vector.size() > 0)
174 auto it = vector.begin();
177 for (; it != vector.end(); ++it)
188 #endif // UTILITY_HPP_ std::string str(const T &object)
std::string to_lower(std::string string)
std::array< ByteType, sizeof(T)> to_bytes(T number)
std::vector< T >::iterator append(std::vector< T > &dest, const std::vector< T > &source)