From 16264a3f2de73d6a172a1f5bfb87c853dd11237c Mon Sep 17 00:00:00 2001 From: "Ralf W. Grosse-Kunstleve" Date: Thu, 22 Feb 2001 20:47:36 +0000 Subject: [PATCH] Safer pickle support (explicit auto_pickle parameter) [SVN r9313] --- example/getting_started3.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/example/getting_started3.cpp b/example/getting_started3.cpp index 7e827249..81cf83b0 100644 --- a/example/getting_started3.cpp +++ b/example/getting_started3.cpp @@ -89,6 +89,16 @@ namespace { // Avoid cluttering the global namespace. if (number != 42) w.set_secret_number(number); } + + template + class a_number { + private: + T m_number; + public: + a_number() : m_number(0) {} + a_number(T number) : m_number(number) {} + const T get() const { return m_number; } + }; } extern "C" @@ -114,6 +124,20 @@ initgetting_started3() world_class.def(world_getinitargs, "__getinitargs__"); world_class.def(world_getstate, "__getstate__"); world_class.def(world_setstate, "__setstate__"); + + // This Python class has no pickle support. + python::class_builder > + py_a_lame_number(this_module, "a_lame_number"); + py_a_lame_number.def(python::constructor<>()); + py_a_lame_number.def(python::constructor()); + py_a_lame_number.def(&a_number::get, "get"); + + // The third argument enables pickling of the object's __dict__. + python::class_builder > + py_a_number(this_module, "a_number", true); + py_a_number.def(python::constructor<>()); + py_a_number.def(python::constructor()); + py_a_number.def(&a_number::get, "get"); } catch(...) {