File Coverage

hax/LOGOP_ANY.c.inc
Criterion Covered Total %
statement 12 12 100.0
branch 7 10 70.0
condition n/a
subroutine n/a
pod n/a
total 19 22 86.3


line stmt bran cond sub pod time code
1             /* vi: set ft=c : */
2              
3             struct logop_any {
4             BASEOP
5             OP *op_first;
6             OP *op_other;
7             ANY *op_any;
8             };
9              
10             typedef struct logop_any LOGOP_ANY;
11              
12             #define cLOGOP_ANYx(o) ((LOGOP_ANY *)o)
13             #define cLOGOP_ANY cLOGOP_ANYx(PL_op)
14             #define cLOGOP_ANYo cLOGOP_ANYx(o)
15              
16             #ifndef OpTYPE_set
17             # define OpTYPE_set(op, type) \
18             STMT_START { \
19             op->op_type = (OPCODE)type; \
20             op->op_ppaddr = PL_ppaddr[type]; \
21             } STMT_END
22             #endif
23              
24             #define alloc_LOGOP_ANY(type, first, other) MY_alloc_LOGOP_ANY(aTHX_ type, first, other)
25 11           static LOGOP_ANY *MY_alloc_LOGOP_ANY(pTHX_ I32 type, OP *first, OP *other)
26             {
27             dVAR;
28             LOGOP_ANY *logop;
29             OP *kid = first;
30 11           NewOp(1101, logop, 1, LOGOP_ANY);
31 11           OpTYPE_set(logop, type);
32 11           logop->op_first = first;
33 11           logop->op_other = other;
34 11 100         if (first)
35 11           logop->op_flags = OPf_KIDS;
36 11 100         while (kid && OpHAS_SIBLING(kid))
    50          
37 11 0         kid = OpSIBLING(kid);
38 11 100         if (kid)
39 2           OpLASTSIB_set(kid, (OP*)logop);
40 11           return logop;
41             }