File Coverage

t/typemap/object/refcnt.xsi
Criterion Covered Total %
statement 112 112 100.0
branch 88 176 50.0
condition n/a
subroutine n/a
pod n/a
total 200 288 69.4


line stmt bran cond sub pod time code
1             MODE: INLINE
2              
3             template
4             class _MyRefCounted : public panda::Refcnt {
5             public:
6             int val;
7             _MyRefCounted (int val) : val(val) { }
8             virtual ~_MyRefCounted () {
9             dcnt.c++;
10             }
11             };
12              
13             template
14             class _MyRefCountedChild : public _MyRefCounted {
15             public:
16             int val2;
17             _MyRefCountedChild (int val, int val2) : _MyRefCounted(val), val2(val2) { }
18             virtual ~_MyRefCountedChild () {
19             dcnt.c++;
20             }
21             };
22              
23             using MyRefCounted = _MyRefCounted<0>;
24             using MyRefCountedChild = _MyRefCountedChild<0>;
25             using MyRefCountedIPTR = panda::iptr;
26             using MyRefCountedChildIPTR = panda::iptr;
27             using PTRMyRefCounted = _MyRefCounted<1>;
28             using PTRMyRefCountedChild = _MyRefCountedChild<1>;
29             using PTRMyRefCountedIPTR = panda::iptr;
30             using PTRMyRefCountedChildIPTR = panda::iptr;
31              
32             static MyRefCounted* st_myrefcounted;
33             static PTRMyRefCounted* st_ptr_myrefcounted;
34             static MyRefCountedIPTR st_myrefcounted_iptr;
35             static PTRMyRefCountedIPTR st_ptr_myrefcounted_iptr;
36              
37             using MyBaseSP = std::shared_ptr;
38             using MyChildSP = std::shared_ptr;
39             using PTRMyBaseSP = std::shared_ptr;
40             using PTRMyChildSP = std::shared_ptr;
41              
42             static MyBaseSP st_mybase_sp;
43             static PTRMyBaseSP st_ptr_mybase_sp;
44              
45             namespace xs {
46             template struct Typemap : TypemapObject {
47             static std::string package () { return "MyTest::PTRMyRefCounted"; }
48             };
49              
50             template <> struct Typemap : Typemap {
51             static std::string package () { return "MyTest::PTRMyRefCountedChild"; }
52             };
53              
54             template struct Typemap : TypemapObject {
55             static std::string package () { return "MyTest::MyRefCounted"; }
56             };
57              
58             template <> struct Typemap : Typemap {
59             static std::string package () { return "MyTest::MyRefCountedChild"; }
60             };
61              
62             template struct Typemap : TypemapObject {
63             static std::string package () { return "MyTest::PTRMyBaseSP"; }
64             };
65              
66             template <> struct Typemap : Typemap {
67             static std::string package () { return "MyTest::PTRMyChildSP"; }
68             };
69              
70             template struct Typemap : TypemapObject {
71             static std::string package () { return "MyTest::MyBaseSP"; }
72             static MyBaseSP dup (const MyBaseSP& obj) { return MyBaseSP(obj->clone()); }
73             };
74              
75             template <> struct Typemap : Typemap {
76             static std::string package () { return "MyTest::MyChildSP"; }
77             };
78              
79             }
80              
81             MODULE = MyTest::Typemap::Object PACKAGE = MyTest
82             PROTOTYPES: DISABLE
83              
84             void hold_ptr_myrefcounted (PTRMyRefCounted* obj) {
85 1           obj->retain();
86 1           st_ptr_myrefcounted = obj;
87             }
88              
89             PTRMyRefCounted* release_ptr_myrefcounted () {
90 2           PTRMyRefCountedIPTR autorel(st_ptr_myrefcounted);
91 2           st_ptr_myrefcounted->release();
92 1           RETVAL = st_ptr_myrefcounted;
93 1           }
94              
95             void hold_myrefcounted (MyRefCounted* obj) {
96 1           obj->retain();
97 1           st_myrefcounted = obj;
98             }
99              
100             MyRefCounted* release_myrefcounted () {
101 2           MyRefCountedIPTR autorel(st_myrefcounted);
102 2           st_myrefcounted->release();
103 1           RETVAL = st_myrefcounted;
104 1           }
105              
106             void hold_ptr_myrefcounted_iptr (PTRMyRefCountedIPTR obj) {
107 1 50         st_ptr_myrefcounted_iptr = obj;
108             }
109              
110             PTRMyRefCountedIPTR release_ptr_myrefcounted_iptr () {
111 2           RETVAL = st_ptr_myrefcounted_iptr;
112 1 50         st_ptr_myrefcounted_iptr.reset();
113 1           }
114              
115             void hold_myrefcounted_iptr (MyRefCountedIPTR obj) {
116 1 50         st_myrefcounted_iptr = obj;
117             }
118              
119             MyRefCountedIPTR release_myrefcounted_iptr () {
120 2           RETVAL = st_myrefcounted_iptr;
121 1 50         st_myrefcounted_iptr.reset();
122 1           }
123              
124             void hold_ptr_mybase_sp (PTRMyBaseSP obj) {
125 1           st_ptr_mybase_sp = obj;
126             }
127              
128             PTRMyBaseSP release_ptr_mybase_sp () {
129 2           RETVAL = st_ptr_mybase_sp;
130 1           st_ptr_mybase_sp.reset();
131 1           }
132              
133             void hold_mybase_sp (MyBaseSP obj) {
134 1           st_mybase_sp = obj;
135             }
136              
137             MyBaseSP release_mybase_sp () {
138 2           RETVAL = st_mybase_sp;
139 1           st_mybase_sp.reset();
140 1           }
141              
142              
143              
144             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyRefCounted
145             PROTOTYPES: DISABLE
146              
147 4           PTRMyRefCounted* PTRMyRefCounted::new (int val)
148 2 50          
149 2 50         int PTRMyRefCounted::val () {
    50          
150 5           RETVAL = THIS->val;
151             }
152              
153 5           void PTRMyRefCounted::DESTROY () { dcnt.perl++; }
154 5 50          
155              
156              
157             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyRefCountedChild
158             PROTOTYPES: DISABLE
159              
160             BOOT {
161 34 50         Stash("MyTest::PTRMyRefCountedChild").inherit(Stash("MyTest::PTRMyRefCounted"));
    50          
    50          
162             }
163              
164 2           PTRMyRefCountedChild* PTRMyRefCountedChild::new (int val, int val2)
165 1 50          
166 1 50         int PTRMyRefCountedChild::val2 () {
    50          
167 1           RETVAL = THIS->val2;
168             }
169              
170             void PTRMyRefCountedChild::DESTROY () {
171 1           dcnt.perl++;
172 1 50         Sub(cv).SUPER().call(&ST(0), items);
    50          
    50          
173 1 50         }
174              
175              
176              
177             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyRefCounted
178             PROTOTYPES: DISABLE
179              
180 4           MyRefCounted* MyRefCounted::new (int val)
181 2 50          
182 2 50         int MyRefCounted::val () {
    50          
183 5           RETVAL = THIS->val;
184             }
185              
186 5           void MyRefCounted::DESTROY () { dcnt.perl++; }
187 5 50          
188              
189              
190             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyRefCountedChild
191             PROTOTYPES: DISABLE
192              
193             BOOT {
194 34 50         Stash("MyTest::MyRefCountedChild").inherit(Stash("MyTest::MyRefCounted"));
    50          
    50          
195             }
196              
197 2           MyRefCountedChild* MyRefCountedChild::new (int val, int val2)
198 1 50          
199 1 50         int MyRefCountedChild::val2 () {
    50          
200 1           RETVAL = THIS->val2;
201             }
202              
203             void MyRefCountedChild::DESTROY () {
204 1           dcnt.perl++;
205 1 50         Sub(cv).SUPER().call(&ST(0), items);
    50          
    50          
206 1 50         }
207              
208              
209              
210             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyRefCountedIPTR
211             PROTOTYPES: DISABLE
212              
213 4           PTRMyRefCountedIPTR PTRMyRefCounted::new (int val)
214 2 50          
215 2 50         int val (PTRMyRefCountedIPTR THIS) {
    50          
216 3           RETVAL = THIS->val;
217             }
218              
219 3           void DESTROY (PTRMyRefCountedIPTR THIS) { dcnt.perl++; }
220 3 50          
221              
222              
223             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyRefCountedChildIPTR
224             PROTOTYPES: DISABLE
225              
226             BOOT {
227 34 50         Stash("MyTest::PTRMyRefCountedChildIPTR").inherit(Stash("MyTest::PTRMyRefCountedIPTR"));
    50          
    50          
228             }
229              
230 2           PTRMyRefCountedChildIPTR PTRMyRefCountedChild::new (int val, int val2)
231 1 50          
232 1 50         int val2 (PTRMyRefCountedChildIPTR THIS) {
    50          
233 1           RETVAL = THIS->val2;
234             }
235              
236             void DESTROY (PTRMyRefCountedChildIPTR THIS) {
237 1           dcnt.perl++;
238 1 50         Sub(cv).SUPER().call(&ST(0), items);
    50          
    50          
239 1 50         }
240              
241              
242              
243             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyRefCountedIPTR
244             PROTOTYPES: DISABLE
245              
246 4           MyRefCountedIPTR MyRefCounted::new (int val)
247 2 50          
248 2 50         int val (MyRefCountedIPTR THIS) {
    50          
249 3           RETVAL = THIS->val;
250             }
251              
252 3           void DESTROY (MyRefCountedIPTR THIS) { dcnt.perl++; }
253 3 50          
254              
255              
256             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyRefCountedChildIPTR
257             PROTOTYPES: DISABLE
258              
259             BOOT {
260 34 50         Stash("MyTest::MyRefCountedChildIPTR").inherit(Stash("MyTest::MyRefCountedIPTR"));
    50          
    50          
261             }
262              
263 2           MyRefCountedChildIPTR MyRefCountedChild::new (int v1, int v2)
264 1 50          
265 1 50         int val2 (MyRefCountedChildIPTR THIS) {
    50          
266 1           RETVAL = THIS->val2;
267             }
268              
269             void DESTROY (MyRefCountedChildIPTR THIS) {
270 1           dcnt.perl++;
271 1 50         Sub(cv).SUPER().call(&ST(0), items);
    50          
    50          
272 1 50         }
273              
274              
275              
276             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyBaseSP
277             PROTOTYPES: DISABLE
278              
279 4           PTRMyBaseSP PTRMyBase::new (int val)
280 2 50          
281 2 50         int val (PTRMyBaseSP THIS) {
    50          
282 4           RETVAL = THIS->val;
283             }
284              
285 4           void DESTROY (PTRMyBaseSP THIS) { dcnt.perl++; }
286 4 50          
287              
288              
289             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyChildSP
290             PROTOTYPES: DISABLE
291              
292             BOOT {
293 34 50         Stash("MyTest::PTRMyChildSP").inherit(Stash("MyTest::PTRMyBaseSP"));
    50          
    50          
294             }
295              
296 2           PTRMyChildSP PTRMyChild::new (int val, int val2)
297 1 50          
298 1 50         int val2 (PTRMyChildSP THIS) {
    50          
299 1           RETVAL = THIS->val2;
300             }
301              
302             void DESTROY (PTRMyChildSP THIS) {
303 1           dcnt.perl++;
304 1 50         Sub(cv).SUPER().call(&ST(0), items);
    50          
    50          
305 1 50         }
306              
307              
308              
309             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyBaseSP
310             PROTOTYPES: DISABLE
311              
312 4           MyBaseSP MyBase::new (int val)
313 2 50          
314 2 50         int val (MyBaseSP THIS) {
    50          
315 4           RETVAL = THIS->val;
316             }
317              
318 4           void DESTROY (MyBaseSP THIS) { dcnt.perl++; }
319 4 50          
320              
321              
322             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyChildSP
323             PROTOTYPES: DISABLE
324              
325             BOOT {
326 34 50         Stash("MyTest::MyChildSP").inherit(Stash("MyTest::MyBaseSP"));
    50          
    50          
327             }
328              
329 2           MyChildSP MyChild::new (int val, int val2)
330 1 50          
331 1 50         int val2 (MyChildSP THIS) {
    50          
332 1           RETVAL = THIS->val2;
333             }
334              
335             void DESTROY (MyChildSP THIS) {
336 1           dcnt.perl++;
337 1 50         Sub(cv).SUPER().call(&ST(0), items);
    50          
    50          
338 1 50         }