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