example-smart-ptr.py 2.68 KB
Newer Older
1
2
#!/usr/bin/env python
from __future__ import print_function
Wenzel Jakob's avatar
Wenzel Jakob committed
3
4
5
import sys
sys.path.append('.')

6
7
8
9
from example import MyObject1
from example import MyObject2
from example import MyObject3

Wenzel Jakob's avatar
Wenzel Jakob committed
10
11
from example import make_object_1
from example import make_object_2
12
13
from example import make_myobject1_1
from example import make_myobject1_2
14
15
from example import make_myobject2_1
from example import make_myobject2_2
16
17
18
from example import make_myobject3_1
from example import make_myobject3_2

Wenzel Jakob's avatar
Wenzel Jakob committed
19
20
21
22
from example import print_object_1
from example import print_object_2
from example import print_object_3
from example import print_object_4
23
24
25
26
27
28

from example import print_myobject1_1
from example import print_myobject1_2
from example import print_myobject1_3
from example import print_myobject1_4

29
30
31
32
from example import print_myobject2_1
from example import print_myobject2_2
from example import print_myobject2_3
from example import print_myobject2_4
Wenzel Jakob's avatar
Wenzel Jakob committed
33

34
35
36
37
38
39
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)]:
Wenzel Jakob's avatar
Wenzel Jakob committed
40
41
42
43
44
45
    print("Reference count = %i" % o.getRefCount())
    print_object_1(o)
    print_object_2(o)
    print_object_3(o)
    print_object_4(o)

46
for o in [make_myobject1_1(), make_myobject1_2(), MyObject1(6), 7]:
Wenzel Jakob's avatar
Wenzel Jakob committed
47
48
49
50
51
52
    print(o)
    if not isinstance(o, int):
        print_object_1(o)
        print_object_2(o)
        print_object_3(o)
        print_object_4(o)
53
54
55
56
    print_myobject1_1(o)
    print_myobject1_2(o)
    print_myobject1_3(o)
    print_myobject1_4(o)
57

58
for o in [MyObject2(8), make_myobject2_1(), make_myobject2_2()]:
59
60
61
62
63
    print(o)
    print_myobject2_1(o)
    print_myobject2_2(o)
    print_myobject2_3(o)
    print_myobject2_4(o)
64
65
66
67
68
69
70

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)
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85

from example import ConstructorStats, cstats_ref, Object

cstats = [ConstructorStats.get(Object), ConstructorStats.get(MyObject1),
        ConstructorStats.get(MyObject2), ConstructorStats.get(MyObject3),
        cstats_ref()]
print("Instances not destroyed:", [x.alive() for x in cstats])
o = None
print("Instances not destroyed:", [x.alive() for x in cstats])
print("Object value constructions:", [x.values() for x in cstats])
print("Default constructions:", [x.default_constructions for x in cstats])
print("Copy constructions:", [x.copy_constructions for x in cstats])
#print("Move constructions:", [x.move_constructions >= 0 for x in cstats]) # Doesn't invoke any
print("Copy assignments:", [x.copy_assignments for x in cstats])
print("Move assignments:", [x.move_assignments for x in cstats])