Go to the documentation of this file.
11 #ifndef BOOST_PROPERTY_TREE_DETAIL_PTREE_IMPLEMENTATION_HPP_INCLUDED
12 #define BOOST_PROPERTY_TREE_DETAIL_PTREE_IMPLEMENTATION_HPP_INCLUDED
20 #if (defined(BOOST_MSVC) && \
21 (_MSC_FULL_VER >= 160000000 && _MSC_FULL_VER < 170000000)) || \
22 (defined(BOOST_INTEL_WIN) && \
23 defined(BOOST_DINKUMWARE_STDLIB))
24 #define BOOST_PROPERTY_TREE_PAIR_BUG
27 namespace boost {
namespace property_tree
29 template <
class K,
class D,
class C>
34 #if defined(BOOST_PROPERTY_TREE_PAIR_BUG)
44 #if defined(BOOST_PROPERTY_TREE_PAIR_BUG)
57 typedef typename base_container::template index<by_name>::type
68 return ch(
s).BOOST_NESTED_TEMPLATE get<by_name>();
71 return ch(
s).BOOST_NESTED_TEMPLATE get<by_name>();
74 template <
class K,
class D,
class C>
76 iterator, typename subs::base_container::iterator, value_type>
94 return const_cast<reference>(*this->base_reference());
97 template <
class K,
class D,
class C>
99 const_iterator, typename subs::base_container::const_iterator>
110 template <
class K,
class D,
class C>
120 template <
class K,
class D,
class C>
134 template <
class K,
class D,
class C>
137 typename subs::by_name_index::iterator,
142 typename subs::by_name_index::iterator,
153 return const_cast<reference>(*this->base_reference());
156 template <
class K,
class D,
class C>
159 typename subs::by_name_index::const_iterator>
178 template<
class K,
class D,
class C>
inline
180 : m_children(new typename
subs::base_container)
184 template<
class K,
class D,
class C>
inline
186 : m_data(
d), m_children(new typename
subs::base_container)
190 template<
class K,
class D,
class C>
inline
192 : m_data(rhs.m_data),
193 m_children(new typename subs::base_container(subs::ch(&rhs)))
197 template<
class K,
class D,
class C>
198 basic_ptree<K, D, C> &
205 template<
class K,
class D,
class C>
208 delete &subs::ch(
this);
211 template<
class K,
class D,
class C>
inline
221 template<
class K,
class D,
class C>
inline
225 return subs::ch(
this).size();
228 template<
class K,
class D,
class C>
inline
232 return subs::ch(
this).max_size();
235 template<
class K,
class D,
class C>
inline
238 return subs::ch(
this).empty();
241 template<
class K,
class D,
class C>
inline
248 template<
class K,
class D,
class C>
inline
252 return const_iterator(subs::ch(
this).
begin());
255 template<
class K,
class D,
class C>
inline
262 template<
class K,
class D,
class C>
inline
266 return const_iterator(subs::ch(
this).
end());
269 template<
class K,
class D,
class C>
inline
276 template<
class K,
class D,
class C>
inline
280 return const_reverse_iterator(this->
end());
283 template<
class K,
class D,
class C>
inline
290 template<
class K,
class D,
class C>
inline
294 return const_reverse_iterator(this->
begin());
297 template<
class K,
class D,
class C>
inline
301 return const_cast<value_type&
>(subs::ch(
this).front());
304 template<
class K,
class D,
class C>
inline
308 return subs::ch(
this).front();
311 template<
class K,
class D,
class C>
inline
315 return const_cast<value_type&
>(subs::ch(
this).back());
318 template<
class K,
class D,
class C>
inline
322 return subs::ch(
this).back();
325 template<
class K,
class D,
class C>
inline
329 return iterator(subs::ch(
this).insert(where.
base(), value).first);
332 template<
class K,
class D,
class C>
333 template<
class It>
inline
336 subs::ch(
this).insert(where.
base(), first, last);
339 template<
class K,
class D,
class C>
inline
346 template<
class K,
class D,
class C>
inline
353 template<
class K,
class D,
class C>
inline
357 return iterator(subs::ch(
this).push_front(value).first);
360 template<
class K,
class D,
class C>
inline
364 return iterator(subs::ch(
this).push_back(value).first);
367 template<
class K,
class D,
class C>
inline
370 subs::ch(
this).pop_front();
373 template<
class K,
class D,
class C>
inline
376 subs::ch(
this).pop_back();
379 template<
class K,
class D,
class C>
inline
382 subs::ch(
this).reverse();
389 template <
typename P>
391 return lhs.first < rhs.first;
395 template <
typename C>
398 template <
typename P>
401 return !c(lhs.first, rhs.first) &&
402 !c(rhs.first, lhs.first) &&
403 lhs.second == rhs.second;
407 template <
typename C,
typename MI>
410 return std::equal(ch1.begin(), ch1.end(),
415 template<
class K,
class D,
class C>
inline
421 template<
class K,
class D,
class C>
422 template<
class Compare>
inline
425 subs::ch(
this).sort(comp);
430 template<
class K,
class D,
class C>
inline
436 impl::equal_children<C>(subs::ch(
this), subs::ch(&rhs));
439 template<
class K,
class D,
class C>
inline
443 return !(*
this == rhs);
448 template<
class K,
class D,
class C>
inline
455 template<
class K,
class D,
class C>
inline
459 return const_assoc_iterator(subs::assoc(
this).
begin());
462 template<
class K,
class D,
class C>
inline
463 typename basic_ptree<K, D, C>::assoc_iterator
469 template<
class K,
class D,
class C>
inline
473 return const_assoc_iterator(subs::assoc(
this).
end());
476 template<
class K,
class D,
class C>
inline
477 typename basic_ptree<K, D, C>::assoc_iterator
483 template<
class K,
class D,
class C>
inline
490 template<
class K,
class D,
class C>
inline
496 std::pair<
typename subs::by_name_index::iterator,
497 typename subs::by_name_index::iterator> r(
498 subs::assoc(
this).equal_range(key));
499 return std::pair<assoc_iterator, assoc_iterator>(
503 template<
class K,
class D,
class C>
inline
509 std::pair<
typename subs::by_name_index::const_iterator,
510 typename subs::by_name_index::const_iterator> r(
511 subs::assoc(
this).equal_range(key));
512 return std::pair<const_assoc_iterator, const_assoc_iterator>(
516 template<
class K,
class D,
class C>
inline
520 return subs::assoc(
this).count(key);
523 template<
class K,
class D,
class C>
inline
527 return subs::assoc(
this).erase(key);
530 template<
class K,
class D,
class C>
inline
538 template<
class K,
class D,
class C>
inline
548 template<
class K,
class D,
class C>
inline
555 template<
class K,
class D,
class C>
inline
562 template<
class K,
class D,
class C>
inline
566 subs::ch(
this).clear();
569 template<
class K,
class D,
class C>
581 template<
class K,
class D,
class C>
inline
588 template<
class K,
class D,
class C>
inline
598 template<
class K,
class D,
class C>
inline
608 template<
class K,
class D,
class C>
620 template<
class K,
class D,
class C>
632 template<
class K,
class D,
class C>
644 return el->second = value;
650 template<
class K,
class D,
class C>
662 template<
class K,
class D,
class C>
663 template<
class Type,
class Translator>
671 std::string(
"conversion of data to type \"") +
672 typeid(Type).name() +
"\" failed",
data()));
675 template<
class K,
class D,
class C>
676 template<
class Type>
inline
679 return get_value<Type>(
683 template<
class K,
class D,
class C>
684 template<
class Type,
class Translator>
inline
688 return get_value_optional<Type>(tr).get_value_or(
default_value);
691 template<
class K,
class D,
class C>
692 template <
class Ch,
class Translator>
695 std::basic_string<Ch>
699 return get_value<std::basic_string<Ch>, Translator>(
default_value, tr);
702 template<
class K,
class D,
class C>
703 template<
class Type>
inline
711 template<
class K,
class D,
class C>
715 std::basic_string<Ch>
722 template<
class K,
class D,
class C>
723 template<
class Type,
class Translator>
inline
727 return tr.get_value(
data());
730 template<
class K,
class D,
class C>
731 template<
class Type>
inline
734 return get_value_optional<Type>(
738 template<
class K,
class D,
class C>
739 template<
class Type,
class Translator>
inline
744 return get_child(
path).BOOST_NESTED_TEMPLATE get_value<Type>(tr);
747 template<
class K,
class D,
class C>
748 template<
class Type>
inline
751 return get_child(
path).BOOST_NESTED_TEMPLATE get_value<Type>();
754 template<
class K,
class D,
class C>
755 template<
class Type,
class Translator>
inline
757 const Type &default_value,
763 template<
class K,
class D,
class C>
764 template <
class Ch,
class Translator>
767 std::basic_string<Ch>
775 template<
class K,
class D,
class C>
776 template<
class Type>
inline
779 const Type &default_value)
const
784 template<
class K,
class D,
class C>
788 std::basic_string<Ch>
796 template<
class K,
class D,
class C>
797 template<
class Type,
class Translator>
808 template<
class K,
class D,
class C>
814 return child.get().BOOST_NESTED_TEMPLATE get_value_optional<Type>();
819 template<
class K,
class D,
class C>
820 template<
class Type,
class Translator>
827 std::string(
"conversion of type \"") +
typeid(Type).name() +
832 template<
class K,
class D,
class C>
833 template<
class Type>
inline
839 template<
class K,
class D,
class C>
840 template<
class Type,
typename Translator>
845 child.
get().put_value(value, tr);
854 template<
class K,
class D,
class C>
855 template<
class Type>
inline
859 return put(
path, value,
863 template<
class K,
class D,
class C>
864 template<
class Type,
typename Translator>
inline
873 template<
class K,
class D,
class C>
874 template<
class Type>
inline
883 template<
class K,
class D,
class C>
894 if(el == not_found()) {
899 return el->second.walk_path(p);
902 template<
class K,
class D,
class C>
905 BOOST_ASSERT(!p.empty() &&
"Empty path not allowed for put_child.");
921 template<
class K,
class D,
class C>
929 #if defined(BOOST_PROPERTY_TREE_PAIR_BUG)
930 #undef BOOST_PROPERTY_TREE_PAIR_BUG
const_iterator(typename const_iterator::base_type b)
iterator to_iterator(assoc_iterator it)
bool equal_children(const MI &ch1, const MI &ch2)
#define BOOST_STATIC_CONSTANT(type, assignment)
boost::enable_if< detail::is_translator< Translator >, Type >::type get(const path_type &path, Translator tr) const
void swap(any &lhs, any &rhs) BOOST_NOEXCEPT
optional< Type > get_value_optional() const
boost::iterator_adaptor< assoc_iterator, typename subs::by_name_index::iterator, value_type > baset
bool operator()(const P &lhs, const P &rhs) const
static const by_name_index & assoc(const self_type *s)
string_path< std::string, id_translator< std::string > > path
size_type max_size() const
self_type * walk_path(path_type &p) const
friend class reverse_iterator
reverse_iterator(iterator b)
optional< Type > get_optional(const path_type &path, Translator tr) const
const_assoc_iterator(assoc_iterator b)
static by_name_index & assoc(self_type *s)
reference dereference() const
BOOST_MOVE_USE_STANDARD_LIBRARY_MOVE.
std::pair< assoc_iterator, assoc_iterator > equal_range(const key_type &key)
iterator erase(iterator where)
iterator push_back(const value_type &value)
optional< self_type & > get_child_optional(const path_type &path)
base_container::template index< by_name >::type by_name_index
const_assoc_iterator(typename const_assoc_iterator::base_type b)
auto_any< BOOST_DEDUCED_TYPENAME foreach_iterator< T, C >::type > begin(auto_any_t col, type2type< T, C > *, boost::mpl::true_ *)
assoc_iterator not_found()
size_type count(const key_type &key) const
iterator(typename iterator::base_type b)
auto_any< BOOST_DEDUCED_TYPENAME foreach_iterator< T, C >::type > end(auto_any_t col, type2type< T, C > *, boost::mpl::true_ *)
path_of< Key >::type path_type
const_iterator(iterator b)
self_type & put(const path_type &path, const Type &value, Translator tr)
#define BOOST_ASSERT(expr)
self_type & force_path(path_type &p)
assoc_iterator ordered_begin()
assoc_iterator(typename assoc_iterator::base_type b)
#define BOOST_PROPERTY_TREE_THROW(e)
bool operator!=(const self_type &rhs) const
void swap(self_type &rhs)
boost::iterator_adaptor< iterator, typename subs::base_container::iterator, value_type > baset
iterator insert(iterator where, const value_type &value)
self_type & operator=(const self_type &rhs)
const_reverse_iterator(const_iterator b)
reference dereference() const
self_type & put_child(const path_type &path, const self_type &value)
#define BOOST_NESTED_TEMPLATE
void swap(basic_ptree< K, D, C > &pt1, basic_ptree< K, D, C > &pt2)
baset::reference reference
bool add(const actionlib::TwoIntsGoal &req, actionlib::TwoIntsResult &res)
self_type & add_child(const path_type &path, const self_type &value)
baset::reference reference
Base const & base() const
const_reverse_iterator(typename basic_ptree< K, D, C >::reverse_iterator b)
static const base_container & ch(const self_type *s)
multi_index_container< value_type, multi_index::indexed_by< multi_index::sequenced<>, multi_index::ordered_non_unique< multi_index::tag< by_name >, multi_index::member< value_type, const key_type, &value_type::first >, key_compare > > > base_container
std::pair< const Key, self_type > value_type
iterator push_front(const value_type &value)
self_type & get_child(const path_type &path)
void put_value(const Type &value, Translator tr)
static base_container & ch(self_type *s)
bool operator==(const self_type &rhs) const
bool operator()(const P &lhs, const P &rhs) const
assoc_iterator find(const key_type &key)
self_type & add(const path_type &path, const Type &value, Translator tr)
reverse_iterator rbegin()
sick_visionary_ros
Author(s): SICK AG TechSupport 3D Snapshot
autogenerated on Thu Feb 8 2024 03:45:47