Renamed ostream -> ostream_wrapper

This commit is contained in:
Jesse Beder
2012-05-25 17:28:35 -05:00
parent 2dd1cf4596
commit 1602f78974
6 changed files with 47 additions and 47 deletions

64
src/ostream_wrapper.cpp Normal file
View File

@@ -0,0 +1,64 @@
#include "yaml-cpp/ostream_wrapper.h"
#include <cstring>
namespace YAML
{
ostream_wrapper::ostream_wrapper(): m_buffer(0), m_pos(0), m_size(0), m_row(0), m_col(0), m_comment(false)
{
reserve(1024);
}
ostream_wrapper::~ostream_wrapper()
{
delete [] m_buffer;
}
void ostream_wrapper::reserve(unsigned size)
{
if(size <= m_size)
return;
char *newBuffer = new char[size];
std::memset(newBuffer, 0, size * sizeof(char));
std::memcpy(newBuffer, m_buffer, m_size * sizeof(char));
delete [] m_buffer;
m_buffer = newBuffer;
m_size = size;
}
void ostream_wrapper::put(char ch)
{
if(m_pos >= m_size - 1) // an extra space for the NULL terminator
reserve(m_size * 2);
m_buffer[m_pos] = ch;
m_pos++;
if(ch == '\n') {
m_row++;
m_col = 0;
m_comment = false;
} else
m_col++;
}
ostream_wrapper& operator << (ostream_wrapper& out, const char *str)
{
std::size_t length = std::strlen(str);
for(std::size_t i=0;i<length;i++)
out.put(str[i]);
return out;
}
ostream_wrapper& operator << (ostream_wrapper& out, const std::string& str)
{
out << str.c_str();
return out;
}
ostream_wrapper& operator << (ostream_wrapper& out, char ch)
{
out.put(ch);
return out;
}
}