#ifndef _C_TREE_H
#define _C_TREE_H
-#if 0 /* I fear this may cause failures on some systems,
- so I turned off the few prototypes that needed it -- rms. */
-#include <stdio.h>
+
+#ifndef STDIO_PROTO
+#ifdef BUFSIZ
+#define STDIO_PROTO(ARGS) PROTO(ARGS)
+#else
+#define STDIO_PROTO(ARGS) ()
+#endif
#endif
/* Language-dependent contents of an identifier. */
|| TYPE_MAIN_VARIANT (t) == unsigned_char_type_node \
|| TYPE_MAIN_VARIANT (t) == short_integer_type_node \
|| TYPE_MAIN_VARIANT (t) == short_unsigned_type_node))
+
+/* In a VAR_DECL, means the variable is really an iterator. */
+#define ITERATOR_P(D) (DECL_LANG_FLAG_4(D))
+
+/* In a VAR_DECL for an iterator, means we are within
+ an explicit loop over that iterator. */
+#define ITERATOR_BOUND_P(NODE) ((NODE)->common.readonly_flag)
\f
-extern int maybe_objc_comptypes PROTO((tree, tree));
+/* in c-lang.c and objc-act.c */
+extern tree lookup_interface PROTO((tree));
+extern tree is_class_name PROTO((tree));
+extern void maybe_objc_check_decl PROTO((tree));
+extern int maybe_objc_comptypes PROTO((tree, tree, int));
extern tree maybe_building_objc_message_expr PROTO((void));
+extern tree maybe_objc_method_name PROTO((tree));
+extern int recognize_objc_keyword PROTO((void));
+extern tree build_objc_string PROTO((int, char *));
\f
/* in c-aux-info.c */
extern void gen_aux_info_record PROTO((tree, int, int, int));
extern void decl_attributes PROTO((tree, tree));
extern void declare_function_name PROTO((void));
extern tree convert_and_check PROTO((tree, tree));
-extern void constant_expression_warning PROTO((tree));
extern void overflow_warning PROTO((tree));
extern void unsigned_conversion_warning PROTO((tree, tree));
/* Read the rest of the current #-directive line. */
-#if 0
-extern char *get_directive_line PROTO((FILE *));
-#endif
-extern char *get_directive_line ();
+extern char *get_directive_line STDIO_PROTO((FILE *));
/* Subroutine of build_binary_op, used for comparison operations.
See if the operands have both been converted from subword integer types
and, if so, perhaps change them both back to their original type. */
extern tree long_long_integer_type_node;
extern tree long_long_unsigned_type_node;
extern tree long_unsigned_type_node;
+extern tree complex_integer_type_node;
+extern tree complex_float_type_node;
+extern tree complex_double_type_node;
+extern tree complex_long_double_type_node;
extern tree ptr_type_node;
extern tree ptrdiff_type_node;
extern tree short_integer_type_node;
extern int kept_level_p PROTO((void));
extern tree lookup_label PROTO((tree));
extern tree lookup_name PROTO((tree));
+extern tree lookup_name_current_level PROTO((tree));
extern tree maybe_build_cleanup PROTO((tree));
extern void parmlist_tags_warning PROTO((void));
extern void pending_xref_error PROTO((void));
extern void pop_label_level PROTO((void));
extern tree poplevel PROTO((int, int, int));
extern void print_lang_decl PROTO((void));
-#if 0
-extern void print_lang_identifier PROTO((FILE *, tree, int));
-#endif
+extern void print_lang_identifier STDIO_PROTO((FILE *, tree,
+ int));
extern void print_lang_type PROTO((void));
extern void push_c_function_context PROTO((void));
extern void push_label_level PROTO((void));
extern tree default_conversion PROTO((tree));
extern tree digest_init PROTO((tree, tree, tree *, int, int, char *));
extern tree parser_build_binary_op PROTO((enum tree_code, tree, tree));
+extern tree require_complete_type PROTO((tree));
extern void store_init_value PROTO((tree, tree));
+/* in c-iterate.c */
+extern void iterator_expand PROTO((tree));
+extern void iterator_for_loop_start PROTO((tree));
+extern void iterator_for_loop_end PROTO((tree));
+extern void iterator_for_loop_record PROTO((tree));
+extern void push_iterator_stack PROTO((void));
+extern void pop_iterator_stack PROTO((void));
+
/* Set to 0 at beginning of a function definition, set to 1 if
a return statement that specifies a return value is seen. */
extern int warn_parentheses;
+/* Warn if initializer is not completely bracketed. */
+
+extern int warn_missing_braces;
+
/* Nonzero means this is a function to call to perform comptypes
on two record types. */
extern int system_header_p;
+/* Nonzero enables objc features. */
+
+extern int doing_objc_thang;
+
#endif /* not _C_TREE_H */