25#ifndef __DCONV_VIEW_HPP__
26#define __DCONV_VIEW_HPP__
35#define likely(x) __builtin_expect((x), 1)
36#define unlikely(x) __builtin_expect((x), 0)
51 explicit constexpr View (
const char * s,
size_t count)
53 , _end (s ? s + count : s)
62 constexpr View (
const char * first,
const char * last)
72 explicit View (
const char * s)
74 , _end (s ? s + std::char_traits <char>::length (s) : s)
113 inline int peek () const noexcept
117 return static_cast <unsigned char> (*_pos);
119 return std::char_traits <char>::eof ();
126 inline int get () noexcept
130 return static_cast <unsigned char> (*_pos++);
132 return std::char_traits <char>::eof ();
140 inline bool getIf (
char expected)
noexcept
142 if (
likely (_pos < _end) && (*_pos == expected))
159 const char c = *_pos;
160 if ((c | 32) == (expected | 32))
173 inline const char *
data () const noexcept
182 inline size_t size () const noexcept
189 const char * _pos =
nullptr;
192 const char * _end =
nullptr;
char array view.
Definition view.hpp:44
View & operator=(const View &other) noexcept=default
copy assignment.
View(const View &other) noexcept=default
copy constructor.
int peek() const noexcept
get character without extracting it.
Definition view.hpp:113
View(const char *s)
default constructor.
Definition view.hpp:72
bool getIf(char expected) noexcept
extracts expected character (case sensitive).
Definition view.hpp:140
const char * data() const noexcept
returns a pointer to the first character of a view.
Definition view.hpp:173
View(View &&other) noexcept=default
move constructor.
View & operator=(View &&other) noexcept=default
move assignment.
constexpr View(const char *s, size_t count)
default constructor.
Definition view.hpp:51
size_t size() const noexcept
returns the number of characters in the view.
Definition view.hpp:182
~View()=default
destroy instance.
constexpr View(const char *first, const char *last)
default constructor.
Definition view.hpp:62
bool getIfNoCase(char expected) noexcept
extracts expected character (case insensitive, ASCII-only).
Definition view.hpp:155
int get() noexcept
extracts character.
Definition view.hpp:126
#define likely(x)
Definition view.hpp:35