2 * Test header file for h2ph
4 * Try to test as many constructs as possible
5 * For example, the multi-line comment :)
8 /* And here's a single line comment :) */
10 /* Test #define with no indenting, over multiple lines */
14 /* Test #ifndef and parameter interpretation*/
16 #define ERROR(x) fprintf(stderr, "%s\n", x[2][3][0])
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 $"
27 #define MAX(a,b) ((a) > (b) ? (a) : (b))
30 #ifdef __SOME_UNIMPORTANT_PROPERTY
31 #define MIN(a,b) ((a) < (b) ? (a) : (b))
32 #endif /* __SOME_UNIMPORTANT_PROPERTY */
35 * Test #if, #elif, #else, #endif, #warn and #error, and `!'
36 * Also test whitespace between the `#' and the command
38 #if !(defined __SOMETHING_MORE_IMPORTANT)
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
48 #if (!((defined __SOMETHING_TRIVIAL && defined __SOMETHING_LESS_SO)) \
49 || defined __SOMETHING_OVERPOWERING)
51 #elif !(defined __SOMETHING_TRIVIAL) /* defined __SOMETHING_LESS_SO */
53 #elif !(defined __SOMETHING_LESS_SO) /* defined __SOMETHING_TRIVIAL */
55 #else /* defined __SOMETHING_TRIVIAL && defined __SOMETHING_LESS_SO */
56 # define WHATEVER 1000
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...
66 #include <sys/socket.h>
68 #include_next <sys/fcntl.h>
70 /* typedefs should be ignored */
71 typedef struct a_struct {
78 * however, typedefs of enums and just plain enums should end up being treated
79 * like a bunch of #defines...
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;
86 * Some moderate flexing of tri-graph pre substitution.
88 ??=ifndef _SOMETHING_TRIGRAPHIC
89 ??=define _SOMETHING_TRIGRAPHIC
90 ??= define SOMETHING_ELSE_TRIGRAPHIC_0 "??!" /* | ??!| || */
91 ??=define SOMETHING_ELSE_TRIGRAPHIC_1 "??'" /* | ??'| ^| */
92 ??= define SOMETHING_ELSE_TRIGRAPHIC_2 "??(" /* | ??(| [| */
93 ??= define SOMETHING_ELSE_TRIGRAPHIC_3 "??)" /* | ??)| ]| */
94 ??=define SOMETHING_ELSE_TRIGRAPHIC_4 "??-0" /* | ??-| ~| */
95 ??= define SOMETHING_ELSE_TRIGRAPHIC_5 "??/ " /* | ??/| \| */
96 ??= define SOMETHING_ELSE_TRIGRAPHIC_6 "??<" /* | ??<| {| */
97 ??=define SOMETHING_ELSE_TRIGRAPHIC_7 "??=" /* | ??=| #| */
98 ??= define SOMETHING_ELSE_TRIGRAPHIC_8 "??>" /* | ??>| }| */
101 // test C++-style comment
104 typdef struct empty_struct {
105 } // trailing C++-style comment should not force continuation
108 /* comments (that look like string) inside enums... */
124 #endif /* _H2PH_H_ */