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->() YAML_ATTRIBUTE_LIFETIME_BOUND {
34 return std::addressof(m_ref);
36 operator V*() YAML_ATTRIBUTE_LIFETIME_BOUND {
37 return std::addressof(m_ref);
44 using iterator_category = std::forward_iterator_tag;
46 using difference_type = std::ptrdiff_t;
53 : m_iterator(rhs), m_pMemory(pMemory) {}
57 typename std::enable_if<std::is_convertible<W*, V*>::value,
58 enabler>::type = enabler())
59 : m_iterator(rhs.m_iterator), m_pMemory(rhs.m_pMemory) {}
74 return m_iterator == rhs.m_iterator;
79 return m_iterator != rhs.m_iterator;
82 value_type operator*()
const YAML_ATTRIBUTE_LIFETIME_BOUND {
85 return value_type(
Node(*v, m_pMemory));
86 if (v.first && v.second)
87 return value_type(
Node(*v.first, m_pMemory),
Node(*v.second, m_pMemory));
91 proxy operator->()
const YAML_ATTRIBUTE_LIFETIME_BOUND {
97 shared_memory_holder m_pMemory;
102 #endif // VALUE_DETAIL_ITERATOR_H_62B23520_7C8E_11DE_8A39_0800200C9A66 Definition: node_iterator.h:26
Definition: node_iterator.h:55
Definition: iterator.h:23