xref: /onnv-gate/usr/src/cmd/perl/5.8.4/distrib/warnings.h (revision 0:68f95e015346)
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 
26 /* Warnings Categories added in Perl 5.008 */
27 
28 #define WARN_ALL		0
29 #define WARN_CLOSURE		1
30 #define WARN_DEPRECATED		2
31 #define WARN_EXITING		3
32 #define WARN_GLOB		4
33 #define WARN_IO			5
34 #define WARN_CLOSED		6
35 #define WARN_EXEC		7
36 #define WARN_LAYER		8
37 #define WARN_NEWLINE		9
38 #define WARN_PIPE		10
39 #define WARN_UNOPENED		11
40 #define WARN_MISC		12
41 #define WARN_NUMERIC		13
42 #define WARN_ONCE		14
43 #define WARN_OVERFLOW		15
44 #define WARN_PACK		16
45 #define WARN_PORTABLE		17
46 #define WARN_RECURSION		18
47 #define WARN_REDEFINE		19
48 #define WARN_REGEXP		20
49 #define WARN_SEVERE		21
50 #define WARN_DEBUGGING		22
51 #define WARN_INPLACE		23
52 #define WARN_INTERNAL		24
53 #define WARN_MALLOC		25
54 #define WARN_SIGNAL		26
55 #define WARN_SUBSTR		27
56 #define WARN_SYNTAX		28
57 #define WARN_AMBIGUOUS		29
58 #define WARN_BAREWORD		30
59 #define WARN_DIGIT		31
60 #define WARN_PARENTHESIS	32
61 #define WARN_PRECEDENCE		33
62 #define WARN_PRINTF		34
63 #define WARN_PROTOTYPE		35
64 #define WARN_QW			36
65 #define WARN_RESERVED		37
66 #define WARN_SEMICOLON		38
67 #define WARN_TAINT		39
68 #define WARN_THREADS		40
69 #define WARN_UNINITIALIZED	41
70 #define WARN_UNPACK		42
71 #define WARN_UNTIE		43
72 #define WARN_UTF8		44
73 #define WARN_VOID		45
74 #define WARN_Y2K		46
75 
76 #define WARNsize		12
77 #define WARN_ALLstring		"\125\125\125\125\125\125\125\125\125\125\125\125"
78 #define WARN_NONEstring		"\0\0\0\0\0\0\0\0\0\0\0\0"
79 #define WARN_TAINTstring	"\0\0\0\0\0\0\0\0\0\100\0\0"
80 
81 #define isLEXWARN_on 	(PL_curcop->cop_warnings != pWARN_STD)
82 #define isLEXWARN_off	(PL_curcop->cop_warnings == pWARN_STD)
83 #define isWARN_ONCE	(PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
84 #define isWARN_on(c,x)	(IsSet(SvPVX(c), 2*(x)))
85 #define isWARNf_on(c,x)	(IsSet(SvPVX(c), 2*(x)+1))
86 
87 #define ckWARN(x)							\
88 	( (isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE &&	\
89 	      (PL_curcop->cop_warnings == pWARN_ALL ||			\
90 	       isWARN_on(PL_curcop->cop_warnings, x) ) )		\
91 	  || (isLEXWARN_off && PL_dowarn & G_WARN_ON) )
92 
93 #define ckWARN2(x,y)							\
94 	  ( (isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE &&	\
95 	      (PL_curcop->cop_warnings == pWARN_ALL ||			\
96 	        isWARN_on(PL_curcop->cop_warnings, x)  ||		\
97 	        isWARN_on(PL_curcop->cop_warnings, y) ) ) 		\
98 	    ||	(isLEXWARN_off && PL_dowarn & G_WARN_ON) )
99 
100 #define ckWARN3(x,y,z)							\
101 	  ( (isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE &&	\
102 	      (PL_curcop->cop_warnings == pWARN_ALL ||			\
103 	        isWARN_on(PL_curcop->cop_warnings, x)  ||		\
104 	        isWARN_on(PL_curcop->cop_warnings, y)  ||		\
105 	        isWARN_on(PL_curcop->cop_warnings, z) ) ) 		\
106 	    ||	(isLEXWARN_off && PL_dowarn & G_WARN_ON) )
107 
108 #define ckWARN4(x,y,z,t)						\
109 	  ( (isLEXWARN_on && PL_curcop->cop_warnings != pWARN_NONE &&	\
110 	      (PL_curcop->cop_warnings == pWARN_ALL ||			\
111 	        isWARN_on(PL_curcop->cop_warnings, x)  ||		\
112 	        isWARN_on(PL_curcop->cop_warnings, y)  ||		\
113 	        isWARN_on(PL_curcop->cop_warnings, z)  ||		\
114 	        isWARN_on(PL_curcop->cop_warnings, t) ) ) 		\
115 	    ||	(isLEXWARN_off && PL_dowarn & G_WARN_ON) )
116 
117 #define ckWARN_d(x)							\
118 	  (isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL ||	\
119 	     (PL_curcop->cop_warnings != pWARN_NONE &&			\
120 	      isWARN_on(PL_curcop->cop_warnings, x) ) )
121 
122 #define ckWARN2_d(x,y)							\
123 	  (isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL ||	\
124 	     (PL_curcop->cop_warnings != pWARN_NONE &&			\
125 	        (isWARN_on(PL_curcop->cop_warnings, x)  ||		\
126 	         isWARN_on(PL_curcop->cop_warnings, y) ) ) )
127 
128 #define ckWARN3_d(x,y,z)						\
129 	  (isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL ||	\
130 	     (PL_curcop->cop_warnings != pWARN_NONE &&			\
131 	        (isWARN_on(PL_curcop->cop_warnings, x)  ||		\
132 	         isWARN_on(PL_curcop->cop_warnings, y)  ||		\
133 	         isWARN_on(PL_curcop->cop_warnings, z) ) ) )
134 
135 #define ckWARN4_d(x,y,z,t)						\
136 	  (isLEXWARN_off || PL_curcop->cop_warnings == pWARN_ALL ||	\
137 	     (PL_curcop->cop_warnings != pWARN_NONE &&			\
138 	        (isWARN_on(PL_curcop->cop_warnings, x)  ||		\
139 	         isWARN_on(PL_curcop->cop_warnings, y)  ||		\
140 	         isWARN_on(PL_curcop->cop_warnings, z)  ||		\
141 	         isWARN_on(PL_curcop->cop_warnings, t) ) ) )
142 
143 #define packWARN(a)		(a                                 )
144 #define packWARN2(a,b)		((a) | (b)<<8                      )
145 #define packWARN3(a,b,c)	((a) | (b)<<8 | (c) <<16           )
146 #define packWARN4(a,b,c,d)	((a) | (b)<<8 | (c) <<16 | (d) <<24)
147 
148 #define unpackWARN1(x)		((x)        & 0xFF)
149 #define unpackWARN2(x)		(((x) >>8)  & 0xFF)
150 #define unpackWARN3(x)		(((x) >>16) & 0xFF)
151 #define unpackWARN4(x)		(((x) >>24) & 0xFF)
152 
153 #define ckDEAD(x)							\
154 	   ( ! specialWARN(PL_curcop->cop_warnings) &&			\
155 	    ( isWARNf_on(PL_curcop->cop_warnings, WARN_ALL) || 		\
156 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN1(x)) ||	\
157 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN2(x)) ||	\
158 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN3(x)) ||	\
159 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN4(x))))
160 
161 /* end of file warnings.h */
162 
163