summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/plist/Array.h10
-rw-r--r--include/plist/Dictionary.h7
-rw-r--r--include/plist/Structure.h1
-rw-r--r--src/Structure.cpp10
4 files changed, 24 insertions, 4 deletions
diff --git a/include/plist/Array.h b/include/plist/Array.h
index 0239c78..34ddd6f 100644
--- a/include/plist/Array.h
+++ b/include/plist/Array.h
@@ -57,6 +57,16 @@ public :
void Remove(Node* node);
void Remove(unsigned int pos);
unsigned int GetNodeIndex(Node* node) const;
+ template <typename T>
+ T* at(unsigned int index)
+ {
+ return (T*)(_array.at(index));
+ }
+ template <typename T>
+ T* At(unsigned int index)
+ {
+ return (T*)(_array.at(index));
+ }
private :
std::vector<Node*> _array;
diff --git a/include/plist/Dictionary.h b/include/plist/Dictionary.h
index 583a430..fc7e558 100644
--- a/include/plist/Dictionary.h
+++ b/include/plist/Dictionary.h
@@ -60,11 +60,14 @@ public :
void Remove(Node* node);
void Remove(const std::string& key);
std::string GetNodeKey(Node* node);
+ template <typename T>
+ T* Get(const std::string& key)
+ {
+ return (T*)(_map[key]);
+ }
private :
std::map<std::string,Node*> _map;
-
-
};
};
diff --git a/include/plist/Structure.h b/include/plist/Structure.h
index eded8b2..d85b17a 100644
--- a/include/plist/Structure.h
+++ b/include/plist/Structure.h
@@ -43,6 +43,7 @@ public :
static Structure* FromXml(const std::string& xml);
static Structure* FromBin(const std::vector<char>& bin);
+ static Structure* FromBin(const char* bin, uint64_t size);
protected:
Structure(Node* parent = NULL);
diff --git a/src/Structure.cpp b/src/Structure.cpp
index 670cce6..b33de96 100644
--- a/src/Structure.cpp
+++ b/src/Structure.cpp
@@ -77,7 +77,7 @@ void Structure::UpdateNodeParent(Node* node)
if ( NULL != node->_parent )
{
plist_type type = plist_get_node_type(node->_parent);
- if (PLIST_ARRAY ==type || PLIST_DICT == type )
+ if (PLIST_ARRAY == type || PLIST_DICT == type)
{
Structure* s = static_cast<Structure*>(node->_parent);
s->Remove(node);
@@ -117,8 +117,14 @@ Structure* Structure::FromBin(const std::vector<char>& bin)
plist_from_bin(&bin[0], bin.size(), &root);
return ImportStruct(root);
+}
+
+Structure* Structure::FromBin(const char* bin, uint64_t size)
+{
+ plist_t root = NULL;
+ plist_from_bin(bin, size, &root);
+ return ImportStruct(root);
}
} // namespace PList
-