Add headers for serialized objects and types.

This is a table-driver serialized that can also serialized/deserialize
to/from binary, text, and database formats.
This commit is contained in:
JoelKatz
2012-03-12 15:25:56 -07:00
parent e8c1f656ee
commit 429af40139
2 changed files with 291 additions and 0 deletions

49
src/SerializedObject.h Normal file
View File

@@ -0,0 +1,49 @@
#ifndef __SERIALIZEDOBJECT__
#define __SERIALIZEDOBJECT__
#include "SerializedTypes.h"
struct SOElement
{ // An element in the description of a serialized object
const char *e_name;
int e_flag;
SerializedTypeID e_id;
SOElement(const char *n, int f, SerializedTypeID i) : e_name(n), e_flag(f), e_id(i) { ; }
};
struct SOType
{ // A type of serialized object
const char *name;
std::list<SOElement> elements;
};
class STUObject : public SerializedType
{
protected:
SOType *type;
std::list<SerializedType*> data;
public:
STUObject() { ; }
virtual ~STUObject();
STUObject(const STUObject&);
STUObject& operator=(const STUObject&);
int getLength() const;
SerializedTypeID getType() const { return STI_OBJECT; }
STUObject* duplicate() const { return new STUObject(*this); }
std::vector<unsigned char> serialize() const;
std::string getText() const;
std::string getSQL() const;
void addObject(const SerializedType& t) { data.push_back(t.duplicate()); }
void giveObject(SerializedType* t) { data.push_back(t); }
const std::list<SerializedType*>& peekData() const { return data; }
std::list<SerializedType*>& peekData() { return data; }
};
#endif