Jump to content
  • Advertisement
Sign in to follow this  

A way to wrap the boost::serialization library

This topic is 4187 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

/* std::string language("CPP"); */ Hi everyone, I'm building a game engine (actually a framework is a better definition of it), and i'm exporting it for use in python with the help of boost::python library. I'm using boost::serialization in the engine (for saves/loads primarily), and because the library can't be used natively in python I've created a wrapper for it. I have to classes: ArchiveIn and ArchiveOut, both of SerializeArchive abstract type. I have a Serializable abstract class which classes that implement serialization inherit from, and it contains two functions to manage calls from boost::serialization and direct the calls to a virtual function that uses one of the archives mentioned above to serialize themselves. All works nicely so far, except for when it comes to serializing a base class, and registering a derived class, both of them using templates which I can't use through python AFAIK. to serialize a base class i need to call
ar & boost::serialization::base_object<base_class>(*this);

from the derived class (ar being one of the archives). Note that boost strongly advices against calling the serializing function of the base class directly. and to register a derived class (to be able to serialize/unserialize an derived object from a base class pointer) i can use either a macro in the class definition (which i prefer) :
BOOST_CLASS_EXPORT_GUID(derived, "derived")

or a function to register the type:
ar.template register_type<derived_one>();

I can't figure out a way to export these functions safely to python. Can anyone help? thanks !!

Share this post

Link to post
Share on other sites
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!