uniqstr.h revision cea198a11f15a2eb071d98491ca9a8bc8cebfbc4
1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Keeping a unique copy of strings.
2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   This file is part of Bison, the GNU Compiler Compiler.
6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Bison is free software; you can redistribute it and/or modify
8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   it under the terms of the GNU General Public License as published by
9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   the Free Software Foundation; either version 2, or (at your option)
10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   any later version.
11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Bison is distributed in the hope that it will be useful,
13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   but WITHOUT ANY WARRANTY; without even the implied warranty of
14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   GNU General Public License for more details.
16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   You should have received a copy of the GNU General Public License
18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   along with Bison; see the file COPYING.  If not, write to
19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project   Boston, MA 02110-1301, USA.  */
21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifndef UNIQSTR_H_
23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define UNIQSTR_H_
24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-----------------------------------------.
26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Pointers to unique copies of C strings.  |
27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-----------------------------------------*/
28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttypedef char const *uniqstr;
30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Return the uniqstr for STR.  */
32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectuniqstr uniqstr_new (char const *str);
33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Two uniqstr values have the same value iff they are the same.  */
35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#define UNIQSTR_EQ(USTR1, USTR2) ((USTR1) == (USTR2))
36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*--------------------------------------.
38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Initializing, destroying, debugging.  |
39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`--------------------------------------*/
40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Create the string table.  */
42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid uniqstrs_new (void);
43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Die if STR is not a uniqstr.  */
45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid uniqstr_assert (char const *str);
46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Free all the memory allocated for symbols.  */
48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid uniqstrs_free (void);
49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Report them all.  */
51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid uniqstrs_print (void);
52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project
53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif /* ! defined UNIQSTR_H_ */
54