|
Boost Users : |
Subject: [Boost-users] Serialization of functors and MPL
From: Anonymous user (nokiac5eel_at_[hidden])
Date: 2010-09-16 15:34:11
Hello everybody, I'm currently trying to serialize functors.Apparently,
it is not possible to serialize boost::function objects,is it possible to
find a way to serialize pointer to function ? (in order to make working
the example below*)If it is definitively not possible, is there a way to
'register' a relation betwwen objects and functor ? (using MPL library).The
idea is to rebuild the boost function according to the 'Object and 'Type'
class of the template'. Example: mpl::pair<Object,Function> container;serialize(){boost::function<Type
()> m_getter=mpl::at< container,Object>;} *Here is the problem that I'm
trying to resolve: MyObject myObject("before");SetCommand<std::string,MyObject>
SetCommand(myObject,&MyObject::setName,&MyObject::getName,"after"); SetCommand.do();
// call functor 'MyObject::setName("after")'SetCommand.undo(); // call
functor 'MyObject::setName("before")'
template<typename Type,typename Object>class SetCommand : public Command{
public: template <typename Setter, typename Getter> SetCommand(Object&
o, const Setter& setter, const Getter& getter, const Type& value) :
Command(), m_getter(boost::bind(getter, &o)), m_setter(boost::bind(setter,
&o, _1)), initialValue(m_getter()), finalValue(value)
{ } virtual void undo() { m_setter(initialValue)
; } virtual void do() { m_setter(finalValue)
; } private:
friend class boost::serialization::access;
SetCommand(){}
template <class Archive>
void serialize( Archive & ar, const unsigned int version )
{
ar & m_getter;ERROR -> does not compile !!!
ar & m_setter;ERROR -> does not compile !!!
ar & initialValue;
ar & finalValue;
}
boost::function<Type ()> m_getter ; boost::function<void (Type)> m_setter ;
Type initialValue ; Type finalValue ;};
Thanks in advance.
--------------------------------------------------------------
Ovi Mail: Making email access easy
http://mail.ovi.com
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net