improved handling of shared/smart pointers
Previously, pybind11 required classes using std::shared_ptr<> to derive
from std::enable_shared_from_this<> (or compilation failures would ensue).
Everything now also works for classes that don't do this, assuming that
some basic rules are followed (e.g. never passing "raw" pointers of
instances manged by shared pointers). The safer
std::enable_shared_from_this<> approach continues to be supported.
diff --git a/example/example8.py b/example/example8.py
index 339e008..b12c5b9 100755
--- a/example/example8.py
+++ b/example/example8.py
@@ -3,49 +3,68 @@
import sys
sys.path.append('.')
-from example import MyObject
+from example import MyObject1
+from example import MyObject2
+from example import MyObject3
+
from example import make_object_1
from example import make_object_2
-from example import make_myobject_4
-from example import make_myobject_5
+from example import make_myobject1_1
+from example import make_myobject1_2
from example import make_myobject2_1
from example import make_myobject2_2
+from example import make_myobject3_1
+from example import make_myobject3_2
+
from example import print_object_1
from example import print_object_2
from example import print_object_3
from example import print_object_4
-from example import print_myobject_1
-from example import print_myobject_2
-from example import print_myobject_3
-from example import print_myobject_4
+
+from example import print_myobject1_1
+from example import print_myobject1_2
+from example import print_myobject1_3
+from example import print_myobject1_4
+
from example import print_myobject2_1
from example import print_myobject2_2
from example import print_myobject2_3
from example import print_myobject2_4
-for o in [make_object_1(), make_object_2(), MyObject(3)]:
+from example import print_myobject3_1
+from example import print_myobject3_2
+from example import print_myobject3_3
+from example import print_myobject3_4
+
+for o in [make_object_1(), make_object_2(), MyObject1(3)]:
print("Reference count = %i" % o.getRefCount())
print_object_1(o)
print_object_2(o)
print_object_3(o)
print_object_4(o)
-for o in [make_myobject_4(), make_myobject_5(), MyObject(6), 7]:
+for o in [make_myobject1_1(), make_myobject1_2(), MyObject1(6), 7]:
print(o)
if not isinstance(o, int):
print_object_1(o)
print_object_2(o)
print_object_3(o)
print_object_4(o)
- print_myobject_1(o)
- print_myobject_2(o)
- print_myobject_3(o)
- print_myobject_4(o)
+ print_myobject1_1(o)
+ print_myobject1_2(o)
+ print_myobject1_3(o)
+ print_myobject1_4(o)
-
-for o in [make_myobject2_1(), make_myobject2_2()]:
+for o in [MyObject2(8), make_myobject2_1(), make_myobject2_2()]:
print(o)
print_myobject2_1(o)
print_myobject2_2(o)
print_myobject2_3(o)
print_myobject2_4(o)
+
+for o in [MyObject3(9), make_myobject3_1(), make_myobject3_2()]:
+ print(o)
+ print_myobject3_1(o)
+ print_myobject3_2(o)
+ print_myobject3_3(o)
+ print_myobject3_4(o)