mirror of
https://github.com/jbeder/yaml-cpp.git
synced 2025-09-09 12:41:17 +00:00
Fixed node iterator
This commit is contained in:
@@ -47,9 +47,9 @@ namespace YAML
|
||||
value_type dereference() const {
|
||||
const typename base_type::value_type& v = *this->base();
|
||||
if(v.pNode)
|
||||
return value_type(Value(*v.pNode, m_pMemory));
|
||||
if(v.pKey && v.pValue)
|
||||
return value_type(Value(*v.pKey, m_pMemory), Value(*v.pValue, m_pMemory));
|
||||
return value_type(Value(*v, m_pMemory));
|
||||
if(v.first && v.second)
|
||||
return value_type(Value(*v.first, m_pMemory), Value(*v.second, m_pMemory));
|
||||
return value_type();
|
||||
}
|
||||
|
||||
|
@@ -21,13 +21,17 @@ namespace YAML
|
||||
struct iterator_type { enum value { None, Sequence, Map }; };
|
||||
|
||||
template<typename V>
|
||||
struct node_iterator_value {
|
||||
node_iterator_value(): pNode(0), pKey(0), pValue(0) {}
|
||||
explicit node_iterator_value(V& rhs): pNode(&rhs), pKey(0), pValue(0) {}
|
||||
explicit node_iterator_value(V& key, V& value): pNode(0), pKey(&key), pValue(&value) {}
|
||||
struct node_iterator_value: public std::pair<V*, V*> {
|
||||
typedef std::pair<V*, V*> kv;
|
||||
|
||||
node_iterator_value(): kv(), pNode(0) {}
|
||||
explicit node_iterator_value(V& rhs): kv(), pNode(&rhs) {}
|
||||
explicit node_iterator_value(V& key, V& value): kv(&key, &value), pNode(0) {}
|
||||
|
||||
V& operator *() const { return *pNode; }
|
||||
V& operator ->() const { return *pNode; }
|
||||
|
||||
V *pNode;
|
||||
V *pKey, *pValue;
|
||||
};
|
||||
|
||||
typedef std::vector<node *> node_seq;
|
||||
|
Reference in New Issue
Block a user