Commit | Line | Data |
---|---|---|
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) | |
41 | # error Nup, can't go on /* ' /* stupid font-lock-mode */ | |
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_ */ |