Boost logo

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