"...composable_kernel_rocm.git" did not exist on "e34c2ee30e3bea8b4ed417fa80741b71d8738769"
document.cpp 1.01 KB
Newer Older
beder's avatar
beder committed
1
2
#include "document.h"
#include "node.h"
3
4
#include "token.h"
#include "scanner.h"
5

beder's avatar
beder committed
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
namespace YAML
{
	Document::Document(): m_pRoot(0)
	{
	}

	Document::~Document()
	{
		Clear();
	}

	void Document::Clear()
	{
		delete m_pRoot;
		m_pRoot = 0;
	}
22

23
	void Document::Parse(Scanner *pScanner, const ParserState& state)
24
25
26
27
28
29
30
31
32
33
34
35
36
	{
		Clear();

		// we better have some tokens in the queue
		if(!pScanner->PeekNextToken())
			return;

		// first eat doc start (optional)
		if(pScanner->PeekNextToken()->type == TT_DOC_START)
			pScanner->EatNextToken();

		// now create our root node and parse it
		m_pRoot = new Node;
37
		m_pRoot->Parse(pScanner, state);
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

		// and finally eat any doc ends we see
		while(pScanner->PeekNextToken() && pScanner->PeekNextToken()->type == TT_DOC_END)
			pScanner->EatNextToken();
	}

	std::ostream& operator << (std::ostream& out, const Document& doc)
	{
		if(!doc.m_pRoot) {
			out << "{empty node}\n";
			return out;
		}

		doc.m_pRoot->Write(out, 0);
		return out;
	}
beder's avatar
beder committed
54
}