// ---------------------------------------------------------------------------- | |
// 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 |