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