summaryrefslogtreecommitdiffstats
path: root/external_libs/yaml-cpp/src/ostream.cpp
diff options
context:
space:
mode:
authorDan Klein <danklei@cisco.com>2015-08-26 15:05:58 +0300
committerDan Klein <danklei@cisco.com>2015-08-26 15:05:58 +0300
commitfc46f2618332037a8c1b58fbce5d616033bff1c9 (patch)
treebdb7ffdb92732438d540ef06622e570a3c60a8f4 /external_libs/yaml-cpp/src/ostream.cpp
parentcecaf28ab61882d323cb5f3d813518523f7e836b (diff)
Rearranged files and external libraries in two different locations, one for cpp (trex-core/external_libs) and one for python (trex-core/scripts/external_libs)
Diffstat (limited to 'external_libs/yaml-cpp/src/ostream.cpp')
-rw-r--r--external_libs/yaml-cpp/src/ostream.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/external_libs/yaml-cpp/src/ostream.cpp b/external_libs/yaml-cpp/src/ostream.cpp
new file mode 100644
index 00000000..a7f1e14b
--- /dev/null
+++ b/external_libs/yaml-cpp/src/ostream.cpp
@@ -0,0 +1,63 @@
+#include "yaml-cpp/ostream.h"
+#include <cstring>
+
+namespace YAML
+{
+ ostream::ostream(): m_buffer(0), m_pos(0), m_size(0), m_row(0), m_col(0)
+ {
+ reserve(1024);
+ }
+
+ ostream::~ostream()
+ {
+ delete [] m_buffer;
+ }
+
+ void ostream::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::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;
+ } else
+ m_col++;
+ }
+
+ ostream& operator << (ostream& 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& operator << (ostream& out, const std::string& str)
+ {
+ out << str.c_str();
+ return out;
+ }
+
+ ostream& operator << (ostream& out, char ch)
+ {
+ out.put(ch);
+ return out;
+ }
+}