#ifndef PLIST_STRUCTURE_H
#define PLIST_STRUCTURE_H
#include <plist/Node.h>
#include <string>
#include <vector>
namespace PList
{
class Structure : public Node
{
public :
virtual ~Structure();
uint32_t GetSize() const;
std::string ToXml() const;
std::vector<char> ToBin() const;
virtual void Remove(Node* node) = 0;
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);
Structure(plist_type type, Node* parent = NULL);
void UpdateNodeParent(Node* node);
private:
Structure(Structure& s);
Structure& operator=(const Structure& s);
};
};
#endif