63 lines
1.9 KiB
C++
63 lines
1.9 KiB
C++
// ----------------------------------------------------------------------------
|
|
// 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
|