"python/ait_impl/samples/gemm_rrr_3.cpp" did not exist on "fde6d2742bc7fe56bb86864ff960f8ea26082dfc"
node.cpp 1.63 KB
Newer Older
Jesse Beder's avatar
Jesse Beder committed
1
#include "node.h"
2
3
#include "token.h"
#include "scanner.h"
4
#include "content.h"
5
6
7
#include "parser.h"
#include "scalar.h"
#include "sequence.h"
8
#include "map.h"
Jesse Beder's avatar
Jesse Beder committed
9
10
11

namespace YAML
{
12
	Node::Node(): m_pContent(0)
Jesse Beder's avatar
Jesse Beder committed
13
14
15
16
	{
	}

	Node::~Node()
17
18
19
20
21
22
23
24
25
	{
		Clear();
	}

	void Node::Clear()
	{
		delete m_pContent;
		m_pContent = 0;
	}
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84

	void Node::Parse(Scanner *pScanner)
	{
		ParseHeader(pScanner);

		// now split based on what kind of node we should be
		Token *pToken = pScanner->PeekNextToken();
		if(pToken->type == TT_DOC_END)
			return;

		switch(pToken->type) {
			case TT_SCALAR:
				m_pContent = new Scalar;
				m_pContent->Parse(pScanner);
				break;
			case TT_FLOW_SEQ_START:
			case TT_BLOCK_SEQ_START:
			case TT_BLOCK_ENTRY:
				m_pContent = new Sequence;
				m_pContent->Parse(pScanner);
				break;
			case TT_FLOW_MAP_START:
			case TT_BLOCK_MAP_START:
				m_pContent = new Map;
				m_pContent->Parse(pScanner);
		}
	}

	// ParseHeader
	// . Grabs any tag, alias, or anchor tokens and deals with them.
	void Node::ParseHeader(Scanner *pScanner)
	{
		while(1) {
			Token *pToken = pScanner->PeekNextToken();
			if(!pToken || pToken->type != TT_TAG || pToken->type != TT_ANCHOR || pToken->type != TT_ALIAS)
				break;

			pScanner->PopNextToken();
			switch(pToken->type) {
				case TT_TAG:
					break;
				case TT_ANCHOR:
					break;
				case TT_ALIAS:
					break;
			}
			delete pToken;
		}
	}

	void Node::Write(std::ostream& out, int indent)
	{
		if(!m_pContent) {
			for(int i=0;i<indent;i++)
				out << "  ";
			out << "{no content}\n";
		} else
			m_pContent->Write(out, indent);
	}
Jesse Beder's avatar
Jesse Beder committed
85
}