/* * Copyright © 2007 Pippijn van Steenhoven / The Ermyth Team * Rights to this code are as documented in doc/pod/license.pod. * * JSON-RPC for Ermyth * * $Id: writer.h,v 1.3 2007/09/05 11:23:15 pippijn Exp $ */ //>>>>>>>>>>> writer.h <<<<<<<<<< #include #include #include "json/value.h" namespace json { class Value; class Writer { public: virtual ~Writer (); virtual std::string write (const Value &root) = 0; }; class FastWriter : public Writer { public: FastWriter (); void enableYAMLCompatibility (); public: virtual std::string write (const Value &root); private: void writeValue (const Value &value); std::string document_; bool yamlCompatiblityEnabled_; }; class StyledWriter { public: StyledWriter (); virtual ~StyledWriter () { } public: virtual std::string write (const Value &root); private: void writeValue (const Value &value); void writeArrayValue (const Value &value); bool isMultineArray (const Value &value); void pushValue (const std::string &value); void writeIndent (); void writeWithIndent (const std::string &value); void indent (); void unindent (); void writeCommentBeforeValue (const Value &root); void writeCommentAfterValueOnSameLine (const Value &root); bool hasCommentForValue (const Value &value); static std::string normalizeEOL (const std::string &text); typedef std::vector ChildValues; ChildValues childValues_; std::string document_; std::string indentString_; int rightMargin_; int indentSize_; bool addChildValues_; }; std::string valueToString (int value); std::string valueToString (unsigned value); std::string valueToString (double value); std::string valueToString (bool value); std::string valueToQuotedString (char const *value); std::ostream& operator << (std::ostream&, const Value &root); } // namespace json #endif // WRITER_H