diff options
| author | Oskari Timperi <oskari.timperi@iki.fi> | 2011-05-24 21:37:28 +0300 |
|---|---|---|
| committer | Oskari Timperi <oskari.timperi@iki.fi> | 2011-05-24 21:37:28 +0300 |
| commit | da95699c98034720e823f318cb724088fd09d8a9 (patch) | |
| tree | cbc89555067539e1bbcc37b06f40780461ad43f5 /sxml.h | |
| download | sxml-da95699c98034720e823f318cb724088fd09d8a9.tar.gz sxml-da95699c98034720e823f318cb724088fd09d8a9.zip | |
Initial commit
Diffstat (limited to 'sxml.h')
| -rw-r--r-- | sxml.h | 91 |
1 files changed, 91 insertions, 0 deletions
@@ -0,0 +1,91 @@ +/* + * 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 <string> +#include <map> +#include <vector> + +namespace sxml { + +class element; + +typedef std::vector<element> element_list; +typedef std::map<std::string, std::string> 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 + |
