Added constructor to the Emitter with a stream, so you can write directly to a stream instead of our temp

This commit is contained in:
Jesse Beder
2012-05-25 18:22:33 -05:00
parent e6d4a915dc
commit 2ffdc5b4d1
5 changed files with 32 additions and 11 deletions

View File

@@ -25,6 +25,7 @@ namespace YAML
{
public:
Emitter();
explicit Emitter(std::ostream& stream);
~Emitter();
// output
@@ -114,8 +115,8 @@ namespace YAML
bool CanEmitNewline() const;
private:
ostream_wrapper m_stream;
std::auto_ptr<EmitterState> m_pState;
ostream_wrapper m_stream;
};
template <typename T>

View File

@@ -15,6 +15,7 @@ namespace YAML
{
public:
ostream_wrapper();
explicit ostream_wrapper(std::ostream& stream);
~ostream_wrapper();
void write(const std::string& str);
@@ -23,8 +24,12 @@ namespace YAML
void set_comment() { m_comment = true; }
const char *str() const {
m_buffer[m_pos] = NULL;
return &m_buffer[0];
if(m_pStream) {
return NULL;
} else {
m_buffer[m_pos] = NULL;
return &m_buffer[0];
}
}
std::size_t row() const { return m_row; }
@@ -37,6 +42,7 @@ namespace YAML
private:
mutable std::vector<char> m_buffer;
std::ostream *m_pStream;
std::size_t m_pos;
std::size_t m_row, m_col;