Clarified some copy/assignment issues with the stream/streamcharsource.

This commit is contained in:
Jesse Beder
2009-07-10 03:20:16 +00:00
parent 6f44e89b7f
commit b113c37819
2 changed files with 8 additions and 6 deletions

View File

@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "noncopyable.h"
#include <deque> #include <deque>
#include <ios> #include <ios>
#include <string> #include <string>
@@ -10,7 +11,7 @@ namespace YAML
{ {
static const size_t MAX_PARSER_PUSHBACK = 8; static const size_t MAX_PARSER_PUSHBACK = 8;
class Stream class Stream: private noncopyable
{ {
public: public:
friend class StreamCharSource; friend class StreamCharSource;

View File

@@ -1,5 +1,6 @@
#pragma once #pragma once
#include "noncopyable.h"
#include <cstddef> #include <cstddef>
namespace YAML namespace YAML
@@ -7,9 +8,10 @@ namespace YAML
class StreamCharSource class StreamCharSource
{ {
public: public:
StreamCharSource(const Stream& stream); StreamCharSource(const Stream& stream): m_offset(0), m_stream(stream) {}
StreamCharSource(const StreamCharSource& source): m_offset(source.m_offset), m_stream(source.m_stream) {}
~StreamCharSource() {} ~StreamCharSource() {}
operator bool() const; operator bool() const;
char operator [] (std::size_t i) const { return m_stream.CharAt(m_offset + i); } char operator [] (std::size_t i) const { return m_stream.CharAt(m_offset + i); }
bool operator !() const { return !static_cast<bool>(*this); } bool operator !() const { return !static_cast<bool>(*this); }
@@ -19,11 +21,10 @@ namespace YAML
private: private:
std::size_t m_offset; std::size_t m_offset;
const Stream& m_stream; const Stream& m_stream;
StreamCharSource& operator = (const StreamCharSource&); // non-assignable
}; };
inline StreamCharSource::StreamCharSource(const Stream& stream): m_offset(0), m_stream(stream) {
}
inline StreamCharSource::operator bool() const { inline StreamCharSource::operator bool() const {
return m_stream.ReadAheadTo(m_offset); return m_stream.ReadAheadTo(m_offset);
} }