xref: /openbsd-src/gnu/usr.bin/perl/warnings.h (revision 2b0358df1d88d06ef4139321dd05bd5e05d91eaf)
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		NULL
21 #define pWARN_ALL		(((STRLEN*)0)+1)    /* use warnings 'all' */
22 #define pWARN_NONE		(((STRLEN*)0)+2)    /* no  warnings 'all' */
23 
24 #define specialWARN(x)		((x) == pWARN_STD || (x) == pWARN_ALL ||	\
25 				 (x) == pWARN_NONE)
26 
27 /* if PL_warnhook is set to this value, then warnings die */
28 #define PERL_WARNHOOK_FATAL	(&PL_sv_placeholder)
29 
30 /* Warnings Categories added in Perl 5.008 */
31 
32 #define WARN_ALL		0
33 #define WARN_CLOSURE		1
34 #define WARN_DEPRECATED		2
35 #define WARN_EXITING		3
36 #define WARN_GLOB		4
37 #define WARN_IO			5
38 #define WARN_CLOSED		6
39 #define WARN_EXEC		7
40 #define WARN_LAYER		8
41 #define WARN_NEWLINE		9
42 #define WARN_PIPE		10
43 #define WARN_UNOPENED		11
44 #define WARN_MISC		12
45 #define WARN_NUMERIC		13
46 #define WARN_ONCE		14
47 #define WARN_OVERFLOW		15
48 #define WARN_PACK		16
49 #define WARN_PORTABLE		17
50 #define WARN_RECURSION		18
51 #define WARN_REDEFINE		19
52 #define WARN_REGEXP		20
53 #define WARN_SEVERE		21
54 #define WARN_DEBUGGING		22
55 #define WARN_INPLACE		23
56 #define WARN_INTERNAL		24
57 #define WARN_MALLOC		25
58 #define WARN_SIGNAL		26
59 #define WARN_SUBSTR		27
60 #define WARN_SYNTAX		28
61 #define WARN_AMBIGUOUS		29
62 #define WARN_BAREWORD		30
63 #define WARN_DIGIT		31
64 #define WARN_PARENTHESIS	32
65 #define WARN_PRECEDENCE		33
66 #define WARN_PRINTF		34
67 #define WARN_PROTOTYPE		35
68 #define WARN_QW			36
69 #define WARN_RESERVED		37
70 #define WARN_SEMICOLON		38
71 #define WARN_TAINT		39
72 #define WARN_THREADS		40
73 #define WARN_UNINITIALIZED	41
74 #define WARN_UNPACK		42
75 #define WARN_UNTIE		43
76 #define WARN_UTF8		44
77 #define WARN_VOID		45
78 
79 #define WARNsize		12
80 #define WARN_ALLstring		"\125\125\125\125\125\125\125\125\125\125\125\125"
81 #define WARN_NONEstring		"\0\0\0\0\0\0\0\0\0\0\0\0"
82 
83 #define isLEXWARN_on 	(PL_curcop->cop_warnings != pWARN_STD)
84 #define isLEXWARN_off	(PL_curcop->cop_warnings == pWARN_STD)
85 #define isWARN_ONCE	(PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
86 #define isWARN_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)))
87 #define isWARNf_on(c,x)	(IsSet((U8 *)(c + 1), 2*(x)+1))
88 
89 #define DUP_WARNINGS(p)		\
90     (specialWARN(p) ? (STRLEN*)(p)	\
91     : (STRLEN*)CopyD(p, PerlMemShared_malloc(sizeof(*p)+*p), sizeof(*p)+*p, \
92 		     			     char))
93 
94 #define ckWARN(w)		Perl_ckwarn(aTHX_ packWARN(w))
95 #define ckWARN2(w1,w2)		Perl_ckwarn(aTHX_ packWARN2(w1,w2))
96 #define ckWARN3(w1,w2,w3)	Perl_ckwarn(aTHX_ packWARN3(w1,w2,w3))
97 #define ckWARN4(w1,w2,w3,w4)	Perl_ckwarn(aTHX_ packWARN4(w1,w2,w3,w4))
98 
99 #define ckWARN_d(w)		Perl_ckwarn_d(aTHX_ packWARN(w))
100 #define ckWARN2_d(w1,w2)	Perl_ckwarn_d(aTHX_ packWARN2(w1,w2))
101 #define ckWARN3_d(w1,w2,w3)	Perl_ckwarn_d(aTHX_ packWARN3(w1,w2,w3))
102 #define ckWARN4_d(w1,w2,w3,w4)	Perl_ckwarn_d(aTHX_ packWARN4(w1,w2,w3,w4))
103 
104 #define packWARN(a)		(a                                      )
105 #define packWARN2(a,b)		((a) | ((b)<<8)                         )
106 #define packWARN3(a,b,c)	((a) | ((b)<<8) | ((c)<<16)             )
107 #define packWARN4(a,b,c,d)	((a) | ((b)<<8) | ((c)<<16) | ((d) <<24))
108 
109 #define unpackWARN1(x)		((x)        & 0xFF)
110 #define unpackWARN2(x)		(((x) >>8)  & 0xFF)
111 #define unpackWARN3(x)		(((x) >>16) & 0xFF)
112 #define unpackWARN4(x)		(((x) >>24) & 0xFF)
113 
114 #define ckDEAD(x)							\
115 	   ( ! specialWARN(PL_curcop->cop_warnings) &&			\
116 	    ( isWARNf_on(PL_curcop->cop_warnings, WARN_ALL) || 		\
117 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN1(x)) ||	\
118 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN2(x)) ||	\
119 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN3(x)) ||	\
120 	      isWARNf_on(PL_curcop->cop_warnings, unpackWARN4(x))))
121 
122 /* end of file warnings.h */
123 /* ex: set ro: */
124