From 7dd29ee5db996aede930659a027f866bcc300e0a Mon Sep 17 00:00:00 2001 From: jbeder Date: Fri, 22 May 2009 22:21:01 +0000 Subject: [PATCH] Replaced direct emitter writing with an accessor to a C-string --- include/emitter.h | 5 +++-- include/ostream.h | 1 + src/emitter.cpp | 14 ++++---------- yaml-reader/tests.cpp | 7 +++---- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/include/emitter.h b/include/emitter.h index 92d9993..dce2666 100644 --- a/include/emitter.h +++ b/include/emitter.h @@ -15,8 +15,9 @@ namespace YAML Emitter(); ~Emitter(); - bool WriteToStream(std::ostream& out) const; - bool WriteToFile(const std::string& fileName) const; + // output + const char *c_str() const; + unsigned size() const; // state checking bool good() const; diff --git a/include/ostream.h b/include/ostream.h index 5051576..4936c44 100644 --- a/include/ostream.h +++ b/include/ostream.h @@ -16,6 +16,7 @@ namespace YAML unsigned row() const { return m_row; } unsigned col() const { return m_col; } + unsigned pos() const { return m_pos; } private: char *m_buffer; diff --git a/src/emitter.cpp b/src/emitter.cpp index 3db240f..15df4e8 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -3,7 +3,6 @@ #include "emitterutils.h" #include "indentation.h" #include "exceptions.h" -#include #include namespace YAML @@ -16,19 +15,14 @@ namespace YAML { } - bool Emitter::WriteToStream(std::ostream& out) const + const char *Emitter::c_str() const { - out << m_stream.str(); - return true; + return m_stream.str(); } - bool Emitter::WriteToFile(const std::string& fileName) const + unsigned Emitter::size() const { - std::ofstream fout(fileName.c_str()); - if(!fout) - return false; - - return WriteToStream(fout); + return m_stream.pos(); } // state checking diff --git a/yaml-reader/tests.cpp b/yaml-reader/tests.cpp index f7f1f5d..f868beb 100644 --- a/yaml-reader/tests.cpp +++ b/yaml-reader/tests.cpp @@ -101,16 +101,15 @@ namespace Test YAML::Emitter out; std::string desiredOutput; test(out, desiredOutput); - std::stringstream output; - out.WriteToStream(output); + std::string output = out.c_str(); - if(output.str() == desiredOutput) { + if(output == desiredOutput) { std::cout << "Test passed: " << name << "\n"; } else { passed = false; std::cout << "Test failed: " << name << "\n"; std::cout << "Output:\n"; - std::cout << output.str() << "<<<\n"; + std::cout << output << "<<<\n"; std::cout << "Desired output:\n"; std::cout << desiredOutput << "<<<\n"; }