summaryrefslogtreecommitdiffstats
path: root/include/plist
diff options
context:
space:
mode:
authorGravatar guyingzhao2025-02-28 00:17:57 +0800
committerGravatar Nikias Bassen2025-03-01 23:42:06 +0100
commitd40f03e4090edafea75f04a1697ef0384231d333 (patch)
treee3915131a791b3ce5669ee7938ff4eb4f2c5bbba /include/plist
parent02be84957d44ce68dcf81bada0d3250d4d81395a (diff)
downloadlibplist-d40f03e4090edafea75f04a1697ef0384231d333.tar.gz
libplist-d40f03e4090edafea75f04a1697ef0384231d333.tar.bz2
C++: Add more convenience functions to the interface
Diffstat (limited to 'include/plist')
-rw-r--r--include/plist/Array.h10
-rw-r--r--include/plist/Dictionary.h7
-rw-r--r--include/plist/Structure.h1
3 files changed, 16 insertions, 2 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);