This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Change the documentation of the return values of @INC-hooks to match
[perl5.git] / t / lib / h2ph.h
CommitLineData
1d2dff63
GS
1/*
2 * Test header file for h2ph
3 *
4 * Try to test as many constructs as possible
5 * For example, the multi-line comment :)
6 */
7
8/* And here's a single line comment :) */
9
10/* Test #define with no indenting, over multiple lines */
11#define SQUARE(x) \
12((x)*(x))
13
14/* Test #ifndef and parameter interpretation*/
15#ifndef ERROR
16#define ERROR(x) fprintf(stderr, "%s\n", x[2][3][0])
17#endif /* ERROR */
18
19#ifndef _H2PH_H_
20#define _H2PH_H_
21
22/* #ident - doesn't really do anything, but I think it always gets included anyway */
23#ident "$Revision h2ph.h,v 1.0 98/05/04 20:42:14 billy $"
24
25/* Test #undef */
26#undef MAX
27#define MAX(a,b) ((a) > (b) ? (a) : (b))
28
29/* Test #ifdef */
30#ifdef __SOME_UNIMPORTANT_PROPERTY
31#define MIN(a,b) ((a) < (b) ? (a) : (b))
32#endif /* __SOME_UNIMPORTANT_PROPERTY */
33
34/*
35 * Test #if, #elif, #else, #endif, #warn and #error, and `!'
36 * Also test whitespace between the `#' and the command
37 */
38#if !(defined __SOMETHING_MORE_IMPORTANT)
39# warn Be careful...
40#elif !(defined __SOMETHING_REALLY_REALLY_IMPORTANT)
79c1b905 41# error "Nup, can't go on" /* ' /* stupid font-lock-mode */
1d2dff63
GS
42#else /* defined __SOMETHING_MORE_IMPORTANT && defined __SOMETHING_REALLY_REALLY_IMPORTANT */
43# define EVERYTHING_IS_OK
44#endif
45
46/* Test && and || */
47#undef WHATEVER
48#if (!((defined __SOMETHING_TRIVIAL && defined __SOMETHING_LESS_SO)) \
49 || defined __SOMETHING_OVERPOWERING)
50# define WHATEVER 6
51#elif !(defined __SOMETHING_TRIVIAL) /* defined __SOMETHING_LESS_SO */
52# define WHATEVER 7
53#elif !(defined __SOMETHING_LESS_SO) /* defined __SOMETHING_TRIVIAL */
54# define WHATEVER 8
55#else /* defined __SOMETHING_TRIVIAL && defined __SOMETHING_LESS_SO */
56# define WHATEVER 1000
57#endif
bf076876
AT
58
59/* Test passing through the alien constructs (perlbug #34493) */
60#ifdef __LANGUAGE_PASCAL__
61function Tru64_Pascal(n: Integer): Integer;
62#endif
1d2dff63
GS
63
64/*
65 * Test #include, #import and #include_next
66 * #include_next is difficult to test, it really depends on the actual
67 * circumstances - for example, `#include_next <limits.h>' on a Linux system
68 * with `use lib qw(/opt/perl5/lib/site_perl/i586-linux/linux);' or whatever
69 * your equivalent is...
70 */
71#include <sys/socket.h>
72#import "sys/ioctl.h"
73#include_next <sys/fcntl.h>
74
75/* typedefs should be ignored */
76typedef struct a_struct {
77 int typedefs_should;
78 char be_ignored;
79 long as_well;
80} a_typedef;
81
82/*
83 * however, typedefs of enums and just plain enums should end up being treated
84 * like a bunch of #defines...
85 */
86
87typedef enum _days_of_week { sun, mon, tue, wed, thu, fri, sat, Sun=0, Mon,
88 Tue, Wed, Thu, Fri, Sat } days_of_week;
89
b7bcf494
PP
90/*
91 * Some moderate flexing of tri-graph pre substitution.
92 */
93??=ifndef _SOMETHING_TRIGRAPHIC
94??=define _SOMETHING_TRIGRAPHIC
95??= define SOMETHING_ELSE_TRIGRAPHIC_0 "??!" /* | ??!| || */
96 ??=define SOMETHING_ELSE_TRIGRAPHIC_1 "??'" /* | ??'| ^| */
97??= define SOMETHING_ELSE_TRIGRAPHIC_2 "??(" /* | ??(| [| */
98 ??= define SOMETHING_ELSE_TRIGRAPHIC_3 "??)" /* | ??)| ]| */
99??=define SOMETHING_ELSE_TRIGRAPHIC_4 "??-0" /* | ??-| ~| */
100 ??= define SOMETHING_ELSE_TRIGRAPHIC_5 "??/ " /* | ??/| \| */
101??= define SOMETHING_ELSE_TRIGRAPHIC_6 "??<" /* | ??<| {| */
102??=define SOMETHING_ELSE_TRIGRAPHIC_7 "??=" /* | ??=| #| */
103??= define SOMETHING_ELSE_TRIGRAPHIC_8 "??>" /* | ??>| }| */
104 ??=endif
105
edf6e4ec
HS
106// test C++-style comment
107
108#if 1
109typdef struct empty_struct {
110} // trailing C++-style comment should not force continuation
111#endif
112
d4386644
JH
113/* comments (that look like string) inside enums... */
114
115enum {
116 /* foo;
117 can't
118 */
119 };
120
121enum flimflam {
122 flim,
123 /* foo;
124 can't
125 */
126 flam
127 } flamflim;
128
ab5fe4d6
KS
129/* Handle multi-line quoted strings: */
130__asm__ __volatile__("
131 this
132 produces
133 no
134 output
135");
136
137#define multiline "multiline
138string"
139
1d2dff63 140#endif /* _H2PH_H_ */