11 #ifndef BOOST_PROPERTY_TREE_STRING_PATH_HPP_INCLUDED
12 #define BOOST_PROPERTY_TREE_STRING_PATH_HPP_INCLUDED
28 namespace boost {
namespace property_tree
32 template <
typename Sequence,
typename Iterator>
34 Iterator &, std::forward_iterator_tag)
38 s.insert(
s.end(), r.begin(), r.end());
40 template <
typename Sequence,
typename Iterator>
43 std::random_access_iterator_tag)
46 typename std::iterator_traits<Iterator>::difference_type idx =
48 s.insert(
s.end(), r.begin(), r.end());
52 template <
typename Sequence>
55 return "<undumpable sequence>";
61 #ifndef BOOST_NO_STD_WSTRING
64 return narrow<std::string>(
s.c_str());
81 template <
typename String,
typename Translator>
85 typename Translator::internal_type>::value));
87 typedef typename Translator::external_type
key_type;
99 Translator tr = Translator());
110 Translator tr = Translator());
141 &&
"Incompatible paths.");
147 sub.insert(sub.end(), o.cstart(), o.m_value.end());
149 typename std::iterator_traits<s_iter>::iterator_category());
155 typedef typename String::iterator
s_iter;
164 template <
typename String,
typename Translator>
inline
166 : m_separator(separator), m_start(m_value.
begin())
169 template <
typename String,
typename Translator>
inline
173 : m_value(value), m_separator(separator),
174 m_tr(tr), m_start(m_value.
begin())
177 template <
typename String,
typename Translator>
inline
181 : m_value(value), m_separator(separator),
182 m_tr(tr), m_start(m_value.
begin())
185 template <
typename String,
typename Translator>
inline
187 : m_value(o.m_value), m_separator(o.m_separator),
188 m_tr(o.m_tr), m_start(m_value.
begin())
190 std::advance(
m_start, std::distance(o.m_value.begin(), o.cstart()));
193 template <
typename String,
typename Translator>
inline
198 m_separator = o.m_separator;
200 m_start = m_value.begin();
201 std::advance(m_start, std::distance(o.m_value.begin(), o.cstart()));
205 template <
typename String,
typename Translator>
210 s_iter next_sep = std::find(m_start, m_value.end(), m_separator);
211 String part(m_start, next_sep);
224 template <
typename String,
typename Translator>
inline
227 return m_start == m_value.end();
230 template <
typename String,
typename Translator>
inline
233 return std::find(
static_cast<s_c_iter>(m_start),
234 m_value.end(), m_separator)
240 template <
typename Ch,
typename Traits,
typename Alloc>
243 typedef std::basic_string<Ch, Traits, Alloc>
_string;
247 template <
typename String,
typename Translator>
inline
257 template <
typename String,
typename Translator>
inline
260 const typename String::value_type *p2)
266 template <
typename String,
typename Translator>
inline
268 const typename String::value_type *p1,