YAPOG
0.0.1
Yet Another Pokemon Online Game
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
XmlTree.cpp
Go to the documentation of this file.
1
#include <boost/optional.hpp>
2
3
#include "
YAPOG/System/IO/Xml/XmlTree.hpp
"
4
#include "
YAPOG/System/Error/Exception.hpp
"
5
#include "
YAPOG/System/StringHelper.hpp
"
6
7
namespace
yap
8
{
9
XmlTree::XmlTree
()
10
: rootData_ ()
11
, data_ (nullptr)
12
{
13
}
14
15
XmlTree::XmlTree
(
const
XmlTree
& copy)
16
: rootData_ ()
17
, data_ (copy.data_)
18
{
19
}
20
21
void
XmlTree::Create
(
const
String
& rootName)
22
{
23
data_
= &
GetRootData
();
24
25
Add
(rootName,
""
);
26
}
27
28
void
XmlTree::CreateFromStream
(
IStream
& iStream,
const
String
& rootName)
29
{
30
read_xml (iStream,
GetRootData
());
31
32
data_
= &
GetRootData
();
33
}
34
35
void
XmlTree::CreateFromXmlTree
(
const
String
& rootName,
XmlTree
& copy)
36
{
37
data_
= ©.
GetChild
(rootName);
38
}
39
40
void
XmlTree::CreateFromRawData
(
DataType
* data)
41
{
42
data_
= data;
43
}
44
45
void
XmlTree::Dump
(
OStream
& oStream)
46
{
47
boost::property_tree::xml_writer_settings<char> w (
' '
, 2);
48
49
write_xml (oStream,
rootData_
, w);
50
}
51
52
XmlTreePtrType
XmlTree::ChangeRoot
(
const
String
& rootName)
53
{
54
XmlTreePtrType
xmlTreePtr (
new
XmlTree
());
55
56
xmlTreePtr->CreateFromXmlTree (rootName, *
this
);
57
58
return
xmlTreePtr;
59
}
60
61
bool
XmlTree::NodeExists
(
const
String
& name)
const
62
{
63
boost::optional<DataType&> targetNode =
64
data_
->get_child_optional (name);
65
66
return
targetNode;
67
}
68
69
const
String
&
XmlTree::GetNode
(
int
index)
const
70
{
71
for
(
const
DataType::value_type& node : *
data_
)
72
{
73
if
(index-- == 0)
74
return
node.first;
75
}
76
77
YAPOG_THROW
(
"Index out of bound: "
+
StringHelper::ToString
(index));
78
}
79
80
XmlTree::DataType
*
XmlTree::GetRootRawData
()
const
81
{
82
return
data_
;
83
}
84
85
XmlTree::DataType
&
XmlTree::GetChild
(
const
String
& name)
86
{
87
return
data_
->get_child (name);
88
}
89
90
XmlTree::DataType
&
XmlTree::AbsoluteGetChild
(
const
String
& name)
91
{
92
return
GetRootData
().get_child (name);
93
}
94
95
XmlTree::DataType
&
XmlTree::GetRootData
()
96
{
97
return
rootData_
;
98
}
99
100
const
XmlTree::DataType
&
XmlTree::GetRootData
()
const
101
{
102
return
rootData_
;
103
}
104
}
// namespace yap
YAPOG
src
YAPOG
System
IO
Xml
XmlTree.cpp
Generated on Mon Sep 17 2012 22:24:26 for YAPOG by
1.8.1.1