summaryrefslogtreecommitdiffstats
path: root/src/Node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Node.cpp')
-rw-r--r--src/Node.cpp49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/Node.cpp b/src/Node.cpp
index b0cc96a..3122322 100644
--- a/src/Node.cpp
+++ b/src/Node.cpp
@@ -21,6 +21,15 @@
21#include <stdlib.h> 21#include <stdlib.h>
22#include <plist/Node.h> 22#include <plist/Node.h>
23#include <plist/Structure.h> 23#include <plist/Structure.h>
24#include <plist/Utils.h>
25#include <plist/Dictionary.h>
26#include <plist/Array.h>
27#include <plist/Boolean.h>
28#include <plist/Integer.h>
29#include <plist/Real.h>
30#include <plist/String.h>
31#include <plist/Data.h>
32#include <plist/Date.h>
24 33
25namespace PList 34namespace PList
26{ 35{
@@ -96,4 +105,44 @@ Node* Node::GetParent()
96 return _parent; 105 return _parent;
97} 106}
98 107
108Node* Node::FromPlist(plist_t node, Node* parent)
109{
110 Node* ret = NULL;
111 if (node)
112 {
113 plist_type type = plist_get_node_type(node);
114 switch (type)
115 {
116 case PLIST_DICT:
117 ret = new Dictionary(node, parent);
118 break;
119 case PLIST_ARRAY:
120 ret = new Array(node, parent);
121 break;
122 case PLIST_BOOLEAN:
123 ret = new Boolean(node, parent);
124 break;
125 case PLIST_UINT:
126 ret = new Integer(node, parent);
127 break;
128 case PLIST_REAL:
129 ret = new Real(node, parent);
130 break;
131 case PLIST_STRING:
132 ret = new String(node, parent);
133 break;
134 case PLIST_DATE:
135 ret = new Date(node, parent);
136 break;
137 case PLIST_DATA:
138 ret = new Data(node, parent);
139 break;
140 default:
141 plist_free(node);
142 break;
143 }
144 }
145 return ret;
146}
147
99}; 148};