Replaced direct emitter writing with an accessor to a C-string

This commit is contained in:
jbeder
2009-05-22 22:21:01 +00:00
parent 3e41edd30e
commit 7dd29ee5db
4 changed files with 11 additions and 16 deletions

View File

@@ -15,8 +15,9 @@ namespace YAML
Emitter(); Emitter();
~Emitter(); ~Emitter();
bool WriteToStream(std::ostream& out) const; // output
bool WriteToFile(const std::string& fileName) const; const char *c_str() const;
unsigned size() const;
// state checking // state checking
bool good() const; bool good() const;

View File

@@ -16,6 +16,7 @@ namespace YAML
unsigned row() const { return m_row; } unsigned row() const { return m_row; }
unsigned col() const { return m_col; } unsigned col() const { return m_col; }
unsigned pos() const { return m_pos; }
private: private:
char *m_buffer; char *m_buffer;

View File

@@ -3,7 +3,6 @@
#include "emitterutils.h" #include "emitterutils.h"
#include "indentation.h" #include "indentation.h"
#include "exceptions.h" #include "exceptions.h"
#include <fstream>
#include <sstream> #include <sstream>
namespace YAML 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 m_stream.str();
return true;
} }
bool Emitter::WriteToFile(const std::string& fileName) const unsigned Emitter::size() const
{ {
std::ofstream fout(fileName.c_str()); return m_stream.pos();
if(!fout)
return false;
return WriteToStream(fout);
} }
// state checking // state checking

View File

@@ -101,16 +101,15 @@ namespace Test
YAML::Emitter out; YAML::Emitter out;
std::string desiredOutput; std::string desiredOutput;
test(out, desiredOutput); test(out, desiredOutput);
std::stringstream output; std::string output = out.c_str();
out.WriteToStream(output);
if(output.str() == desiredOutput) { if(output == desiredOutput) {
std::cout << "Test passed: " << name << "\n"; std::cout << "Test passed: " << name << "\n";
} else { } else {
passed = false; passed = false;
std::cout << "Test failed: " << name << "\n"; std::cout << "Test failed: " << name << "\n";
std::cout << "Output:\n"; std::cout << "Output:\n";
std::cout << output.str() << "<<<\n"; std::cout << output << "<<<\n";
std::cout << "Desired output:\n"; std::cout << "Desired output:\n";
std::cout << desiredOutput << "<<<\n"; std::cout << desiredOutput << "<<<\n";
} }