content.h 1.74 KB
Newer Older
1
2
#pragma once

jbeder's avatar
jbeder committed
3
4
5
6
#ifndef CONTENT_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define CONTENT_H_62B23520_7C8E_11DE_8A39_0800200C9A66


7
#include "anchor.h"
8
9
#include "exceptions.h"
#include "ltnode.h"
10
11
12
#include <map>
#include <memory>
#include <vector>
13
14
15

namespace YAML
{
16
17
18
19
20
	struct Mark;
	struct NodeProperties;
	class AliasManager;
	class EventHandler;
	class Map;
21
22
	class Node;
	class Scalar;
23
	class Scanner;
24
25
26
27
28
	class Sequence;

	class Content
	{
	public:
29
30
		Content() {}
		virtual ~Content() {}
31

32
33
34
35
		virtual bool GetBegin(std::vector <Node *>::const_iterator&) const { return false; }
		virtual bool GetBegin(std::map <Node *, Node *, ltnode>::const_iterator&) const { return false; }
		virtual bool GetEnd(std::vector <Node *>::const_iterator&) const { return false; }
		virtual bool GetEnd(std::map <Node *, Node *, ltnode>::const_iterator&) const { return false; }
36
37
		virtual Node *GetNode(std::size_t) const { return 0; }
		virtual std::size_t GetSize() const { return 0; }
38
39
40
		virtual bool IsScalar() const { return false; }
		virtual bool IsMap() const { return false; }
		virtual bool IsSequence() const { return false; }
41
42
43
44
45
		
		virtual void SetData(const std::string& data);
		virtual void Append(std::auto_ptr<Node> pNode);
		virtual void Insert(std::auto_ptr<Node> pKey, std::auto_ptr<Node> pValue);
		virtual void EmitEvents(AliasManager& am, EventHandler& eventHandler, const Mark& mark, const std::string& tag, anchor_t anchor) const = 0;
46
47

		// extraction
48
		virtual bool GetScalar(std::string&) const { return false; }
49
50

		// ordering
51
52
53
54
		virtual int Compare(Content *) { return 0; }
		virtual int Compare(Scalar *) { return 0; }
		virtual int Compare(Sequence *) { return 0; }
		virtual int Compare(Map *) { return 0; }
55
56
57
58

	protected:
	};
}
jbeder's avatar
jbeder committed
59
60

#endif // CONTENT_H_62B23520_7C8E_11DE_8A39_0800200C9A66