mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 20:51:16 +00:00
Merged utf branch changes r178:187 into the trunk
This commit is contained in:
34
src/stringsource.h
Normal file
34
src/stringsource.h
Normal file
@@ -0,0 +1,34 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstddef>
|
||||
|
||||
namespace YAML
|
||||
{
|
||||
class StringCharSource
|
||||
{
|
||||
public:
|
||||
StringCharSource(const char *str, std::size_t size): m_str(str), m_size(size), m_offset(0) {}
|
||||
|
||||
operator bool() const { return m_offset < m_size; }
|
||||
char operator [] (std::size_t i) const { return m_str[m_offset + i]; }
|
||||
bool operator !() const { return !static_cast<bool>(*this); }
|
||||
|
||||
const StringCharSource operator + (int i) const {
|
||||
StringCharSource source(*this);
|
||||
if(static_cast<int> (source.m_offset) + i >= 0)
|
||||
source.m_offset += i;
|
||||
else
|
||||
source.m_offset = 0;
|
||||
return source;
|
||||
}
|
||||
|
||||
StringCharSource& operator ++ () {
|
||||
++m_offset;
|
||||
return *this;
|
||||
}
|
||||
private:
|
||||
const char *m_str;
|
||||
std::size_t m_size;
|
||||
std::size_t m_offset;
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user