diff options
-rw-r--r-- | include/plist/Structure.h | 2 | ||||
-rw-r--r-- | src/Structure.cpp | 13 |
2 files changed, 15 insertions, 0 deletions
diff --git a/include/plist/Structure.h b/include/plist/Structure.h index d85b17a..b7fbdb5 100644 --- a/include/plist/Structure.h +++ b/include/plist/Structure.h @@ -44,6 +44,8 @@ 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); + static Structure* FromMemory(const std::vector<char>& buf, plist_format_t* format = NULL); + static Structure* FromMemory(const char* buf, uint64_t size, plist_format_t* format = NULL); protected: Structure(Node* parent = NULL); diff --git a/src/Structure.cpp b/src/Structure.cpp index f56b0e6..65e5ca8 100644 --- a/src/Structure.cpp +++ b/src/Structure.cpp @@ -127,4 +127,17 @@ Structure* Structure::FromBin(const char* bin, uint64_t size) return ImportStruct(root); } +Structure* Structure::FromMemory(const std::vector<char>& buf, plist_format_t *format) +{ + return Structure::FromMemory(&buf[0], buf.size(), format); +} + +Structure* Structure::FromMemory(const char* buf, uint64_t size, plist_format_t *format) +{ + plist_t root = NULL; + plist_from_memory(buf, size, &root, format); + return ImportStruct(root); +} + + } // namespace PList |