00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef _BASE_BINARYSERIALIZER_
00026 #define _BASE_BINARYSERIALIZER_
00027
00028 #include <base/base>
00029 #include <base/array>
00030 #include <base/Serializer>
00031
00032
00033 namespace base {
00034
00035
00036 class BinarySerializer : public Serializer
00037 {
00038 public:
00039 BinarySerializer(SerializerType type, ref<VFile> archive);
00040 BinarySerializer(SerializerType type, std::ios& stream);
00041 virtual ~BinarySerializer();
00042
00043 virtual String className() const { return String("BinarySerializer"); }
00044
00045 virtual bool followReferences(bool follow);
00046 virtual void flush();
00047
00048 protected:
00049 BinarySerializer(const BinarySerializer& a)
00050 : Serializer(a), stream(a.stream), buf(a.buf) {}
00051
00052 virtual Serializer& serialize(char& c, const String& memberName);
00053 virtual Serializer& serialize(Byte& b, const String& memberName);
00054 virtual Serializer& serialize(bool& b, const String& memberName);
00055 virtual Serializer& serialize(SInt& i, const String& memberName);
00056 virtual Serializer& serialize(Int& i, const String& memberName);
00057 virtual Serializer& serialize(LInt& i, const String& memberName);
00058 virtual Serializer& serialize(String& s, const String& memberName);
00059 virtual Serializer& serialize(Real& r, const String& memberName);
00060
00061 virtual TypeModifier preSerializeObject(String& typeName, TypeModifier typeModifier, const String& memberName, bool forceTypeSerialization = false);
00062 virtual void postSerializeObject(const String& memberName) {}
00063
00064 std::ios& stream;
00065 std::streambuf& buf;
00066
00067 };
00068
00069 }
00070
00071 #endif