]> git.saurik.com Git - bison.git/blame - src/uniqstr.h
Clean up yacc.c a little.
[bison.git] / src / uniqstr.h
CommitLineData
5bab03fc 1/* Keeping a unique copy of strings.
a737b216 2
12cf133f 3 Copyright (C) 2002, 2003, 2008, 2009 Free Software Foundation, Inc.
5bab03fc
PE
4
5 This file is part of Bison, the GNU Compiler Compiler.
6
f16b0819 7 This program is free software: you can redistribute it and/or modify
5bab03fc 8 it under the terms of the GNU General Public License as published by
f16b0819
PE
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
5bab03fc 11
f16b0819 12 This program is distributed in the hope that it will be useful,
5bab03fc
PE
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
f16b0819 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
5bab03fc
PE
19
20#ifndef UNIQSTR_H_
21# define UNIQSTR_H_
22
23/*-----------------------------------------.
24| Pointers to unique copies of C strings. |
25`-----------------------------------------*/
26
27typedef char const *uniqstr;
28
a737b216
PE
29/* Return the uniqstr for STR. */
30uniqstr uniqstr_new (char const *str);
5bab03fc 31
a737b216
PE
32/* Two uniqstr values have the same value iff they are the same. */
33#define UNIQSTR_EQ(USTR1, USTR2) ((USTR1) == (USTR2))
5bab03fc 34
12cf133f
AD
35/* Compare two uniqstr a la strcmp: negative for <, nul for =, and
36 positive for >. Undefined order, relies on addresses. */
4c3cc7da
AD
37#define UNIQSTR_CMP(USTR1, USTR2) ((USTR1) - (USTR2))
38
5bab03fc
PE
39/*--------------------------------------.
40| Initializing, destroying, debugging. |
41`--------------------------------------*/
42
43/* Create the string table. */
44void uniqstrs_new (void);
45
a737b216
PE
46/* Die if STR is not a uniqstr. */
47void uniqstr_assert (char const *str);
5bab03fc
PE
48
49/* Free all the memory allocated for symbols. */
50void uniqstrs_free (void);
51
52/* Report them all. */
53void uniqstrs_print (void);
54
55#endif /* ! defined UNIQSTR_H_ */