1 #ifndef STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 #define STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66 4 #if defined(_MSC_VER) || \ 5 (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 13 class StringCharSource {
15 StringCharSource(
const char* str, std::size_t size)
16 : m_str(str), m_size(size), m_offset(0) {}
18 operator bool()
const {
return m_offset < m_size; }
19 char operator[](std::size_t i)
const {
return m_str[m_offset + i]; }
20 bool operator!()
const {
return !
static_cast<bool>(*this); }
22 const StringCharSource operator+(
int i)
const {
23 StringCharSource source(*
this);
24 if (static_cast<int>(source.m_offset) + i >= 0)
31 StringCharSource& operator++() {
36 StringCharSource& operator+=(std::size_t offset) {
48 #endif // STRINGSOURCE_H_62B23520_7C8E_11DE_8A39_0800200C9A66