map.h 1.07 KB
Newer Older
1
2
#pragma once

3
4
5
6
#ifndef MAP_H_62B23520_7C8E_11DE_8A39_0800200C9A66
#define MAP_H_62B23520_7C8E_11DE_8A39_0800200C9A66


7
8
#include "content.h"
#include <map>
Jesse Beder's avatar
Jesse Beder committed
9
#include <memory>
10
11
12
13
14
15
16

namespace YAML
{
	class Node;

	class Map: public Content
	{
Jesse Beder's avatar
Jesse Beder committed
17
18
19
	private:
		typedef std::map <Node *, Node *, ltnode> node_map;

20
21
22
23
24
	public:
		Map();
		virtual ~Map();

		void Clear();
Jesse Beder's avatar
Jesse Beder committed
25

26
27
		virtual bool GetBegin(std::map <Node *, Node *, ltnode>::const_iterator& it) const;
		virtual bool GetEnd(std::map <Node *, Node *, ltnode>::const_iterator& it) const;
28
		virtual std::size_t GetSize() const;
29
30
31

		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;
32
33
34
35
36

		virtual bool IsMap() const { return true; }

		// ordering
		virtual int Compare(Content *pContent);
37
38
		virtual int Compare(Scalar *) { return 1; }
		virtual int Compare(Sequence *) { return 1; }
39
40
		virtual int Compare(Map *pMap);

Jesse Beder's avatar
Jesse Beder committed
41
	private:
42
43
44
		node_map m_data;
	};
}
45
46

#endif // MAP_H_62B23520_7C8E_11DE_8A39_0800200C9A66