nodebuilder.h 1.25 KB
Newer Older
1
2
3
4
5
6
7
8
#pragma once

#ifndef NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66

#include <map>
#include <memory>
#include <stack>
9
10
11
#include <string>

#include "ptr_stack.h"
12
13
14
15

namespace YAML
{
	class Node;
16
	class Mark;
17
	
18
	class NodeBuilder
19
20
	{
	public:
21
22
23
24
		typedef YAML::Node Node;
		typedef YAML::Node Map;
		typedef YAML::Node Sequence;
		
25
		explicit NodeBuilder(Node& root);
26
		NodeBuilder(const NodeBuilder& o);
27
28
		virtual ~NodeBuilder();

29
30
31
		Node *NewNull(const std::string& tag, Node *pParent);
		Node *AnchorReference(const Mark& mark, Node *pNode);
		Node *NewScalar(const Mark& mark, const std::string& tag, Node *pParent, const std::string& value);
32
		
33
34
35
		Sequence *NewSequence(const Mark& mark, const std::string& tag, Node *pParent);
		void AppendToSequence(Sequence *pSequence, Node *pNode);
		void SequenceComplete(Sequence *pSequence) {(void)pSequence;}
36
		
37
38
39
		Map *NewMap(const Mark& mark, const std::string& tag, Node *pParent);
		void AssignInMap(Map *pMap, Node *pKeyNode, Node *pValueNode);
		void MapComplete(Map *pMap) {(void)pMap;}
40
41
		
	private:
42
		Node* NewNode();
43
44
45
46
47
		
	private:
		Node& m_root;
		bool m_initializedRoot;
		
48
		ptr_stack<Node> m_unlinked;
49
50
51
52
53
	};
}

#endif // NODEBUILDER_H_62B23520_7C8E_11DE_8A39_0800200C9A66