//---------------------------------------------------------------------------- // Serializer.h // Copyright (c) 2006 Move Interactive // // //---------------------------------------------------------------------------- #ifndef _FLOWENGINE_CORE_SERIALIZER_BINARYSERIALIZER_H_ #define _FLOWENGINE_CORE_SERIALIZER_BINARYSERIALIZER_H_ // MS compatible compilers support #pragma once #if defined(_MSC_VER) && (_MSC_VER >= 1020) # pragma once #endif #include "core/serialization/Serializer.h" #include #include #include #include #include #include #include #include #include #include #include // must be the last header namespace FlowEngine { class BinaryArchiveO : public IArchive, // don't derive from binary_oarchive !!! public boost::archive::binary_oarchive_impl { public: BinaryArchiveO(std::ostream & os, unsigned flags = 0) : boost::archive::binary_oarchive_impl(os, flags) {} FE_SERIALIZATION_SERIALIZE; virtual void Serialize(void * data, size_t size) { save_binary(data, size); } }; class BinaryArchiveI : public IArchive, // don't derive from binary_oarchive !!! public boost::archive::binary_iarchive_impl { public: BinaryArchiveI(std::istream & is, unsigned flags = 0) : boost::archive::binary_iarchive_impl(is,flags) {} FE_SERIALIZATION_SERIALIZE; virtual void Serialize(void * data, size_t size) { load_binary(data, size); } }; } // required by smart_cast for compilers not implementing // partial template specialization BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(boost::archive::binary_iarchive) #include // pops abi_suffix.hpp pragmas #endif