Commit | Line | Data |
1d2dff63 |
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 |
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 |
58 | |
59 | /* |
60 | * Test #include, #import and #include_next |
61 | * #include_next is difficult to test, it really depends on the actual |
62 | * circumstances - for example, `#include_next <limits.h>' on a Linux system |
63 | * with `use lib qw(/opt/perl5/lib/site_perl/i586-linux/linux);' or whatever |
64 | * your equivalent is... |
65 | */ |
66 | #include <sys/socket.h> |
67 | #import "sys/ioctl.h" |
68 | #include_next <sys/fcntl.h> |
69 | |
70 | /* typedefs should be ignored */ |
71 | typedef struct a_struct { |
72 | int typedefs_should; |
73 | char be_ignored; |
74 | long as_well; |
75 | } a_typedef; |
76 | |
77 | /* |
78 | * however, typedefs of enums and just plain enums should end up being treated |
79 | * like a bunch of #defines... |
80 | */ |
81 | |
82 | typedef enum _days_of_week { sun, mon, tue, wed, thu, fri, sat, Sun=0, Mon, |
83 | Tue, Wed, Thu, Fri, Sat } days_of_week; |
84 | |
85 | #endif /* _H2PH_H_ */ |