1 #ifndef VALUE_DETAIL_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 2 #define VALUE_DETAIL_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 4 #if defined(_MSC_VER) || \ 5 (defined(__GNUC__) && (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) || \ 6 (__GNUC__ >= 4)) // GCC supports "pragma once" correctly since 3.4 10 #include "yaml-cpp/dll.h" 11 #include "yaml-cpp/node/detail/node_iterator.h" 12 #include "yaml-cpp/node/node.h" 13 #include "yaml-cpp/node/ptr.h" 20 struct iterator_value;
32 explicit proxy(
const V& x) : m_ref(x) {}
33 V* operator->() {
return std::addressof(m_ref); }
34 operator V*() {
return std::addressof(m_ref); }
40 using iterator_category = std::forward_iterator_tag;
42 using difference_type = std::ptrdiff_t;
49 : m_iterator(rhs), m_pMemory(pMemory) {}
53 typename std::enable_if<std::is_convertible<W*, V*>::value,
54 enabler>::type = enabler())
55 : m_iterator(rhs.m_iterator), m_pMemory(rhs.m_pMemory) {}
70 return m_iterator == rhs.m_iterator;
75 return m_iterator != rhs.m_iterator;
78 value_type operator*()
const {
81 return value_type(
Node(*v, m_pMemory));
82 if (v.first && v.second)
83 return value_type(
Node(*v.first, m_pMemory),
Node(*v.second, m_pMemory));
87 proxy operator->()
const {
return proxy(**
this); }
91 shared_memory_holder m_pMemory;
96 #endif // VALUE_DETAIL_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 Definition: node_iterator.h:26
Definition: node_iterator.h:55
Definition: iterator.h:23