/* * This file is part of sxml - stupid XML generator * * Copyright (c) 2011 Oskari Timperi * * This software is provided 'as-is', without any express or implied * warranty. In no event will the authors be held liable for any damages * arising from the use of this software. * * Permission is granted to anyone to use this software for any purpose, * including commercial applications, and to alter it and redistribute * it freely, subject to the following restrictions: * * 1. The origin of this software must not be misrepresented; you must * not claim that you wrote the original software. If you use this * software in a product, an acknowledgment in the product documentation * would be appreciated but is not required. * * 2. Altered source versions must be plainly marked as such, and must * not be misrepresented as being the original software. * * 3. This notice may not be removed or altered from any source * distribution. */ #ifndef SXML_H #define SXML_H #include #include #include namespace sxml { class element; typedef std::vector element_list; typedef std::map attribute_map; class element { public: //! Constructs an empty element (i.e., no name, //! children, attributes). element(); //! Copy constructor. element(const element &elem); //! Construcst an element with the specified name and text. element(const std::string &name, const std::string &text = std::string()); //! Creates a textual representation of the element. If nice //! is true, the returned string is formatted with indentations //! and newlines. std::string to_string(bool nice = false, int indent = 0) const; //! Adds a child element to this element. element &add_child(const element &child); //! Set the text for this element. An element can either have text //! or children. If an element has both, children take precedence //! when calling to_string(). element &set_text(const std::string &text); //! Set an attribute for this element with the specified name and //! value. element &set_attr(const std::string &name, const std::string &value); //! This is an overloaded function. element &set_attr(const std::string &name, long value); //! This is an overloaded function. element &set_attr(const std::string &name, double value); private: element_list m_children; attribute_map m_attributes; std::string m_name; std::string m_text; }; } // namespace sxml #endif // SXML_H