38 using hash_type_t = std::size_t;
46 template<hash_type_t N>
48 : str_(str), size_(N - 1) {}
54 constexpr
const char *
c_str()
const {
62 constexpr hash_type_t
size()
const {
71 return i < size_ ? str_[i] :
throw std::out_of_range(
"invalid index");
78 constexpr hash_type_t
hash()
const {
79 return string_hash<hash_type_t>(str_, size_);
83 constexpr
bool equal_(
const const_string_t & t,
const std::size_t i)
const {
84 return i == size_ ? true : (*this)[i] == t[i] && equal_(t, i + 1);
91 return size_ == t.size_ && equal_(t, 0);
101 const char *
const str_;
102 const hash_type_t size_;
137 #define flecsi_internal_string_hash(name) \ 138 ::flecsi::util::const_string_t{name}.hash() 150 #define flecsi_internal_hash(name) \ 151 ::flecsi::util::const_string_t{flecsi_internal_stringify(name)}.hash() Definition: const_string.hh:109
constexpr const char * c_str() const
Definition: const_string.hh:54
constexpr hash_type_t size() const
Definition: const_string.hh:62
constexpr const_string_t(const char(&str)[N])
Definition: const_string.hh:47
constexpr char operator[](const hash_type_t i) const
Definition: const_string.hh:70
Definition: const_string.hh:35
constexpr hash_type_t hash() const
Definition: const_string.hh:78
Definition: control.hh:31