/* Pragma related interfaces.
- Copyright (C) 1995, 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1995, 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of GNU CC.
/* If we are supporting #pragma pack(push... then we automatically
support #pragma pack(<n>) */
#define HANDLE_PRAGMA_PACK 1
-#define PRAGMA_INSERT_ATTRIBUTES(node, pattr, prefix_attr) \
- insert_pack_attributes (node, pattr, prefix_attr)
-extern void insert_pack_attributes PROTO((tree, tree *, tree *));
#endif /* HANDLE_PRAGMA_PACK_PUSH_POP */
struct weak_syms
{
struct weak_syms * next;
- char * name;
- char * value;
+ const char * name;
+ const char * value;
};
/* Declared in varasm.c */
extern struct weak_syms * weak_decls;
-extern int add_weak PROTO((char *, char *));
+extern int add_weak PARAMS ((const char *, const char *));
#endif /* HANDLE_PRAGMA_WEAK */
+extern void init_pragma PARAMS ((void));
-/* Define HANDLE_GENERIC_PRAGMAS if any kind of front-end pragma
- parsing is to be done. The code in GCC's generic C source files
- will only look for the definition of this constant. They will
- ignore definitions of HANDLE_PRAGMA_PACK and so on.
- With #pragma poison, this is always set. */
-#define HANDLE_GENERIC_PRAGMAS 1
-
-
-#ifdef HANDLE_GENERIC_PRAGMAS
-enum pragma_state
-{
- ps_start,
- ps_done,
-#ifdef HANDLE_PRAGMA_WEAK
- ps_weak,
- ps_name,
- ps_equals,
- ps_value,
-#endif
-#ifdef HANDLE_PRAGMA_PACK
- ps_pack,
- ps_left,
- ps_align,
- ps_right,
+/* If cpplib is in use, it handles dispatch. */
+#if !USE_CPPLIB
+extern void dispatch_pragma PARAMS ((void));
#endif
-#ifdef HANDLE_PRAGMA_PACK_PUSH_POP
- ps_push, ps_pushcomma, ps_pushid, ps_pushcomma2,
- ps_pop, ps_popcomma,
-#endif
- ps_poison,
- ps_bad
-};
-/* Handle a C style pragma */
-extern int handle_pragma_token PROTO((const char *, tree));
+/* Duplicate prototypes for the register_pragma stuff and the typedef for
+ cpp_reader, to avoid dragging cpplib.h in almost everywhere... */
+#ifndef __GCC_CPPLIB__
+typedef struct cpp_reader cpp_reader;
-#endif /* HANDLE_GENERIC_PRAGMAS */
-
-extern void init_pragma PROTO((void));
+extern void cpp_register_pragma PARAMS ((cpp_reader *,
+ const char *, const char *,
+ void (*) PARAMS ((cpp_reader *))));
+extern void cpp_register_pragma_space PARAMS ((cpp_reader *, const char *));
+#endif
#endif /* _C_PRAGMA_H */