File Coverage

t/typemap/object/static_cast.xsi
Criterion Covered Total %
statement 24 28 85.7
branch 24 68 35.2
condition n/a
subroutine n/a
pod n/a
total 48 96 50.0


line stmt bran cond sub pod time code
1             MODE: INLINE
2              
3             template
4             class _MyStatic {
5             public:
6             int val;
7             _MyStatic (int val) : val(val) { }
8             virtual ~_MyStatic () {}
9             };
10              
11             template
12             class _MyStaticChild : public _MyStatic {
13             public:
14             int val2;
15             _MyStaticChild (int val, int val2) : _MyStatic(val), val2(val2) { }
16             };
17              
18             using PTRMyStatic = _MyStatic<0>;
19             using PTRMyStaticChild = _MyStaticChild<0>;
20             using MyStatic = _MyStatic<1>;
21             using MyStaticChild = _MyStaticChild<1>;
22              
23             namespace xs {
24              
25             template struct Typemap : TypemapObject {
26             static std::string package () { return "MyTest::PTRMyStatic"; }
27             };
28            
29             template <> struct Typemap : Typemap {
30             static std::string package () { return "MyTest::PTRMyStaticChild"; }
31             };
32            
33             template struct Typemap : TypemapObject {
34             static std::string package () { return "MyTest::MyStatic"; }
35             };
36            
37             template <> struct Typemap : Typemap {
38             static std::string package () { return "MyTest::MyStaticChild"; }
39             };
40              
41             }
42              
43              
44             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyStatic
45             PROTOTYPES: DISABLE
46              
47             PTRMyStatic* PTRMyStatic::new (int arg) {
48 2           if (arg) RETVAL = new PTRMyStatic(arg);
49 1 50         else RETVAL = NULL;
50 1 50         }
    50          
51 0            
52             int PTRMyStatic::val (SV* newval = NULL) {
53 2 50         if (newval) THIS->val = SvIV(newval);
    0          
    0          
54 2           RETVAL = THIS->val;
55             }
56              
57 2 50         void PTRMyStatic::DESTROY ()
58              
59              
60              
61             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::PTRMyStaticChild
62             PROTOTYPES: DISABLE
63              
64             BOOT {
65 34 50         Stash("MyTest::PTRMyStaticChild").inherit(Stash("MyTest::PTRMyStatic"));
    50          
    50          
66             }
67              
68             PTRMyStaticChild* PTRMyStaticChild::new (int arg1, int arg2) {
69 2           if (arg1 || arg2) RETVAL = new PTRMyStaticChild(arg1, arg2);
70 1 50         else RETVAL = NULL;
71 1 50         }
    0          
    50          
72 0            
73             int PTRMyStaticChild::val2 (SV* newval = NULL) {
74 1 50         if (newval) THIS->val2 = SvIV(newval);
    0          
    0          
75 1           RETVAL = THIS->val2;
76             }
77              
78              
79              
80             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyStatic
81             PROTOTYPES: DISABLE
82              
83             MyStatic* MyStatic::new (int arg) {
84 2           if (arg) RETVAL = new MyStatic(arg);
85 1 50         else RETVAL = NULL;
86 1 50         }
    50          
87 0            
88             int MyStatic::val (SV* newval = NULL) {
89 2 50         if (newval) THIS->val = SvIV(newval);
    0          
    0          
90 2           RETVAL = THIS->val;
91             }
92              
93 2 50         void MyStatic::DESTROY ()
94              
95              
96              
97             MODULE = MyTest::Typemap::Object PACKAGE = MyTest::MyStaticChild
98             PROTOTYPES: DISABLE
99              
100             BOOT {
101 34 50         Stash("MyTest::MyStaticChild").inherit(Stash("MyTest::MyStatic"));
    50          
    50          
102             }
103              
104             MyStaticChild* MyStaticChild::new (int arg1, int arg2) {
105 2           if (arg1 || arg2) RETVAL = new MyStaticChild(arg1, arg2);
106 1 50         else RETVAL = NULL;
107 1 50         }
    0          
    50          
108 0            
109             int MyStaticChild::val2 (SV* newval = NULL) {
110 1 50         if (newval) THIS->val2 = SvIV(newval);
    0          
    0          
111 1           RETVAL = THIS->val2;
112             }