| // ---------------------------------------------------------------------------- |
| // Copyright (C) 2002-2007 Marcin Kalicinski |
| // Copyright (C) 2007 Alexey Baskakov |
| // |
| // 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) |
| // |
| // For more information, see www.boost.org |
| // ---------------------------------------------------------------------------- |
| #ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED |
| #define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED |
| |
| #include <string> |
| #include <boost/property_tree/detail/ptree_utils.hpp> |
| |
| namespace boost { namespace property_tree { namespace xml_parser |
| { |
| |
| // Naively convert narrow string to another character type |
| template<class Ch> |
| std::basic_string<Ch> widen(const char *text) |
| { |
| std::basic_string<Ch> result; |
| while (*text) |
| { |
| result += Ch(*text); |
| ++text; |
| } |
| return result; |
| } |
| |
| //! Xml writer settings. The default settings lead to no pretty printing. |
| template<class Ch> |
| class xml_writer_settings |
| { |
| public: |
| xml_writer_settings(Ch inchar = Ch(' '), |
| typename std::basic_string<Ch>::size_type incount = 0, |
| const std::basic_string<Ch> &enc = widen<Ch>("utf-8")) |
| : indent_char(inchar) |
| , indent_count(incount) |
| , encoding(enc) |
| { |
| } |
| |
| Ch indent_char; |
| typename std::basic_string<Ch>::size_type indent_count; |
| std::basic_string<Ch> encoding; |
| }; |
| |
| template <class Ch> |
| xml_writer_settings<Ch> xml_writer_make_settings(Ch indent_char = Ch(' '), |
| typename std::basic_string<Ch>::size_type indent_count = 0, |
| const std::basic_string<Ch> &encoding = widen<Ch>("utf-8")) |
| { |
| return xml_writer_settings<Ch>(indent_char, indent_count, encoding); |
| } |
| |
| } } } |
| |
| #endif |