17#ifndef TOOLBOX_UTIL_STRINGBUF_HPP 
   18#define TOOLBOX_UTIL_STRINGBUF_HPP 
   25#include <boost/container_hash/hash.hpp> 
   28inline namespace util {
 
   31template <std::
size_t MaxN>
 
   34    template <std::
size_t MaxR>
 
   67    template <std::
size_t MaxR>
 
   87    template <
typename TypeT>
 
   90        return compare(
rhs.data(), 
rhs.size());
 
 
   92    template <
typename TypeT>
 
   95        return size() == 
rhs.size() && compare(
rhs.data(), 
rhs.size()) == 0;
 
 
  103#pragma GCC diagnostic push 
  104#pragma GCC diagnostic ignored "-Wnonnull" 
  105            std::memcpy(buf_, 
rdata, len_);
 
  106#pragma GCC diagnostic pop 
  117    auto compare(
const char* 
rdata, std::size_t 
rlen) 
const noexcept 
 
  131template <std::
size_t MaxN>
 
  134    return {
s.data(), 
s.size()};
 
 
  137template <std::
size_t MaxN, 
typename StreamT>
 
  141    os << std::string_view{
rhs.data(), 
rhs.size()};
 
 
  149template <std::
size_t MaxN>
 
  150struct hash<
toolbox::util::StringBuf<MaxN>> {
 
  154        boost::hash_combine(h, +key);
 
ostream & operator<<(ostream &os, const pair< T, U > &p)