valueevents.cpp 648 Bytes
Newer Older
1
#include "valueevents.h"
Jesse Beder's avatar
Jesse Beder committed
2
#include "yaml-cpp/value.h"
3
4
5
6
7
8
9
10

namespace YAML
{
	ValueEvents::ValueEvents(const Value& value): m_pMemory(value.m_pMemory), m_root(*value.m_pNode)
	{
		Visit(m_root);
	}

Jesse Beder's avatar
Jesse Beder committed
11
	void ValueEvents::Visit(const detail::node& node)
12
13
14
15
16
17
18
	{
		int& refCount = m_refCount[node.ref()];
		refCount++;
		if(refCount > 1)
			return;
		
		if(node.type() == ValueType::Sequence) {
Jesse Beder's avatar
Jesse Beder committed
19
20
			for(detail::const_node_iterator it=node.begin();it!=node.end();++it)
				Visit(**it);
21
		} else if(node.type() == ValueType::Map) {
Jesse Beder's avatar
Jesse Beder committed
22
23
24
25
			for(detail::const_node_iterator it=node.begin();it!=node.end();++it) {
				Visit(*it->first);
				Visit(*it->second);
			}
26
27
28
		}
	}
}