123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357 |
- #ifndef JSON_WRITER_H_INCLUDED
- #define JSON_WRITER_H_INCLUDED
- #if !defined(JSON_IS_AMALGAMATION)
- #include "value.h"
- #endif
- #include <vector>
- #include <string>
- #include <ostream>
- #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING) && defined(_MSC_VER)
- #pragma warning(push)
- #pragma warning(disable : 4251)
- #endif
- #pragma pack(push, 8)
- namespace Json {
- class Value;
- class JSON_API StreamWriter {
- protected:
- JSONCPP_OSTREAM* sout_;
- public:
- StreamWriter();
- virtual ~StreamWriter();
-
- virtual int write(Value const& root, JSONCPP_OSTREAM* sout) = 0;
-
- class JSON_API Factory {
- public:
- virtual ~Factory();
-
- virtual StreamWriter* newStreamWriter() const = 0;
- };
- };
- JSONCPP_STRING JSON_API writeString(StreamWriter::Factory const& factory, Value const& root);
- class JSON_API StreamWriterBuilder : public StreamWriter::Factory {
- public:
-
-
-
- Json::Value settings_;
- StreamWriterBuilder();
- ~StreamWriterBuilder() JSONCPP_OVERRIDE;
-
- StreamWriter* newStreamWriter() const JSONCPP_OVERRIDE;
-
- bool validate(Json::Value* invalid) const;
-
- Value& operator[](JSONCPP_STRING key);
-
- static void setDefaults(Json::Value* settings);
- };
- class JSONCPP_DEPRECATED("Use StreamWriter instead") JSON_API Writer {
- public:
- virtual ~Writer();
- virtual JSONCPP_STRING write(const Value& root) = 0;
- };
- #if defined(_MSC_VER)
- #pragma warning(push)
- #pragma warning(disable:4996)
- #endif
- class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API FastWriter : public Writer {
- public:
- FastWriter();
- ~FastWriter() JSONCPP_OVERRIDE {}
- void enableYAMLCompatibility();
-
- void dropNullPlaceholders();
- void omitEndingLineFeed();
- public:
- JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE;
- private:
- void writeValue(const Value& value);
- JSONCPP_STRING document_;
- bool yamlCompatibilityEnabled_;
- bool dropNullPlaceholders_;
- bool omitEndingLineFeed_;
- };
- #if defined(_MSC_VER)
- #pragma warning(pop)
- #endif
- #if defined(_MSC_VER)
- #pragma warning(push)
- #pragma warning(disable:4996)
- #endif
- class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API StyledWriter : public Writer {
- public:
- StyledWriter();
- ~StyledWriter() JSONCPP_OVERRIDE {}
- public:
-
- JSONCPP_STRING write(const Value& root) JSONCPP_OVERRIDE;
- private:
- void writeValue(const Value& value);
- void writeArrayValue(const Value& value);
- bool isMultilineArray(const Value& value);
- void pushValue(const JSONCPP_STRING& value);
- void writeIndent();
- void writeWithIndent(const JSONCPP_STRING& value);
- void indent();
- void unindent();
- void writeCommentBeforeValue(const Value& root);
- void writeCommentAfterValueOnSameLine(const Value& root);
- bool hasCommentForValue(const Value& value);
- static JSONCPP_STRING normalizeEOL(const JSONCPP_STRING& text);
- typedef std::vector<JSONCPP_STRING> ChildValues;
- ChildValues childValues_;
- JSONCPP_STRING document_;
- JSONCPP_STRING indentString_;
- unsigned int rightMargin_;
- unsigned int indentSize_;
- bool addChildValues_;
- };
- #if defined(_MSC_VER)
- #pragma warning(pop)
- #endif
- #if defined(_MSC_VER)
- #pragma warning(push)
- #pragma warning(disable:4996)
- #endif
- class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API StyledStreamWriter {
- public:
- StyledStreamWriter(JSONCPP_STRING indentation = "\t");
- ~StyledStreamWriter() {}
- public:
-
- void write(JSONCPP_OSTREAM& out, const Value& root);
- private:
- void writeValue(const Value& value);
- void writeArrayValue(const Value& value);
- bool isMultilineArray(const Value& value);
- void pushValue(const JSONCPP_STRING& value);
- void writeIndent();
- void writeWithIndent(const JSONCPP_STRING& value);
- void indent();
- void unindent();
- void writeCommentBeforeValue(const Value& root);
- void writeCommentAfterValueOnSameLine(const Value& root);
- bool hasCommentForValue(const Value& value);
- static JSONCPP_STRING normalizeEOL(const JSONCPP_STRING& text);
- typedef std::vector<JSONCPP_STRING> ChildValues;
- ChildValues childValues_;
- JSONCPP_OSTREAM* document_;
- JSONCPP_STRING indentString_;
- unsigned int rightMargin_;
- JSONCPP_STRING indentation_;
- bool addChildValues_ : 1;
- bool indented_ : 1;
- };
- #if defined(_MSC_VER)
- #pragma warning(pop)
- #endif
- #if defined(JSON_HAS_INT64)
- JSONCPP_STRING JSON_API valueToString(Int value);
- JSONCPP_STRING JSON_API valueToString(UInt value);
- #endif
- JSONCPP_STRING JSON_API valueToString(LargestInt value);
- JSONCPP_STRING JSON_API valueToString(LargestUInt value);
- JSONCPP_STRING JSON_API valueToString(double value);
- JSONCPP_STRING JSON_API valueToString(bool value);
- JSONCPP_STRING JSON_API valueToQuotedString(const char* value);
- JSON_API JSONCPP_OSTREAM& operator<<(JSONCPP_OSTREAM&, const Value& root);
- }
- #pragma pack(pop)
- #if defined(JSONCPP_DISABLE_DLL_INTERFACE_WARNING)
- #pragma warning(pop)
- #endif
- #endif
|