| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- // tiny XML sub-set tools --------------------------------------------------//
- // (C) Copyright Beman Dawes 2002. Distributed under the Boost
- // Software License, Version 1.0. (See accompanying file
- // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- // Provides self-contained tools for this XML sub-set:
- //
- // element ::= { "<" name { name "=" "\"" value "\"" } ">"
- // {element} [contents] "</" name ">" }
- //
- // The point of "self-contained" is to minimize tool-chain dependencies.
- #ifndef BOOST_TINY_XML_H
- #define BOOST_TINY_XML_H
- #include "boost/smart_ptr.hpp" // for shared_ptr
- #include "boost/utility.hpp" // for noncopyable
- #include <list>
- #include <iostream>
- #include <string>
- namespace boost
- {
- namespace tiny_xml
- {
- class element;
- struct attribute
- {
- std::string name;
- std::string value;
- attribute(){}
- attribute( const std::string & name, const std::string & value )
- : name(name), value(value) {}
- };
- typedef boost::shared_ptr< element > element_ptr;
- typedef std::list< element_ptr > element_list;
- typedef std::list< attribute > attribute_list;
- class element
- : private boost::noncopyable // because deep copy sematics would be required
- {
- public:
- std::string name;
- attribute_list attributes;
- element_list elements;
- std::string content;
- element() {}
- explicit element( const std::string & name ) : name(name) {}
- };
- element_ptr parse( std::istream & in, const std::string & msg );
- // Precondition: stream positioned at either the initial "<"
- // or the first character after the initial "<".
- // Postcondition: stream positioned at the first character after final
- // ">" (or eof).
- // Returns: an element_ptr to an element representing the parsed stream.
- // Throws: std::string on syntax error. msg appended to what() string.
- void write( const element & e, std::ostream & out );
- }
- }
- #endif // BOOST_TINY_XML_H
|