fox*_*cub 5 c++ python boost pickle boost-serialization
我有一个使用Boost.Serialization的C++库.我正在使用Boost.Python为这个库创建Python绑定.很明显如何为Boost.Python创建一个使用Boost.Serialization的pickle套件(使用Boost.Serialization保存到一个字符串,并将该字符串返回给Python).
我想要的是相反的:给定a boost::python::object,我想要一个serialize(...)函数来调用Python的pickle.dumps()函数并序列化结果字符串.(想象一下std::vector<boost::python::object>.当我序列化这个向量时,Boost.Serialization会调用辅助serialize()函数.)这可能吗?更好的是,是否可以使用cPickle和绕过将控件提供给Python解释器?
这是我用来 pickle/unpickle boost::mersenne_twister 实例的代码
typedef boost::mt19937 rng_t;
struct mt_pickle_suite : bp::pickle_suite {
static bp::object getstate (const rng_t& rng) {
std::ostringstream os;
boost::archive::binary_oarchive oa(os);
oa << rng;
return bp::str (os.str());
}
static void
setstate(rng_t& rng, bp::object entries) {
bp::str s = bp::extract<bp::str> (entries)();
std::string st = bp::extract<std::string> (s)();
std::istringstream is (st);
boost::archive::binary_iarchive ia (is);
ia >> rng;
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2461 次 |
| 最近记录: |