[C++-sig] Re: Pickling object from nested class
Nikolay Mladenov
nickm at sitius.com
Wed Oct 22 15:28:22 CEST 2003
Here it is:
cpp:
struct OBJ{
public :
struct PROP{
PROP(int i=0):p(i){}
int p;
operator int ()const{return p;}
};
OBJ(int p=0):prop(p){}
PROP prop;
operator int ()const{return prop.p;}
};
#include <boost/python.hpp>
using namespace boost::python;
template <class T>
struct pickle_suite_: pickle_suite
{
static tuple getinitargs(const T &t){
return make_tuple((int)t);
}
};
BOOST_PYTHON_MODULE(inner)
{
scope s(
class_<OBJ>("OBJ", init<optional<int> >())
.def_pickle(pickle_suite_<OBJ>())
);
class_<OBJ::PROP> ("PROP", init<optional<int> >())
.def_pickle(pickle_suite_<OBJ::PROP>());
}
//////////////////////////////////////
py:
import inner
from sys import stdout as out
from pickle import dump
dump(inner.OBJ.PROP(),out)
# ----------
# stacktrace
# ----------
#dump(inner.OBJ(), out) works fine
More information about the Cplusplus-sig
mailing list