This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
The #11166 needed also these updated.
[perl5.git] / warnings.h
1 /* !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
2    This file is built by warnings.pl
3    Any changes made here will be lost!
4 */
5
6
7 #define Off(x)                  ((x) / 8)
8 #define Bit(x)                  (1 << ((x) % 8))
9 #define IsSet(a, x)             ((a)[Off(x)] & Bit(x))
10
11
12 #define G_WARN_OFF              0       /* $^W == 0 */
13 #define G_WARN_ON               1       /* -w flag and $^W != 0 */
14 #define G_WARN_ALL_ON           2       /* -W flag */
15 #define G_WARN_ALL_OFF          4       /* -X flag */
16 #define G_WARN_ONCE             8       /* set if 'once' ever enabled */
17 #define G_WARN_ALL_MASK         (G_WARN_ALL_ON|G_WARN_ALL_OFF)
18
19 #define pWARN_STD               Nullsv
20 #define pWARN_ALL               (Nullsv+1)      /* use warnings 'all' */
21 #define pWARN_NONE              (Nullsv+2)      /* no  warnings 'all' */
22
23 #define specialWARN(x)          ((x) == pWARN_STD || (x) == pWARN_ALL ||        \
24                                  (x) == pWARN_NONE)
25 #define WARN_ALL                0
26 #define WARN_CLOSURE            1
27 #define WARN_EXITING            2
28 #define WARN_GLOB               3
29 #define WARN_IO                 4
30 #define WARN_CLOSED             5
31 #define WARN_EXEC               6
32 #define WARN_NEWLINE            7
33 #define WARN_PIPE               8
34 #define WARN_UNOPENED           9
35 #define WARN_MISC               10
36 #define WARN_NUMERIC            11
37 #define WARN_OCTMODE            12
38 #define WARN_CHMOD              13
39 #define WARN_MKDIR              14
40 #define WARN_UMASK              15
41 #define WARN_ONCE               16
42 #define WARN_OVERFLOW           17
43 #define WARN_PACK               18
44 #define WARN_PORTABLE           19
45 #define WARN_RECURSION          20
46 #define WARN_REDEFINE           21
47 #define WARN_REGEXP             22
48 #define WARN_SEVERE             23
49 #define WARN_DEBUGGING          24
50 #define WARN_INPLACE            25
51 #define WARN_INTERNAL           26
52 #define WARN_MALLOC             27
53 #define WARN_SIGNAL             28
54 #define WARN_SUBSTR             29
55 #define WARN_SYNTAX             30
56 #define WARN_AMBIGUOUS          31
57 #define WARN_BAREWORD           32
58 #define WARN_DEPRECATED         33
59 #define WARN_DIGIT              34
60 #define WARN_PARENTHESIS        35
61 #define WARN_PRECEDENCE         36
62 #define WARN_PRINTF             37
63 #define WARN_PROTOTYPE          38
64 #define WARN_QW                 39
65 #define WARN_RESERVED           40
66 #define WARN_SEMICOLON          41
67 #define WARN_TAINT              42
68 #define WARN_UNINITIALIZED      43
69 #define WARN_UNPACK             44
70 #define WARN_UNTIE              45
71 #define WARN_UTF8               46
72 #define WARN_VOID               47
73 #define WARN_Y2K                48
74
75 #define WARNsize                13
76 #define WARN_ALLstring          "\125\125\125\125\125\125\125\125\125\125\125\125\125"
77 #define WARN_NONEstring         "\0\0\0\0\0\0\0\0\0\0\0\0\0"
78
79 #define isLEXWARN_on    (PL_curcop->cop_warnings != pWARN_STD)
80 #define isLEXWARN_off   (PL_curcop->cop_warnings == pWARN_STD)
81 #define isWARN_ONCE     (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
82 #define isWARN_on(c,x)  (IsSet(SvPVX(c), 2*(x)))
83 #define isWARNf_on(c,x) (IsSet(SvPVX(c), 2*(x)+1))
84
85 #define ckDEAD(x)                                                       \
86            ( ! specialWARN(PL_curcop->cop_warnings) &&                  \
87             ( isWARNf_on(PL_curcop->cop_warnings, WARN_ALL) ||          \
88               isWARNf_on(PL_curcop->cop_warnings, x)))
89
90 #define ckWARN(x)                                                       \
91         ( (isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE &&     \
92               (PL_curcop->cop_warnings == pWARN_ALL ||                  \
93                isWARN_on(PL_curcop->cop_warnings, x) ) )                \
94           || (isLEXWARN_off && PL_dowarn & G_WARN_ON) )
95
96 #define ckWARN2(x,y)                                                    \
97           ( (isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE &&   \
98               (PL_curcop->cop_warnings == pWARN_ALL ||                  \
99                 isWARN_on(PL_curcop->cop_warnings, x)  ||               \
100                 isWARN_on(PL_curcop->cop_warnings, y) ) )               \
101             ||  (isLEXWARN_off && PL_dowarn & G_WARN_ON) )
102
103 #define ckWARN_d(x)                                                     \
104           (isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL ||     \
105              (PL_curcop->cop_warnings != pWARN_NONE &&                  \
106               isWARN_on(PL_curcop->cop_warnings, x) ) )
107
108 #define ckWARN2_d(x,y)                                                  \
109           (isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL ||     \
110              (PL_curcop->cop_warnings != pWARN_NONE &&                  \
111                 (isWARN_on(PL_curcop->cop_warnings, x)  ||              \
112                  isWARN_on(PL_curcop->cop_warnings, y) ) ) )
113
114 /* end of file warnings.h */
115