#ifndef GATS_OBJECT_H #define GATS_OBJECT_H namespace Bu { class Stream; class Formatter; }; namespace Gats { enum Type { typeDictionary, typeList, typeString, typeInteger, typeFloat, typeBoolean }; /** * The baseclass for every type that can be stored in a packet. */ class Object { public: Object(); virtual ~Object(); virtual Type getType() const =0; virtual void write( Bu::Stream &rOut ) const=0; virtual void read( Bu::Stream &rIn, char cType )=0; static Object *read( Bu::Stream &rIn ); }; const char *typeToStr( Type t ); }; Bu::Formatter &operator<<( Bu::Formatter &f, const Gats::Object &obj ); Bu::Formatter &operator<<( Bu::Formatter &f, const Gats::Type &t ); #endif