//////////////////////////////////////////////////////////////////////// // Copyright (c) Nehmulos 2011-2014 // This file is part of N0 Strain Serialization Library. // // N0Strain-Serialization-Library is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // N0Strain-Serialization-Library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with N0Strain-Serialization-Library. If not, see https://gnu.org/licenses/lgpl-3.0 //////////////////////////////////////////////////////////////////////// #pragma once #include "Tag.h" namespace nw { namespace JsonType { enum Enum { Invalid = 0, String = 1, Number = 2, Boolean = 3, Array = 4, Object = 5 }; } class JsonTag: public nw::Tag { public: JsonTag(); JsonTag(const String tagName); virtual ~JsonTag(); // overwrite for push(String) Tag* addNewChild(String tagName); Tag* addJsonChild(const String childName, JsonType::Enum type = JsonType::Invalid, String stringValue = ""); void setType(JsonType::Enum type); void writeAsJson(std::ostream& file); ///< Writes the current Tag it's children and a root node into an fstream private: JsonType::Enum valueType; inline void writeJsonTag(std::ostream& file, bool trailingComma); }; }