1 // ---------------------------------------------------------------------------- 2 // Copyright (C) 2002-2007 Marcin Kalicinski 3 // Copyright (C) 2007 Alexey Baskakov 4 // 5 // Distributed under the Boost Software License, Version 1.0. 6 // (See accompanying file LICENSE_1_0.txt or copy at 7 // http://www.boost.org/LICENSE_1_0.txt) 8 // 9 // For more information, see www.boost.org 10 // ---------------------------------------------------------------------------- 11 #ifndef BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED 12 #define BOOST_PROPERTY_TREE_DETAIL_XML_PARSER_WRITER_SETTINGS_HPP_INCLUDED 13 14 #include <string> 15 #include <boost/property_tree/detail/ptree_utils.hpp> 16 17 namespace boost { namespace property_tree { namespace xml_parser 18 { 19 20 // Naively convert narrow string to another character type 21 template<class Str> widen(const char * text)22 Str widen(const char *text) 23 { 24 typedef typename Str::value_type Ch; 25 Str result; 26 while (*text) 27 { 28 result += Ch(*text); 29 ++text; 30 } 31 return result; 32 } 33 34 //! Xml writer settings. The default settings lead to no pretty printing. 35 template<class Str> 36 class xml_writer_settings 37 { 38 typedef typename Str::value_type Ch; 39 public: xml_writer_settings(Ch inchar=Ch (' '),typename Str::size_type incount=0,const Str & enc=widen<Str> ("utf-8"))40 xml_writer_settings(Ch inchar = Ch(' '), 41 typename Str::size_type incount = 0, 42 const Str &enc = widen<Str>("utf-8")) 43 : indent_char(inchar) 44 , indent_count(incount) 45 , encoding(enc) 46 { 47 } 48 49 Ch indent_char; 50 typename Str::size_type indent_count; 51 Str encoding; 52 }; 53 54 template <class Str> xml_writer_make_settings(typename Str::value_type indent_char=(typename Str::value_type)(' '),typename Str::size_type indent_count=0,const Str & encoding=widen<Str> ("utf-8"))55 xml_writer_settings<Str> xml_writer_make_settings(typename Str::value_type indent_char = (typename Str::value_type)(' '), 56 typename Str::size_type indent_count = 0, 57 const Str &encoding = widen<Str>("utf-8")) 58 { 59 return xml_writer_settings<Str>(indent_char, indent_count, encoding); 60 } 61 62 } } } 63 64 #endif 65