#ifndef _OS_OSSERIALIZE_H
#define _OS_OSSERIALIZE_H
#include <libkern/c++/OSObject.h>
class OSSet;
class OSDictionary;
class OSSerialize : public OSObject
{
OSDeclareDefaultStructors(OSSerialize)
protected:
char *data; unsigned int length; unsigned int capacity; unsigned int capacityIncrement;
unsigned int tag;
OSDictionary *tags;
struct ExpansionData { };
ExpansionData *reserved;
public:
static OSSerialize *withCapacity(unsigned int capacity);
virtual char *text() const;
virtual void clearText();
virtual bool previouslySerialized(const OSMetaClassBase *);
virtual bool addXMLStartTag(const OSMetaClassBase *o, const char *tagString);
virtual bool addXMLEndTag(const char *tagString);
virtual bool addChar(const char);
virtual bool addString(const char *);
virtual bool initWithCapacity(unsigned int inCapacity);
virtual unsigned int getLength() const;
virtual unsigned int getCapacity() const;
virtual unsigned int getCapacityIncrement() const;
virtual unsigned int setCapacityIncrement(unsigned increment);
virtual unsigned int ensureCapacity(unsigned int newCapacity);
virtual void free();
OSMetaClassDeclareReservedUnused(OSSerialize, 0);
OSMetaClassDeclareReservedUnused(OSSerialize, 1);
OSMetaClassDeclareReservedUnused(OSSerialize, 2);
OSMetaClassDeclareReservedUnused(OSSerialize, 3);
OSMetaClassDeclareReservedUnused(OSSerialize, 4);
OSMetaClassDeclareReservedUnused(OSSerialize, 5);
OSMetaClassDeclareReservedUnused(OSSerialize, 6);
OSMetaClassDeclareReservedUnused(OSSerialize, 7);
};
typedef bool (*OSSerializerCallback)(void * target, void * ref,
OSSerialize * s);
class OSSerializer : public OSObject
{
OSDeclareDefaultStructors(OSSerializer)
void * target;
void * ref;
OSSerializerCallback callback;
public:
static OSSerializer * forTarget(void * target,
OSSerializerCallback callback, void * ref = 0);
virtual bool serialize(OSSerialize * s) const;
};
#endif