gcc/gcc/cpphash.h
Kaveh R. Ghazi bcc5cac9a7 cpperror.c (cpp_file_line_for_message): Constify a char*.
* cpperror.c (cpp_file_line_for_message): Constify a char*.

	* cppexp.c (parse_number, parse_charconst, cpp_lex,
	cpp_parse_expr): Add static prototypes.
	(parse_charconst): Don't cast away const-ness.
	(token): Constify a char*.

	* cppfiles.c (file_name_list, include_hash, find_include_file,
	finclude, initialize_input_buffer): Constify a char*.
	(file_cleanup, find_position): Add static prototypes.

	* cpphash.c (macro_cleanup, macarg, timestamp, special_symbol,
	collect_expansion): Add static prototypes.
	(cpp_install, create_definition, monthnames): Constify a char*.

	* cpphash.h (cpp_install): Likewise.

	* cppinit.c (known_suffixes, default_include,
	dump_special_to_buffer, NAME, cpp_start_read, cpp_finish): Likewise.
	(base_name, dump_special_to_buffer, initialize_dependency_output):
	Add static prototypes.

	* cpplib.c (my_strerror): Constify a char*.
	(null_underflow, null_cleanup, skip_comment, copy_comment,
	copy_rest_of_line, handle_directive, pass_thru_directive,
	get_directive_token, read_line_number, cpp_print_file_and_line,
	v_cpp_error, v_cpp_warning, v_cpp_error_with_line,
	v_cpp_warning_with_line, detect_if_not_defined,
	consider_directive_while_skipping): Add static prototypes.
	(pass_thru_directive, check_macro_name, cpp_expand_to_buffer,
	cpp_pedwarn_with_file_and_line): Constify a char*.

	* cpplib.h (cpp_options, include_hash, progname, definition,
	cpp_pedwarn_with_file_and_line, cpp_expand_to_buffer,
	check_macro_name, cpp_pfatal_with_name, cpp_file_line_for_message,
	find_include_file, deps_output, include_hash): Constify a char*.

	* cppmain.c (progname): Constify.
	(main): Add prototype.  Use return, not exit.

	* fix-header.c (fatal, add_symbols, lookup_std_proto, write_lbrac,
	recognized_macro, check_macro_names, read_scan_file, write_rbrac,
	inf_skip_spaces, inf_read_upto, inf_scan_ident, inf_scan_ident,
	check_protection): Add static prototype.
	(xfree): Remove.
	(progname, recognized_macrom, recognized_extern): Constify a char*.
	(main): Add prototype.

	* gen-protos.c (progname): Constify a char*.

From-SVN: r29171
1999-09-07 15:41:26 +00:00

62 lines
2.5 KiB
C

/* Part of CPP library. (Macro hash table support.)
Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* different kinds of things that can appear in the value field
of a hash node. */
union hashval
{
const char *cpval; /* some predefined macros */
DEFINITION *defn; /* #define */
struct hashnode *aschain; /* #assert */
};
struct hashnode {
struct hashnode *next; /* double links for easy deletion */
struct hashnode *prev;
struct hashnode **bucket_hdr; /* also, a back pointer to this node's hash
chain is kept, in case the node is the head
of the chain and gets deleted. */
enum node_type type; /* type of special token */
int length; /* length of token, for quick comparison */
U_CHAR *name; /* the actual name */
union hashval value; /* pointer to expansion, or whatever */
};
typedef struct hashnode HASHNODE;
/* Some definitions for the hash table. The hash function MUST be
computed as shown in hashf () below. That is because the rescan
loop computes the hash value `on the fly' for most tokens,
in order to avoid the overhead of a lot of procedure calls to
the hashf () function. Hashf () only exists for the sake of
politeness, for use when speed isn't so important. */
#define HASHSTEP(old, c) ((old << 2) + c)
#define MAKE_POS(v) (v & 0x7fffffff) /* make number positive */
extern HASHNODE *cpp_install PARAMS ((cpp_reader *, const U_CHAR *, int,
enum node_type, const char *, int));
extern int hashf PARAMS ((const U_CHAR *, int, int));
extern void delete_macro PARAMS ((HASHNODE *));
extern MACRODEF create_definition PARAMS ((U_CHAR *, U_CHAR *,
cpp_reader *, int));
extern int compare_defs PARAMS ((cpp_reader *, DEFINITION *,
DEFINITION *));
extern void macroexpand PARAMS ((cpp_reader *, HASHNODE *));
extern void dump_definition PARAMS ((cpp_reader *, MACRODEF));