From f9635567942071206f10430024895db6a127abf8 Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 24 Jun 2019 16:01:42 +0200 Subject: Remove gnuwin32 - it is provided through provisioning Having a few windows specific tools in qt5.git was always strange. We now provision the utilities to the machines, so remove them from qt5.git. [ChangeLog][General] GnuWin32 is no longer part of the Qt source code repositories. Instead it can be downloaded from the upstream project at https://gnuwin32.sourceforge.net . For convenience we also make a copy available here: https://download.qt.io/development_releases/gnuwin32/gnuwin32.zip The GnuWin32 tools are needed for building Qt from source on Windows. Binary package downloads are not affected. Task-number: QTBUG-73424 Change-Id: I9212cc2923343f4f84bcba9d1444a90e446dfb8a Reviewed-by: Simon Hausmann Reviewed-by: Liang Qi --- gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst | 3 - .../gperf/3.0.1/gperf-3.0.1-GnuWin32.README | 54 - .../contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS | 2 - .../contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING | 340 --- .../contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog | 3185 -------------------- .../contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL | 183 -- gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS | 80 - .../contrib/gperf/3.0.1/gperf-3.0.1-src/README | 28 - gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log | 156 - .../contrib/gperf/3.0.1/gperf-3.0.1/check_err.log | 21 - 10 files changed, 4052 deletions(-) delete mode 100644 gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log delete mode 100644 gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log (limited to 'gnuwin32/contrib/gperf') diff --git a/gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst b/gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst deleted file mode 100644 index 972dbc1b..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/depends-GnuWin32.lst +++ /dev/null @@ -1,3 +0,0 @@ -kernel32.dll -msvcrt.dll -ntdll.dll diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README deleted file mode 100644 index 56531d85..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-GnuWin32.README +++ /dev/null @@ -1,54 +0,0 @@ -* Gperf-3.0.1 for Windows * -=========================== - -What is it? ------------ -Gperf: generate a perfect hash function from a key set - -Description ------------ -GNU gperf is a perfect hash function generator. For a given list of -strings, it produces a hash function and hash table in the form of -C or C++ code, for looking up a value depending on the input string. -The hash function is perfect,' which means that the hash table has -no collisions, and the hash table lookup needs a single string -comparison only. GNU gperf is highly customizable. There are options -for generating C and C++ code, for emitting 'switch' statements or -nested 'ifs' instead of a hash table, and for tuning the algorithm -that gperf uses. - -Homepage --------- -http://www.gnu.org/software/gperf/gperf.html - -System ------- -- MS-Windows 95 / 98 / ME / NT / 2000 / XP with msvcrt.dll -- if msvcrt.dll is not in your Windows/System folder, get it from - Microsoft - or by installing Internet Explorer 4.0 or higher - - -Notes ------ -- Bugs and questions on this MS-Windows port: gnuwin32@users.sourceforge.net - -Package Availability --------------------- -- in: http://gnuwin32.sourceforge.net - -Sources -------- -- gperf-3.0.1-src.zip - -Compilation ------------ -The package has been compiled with GNU auto-tools, GNU make, and Mingw -(GCC for MS-Windows). Any differences from the original sources are given -in gperf-3.0.1-GnuWin32.diffs in gperf-3.0.1-src.zip. Libraries needed -for compilation can be found at the lines starting with 'LIBS = ' in the -Makefiles. Usually, these are standard libraries provided with Mingw, or -libraries from the package itself; 'gw32c' refers to the libgw32c package, -which provides MS-Windows substitutes or stubs for functions normally found in -Unix. For more information, see: http://gnuwin32.sourceforge.net/compile.html -and http://gnuwin32.sourceforge.net/packages/libgw32c.htm. diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS deleted file mode 100644 index 184c7ce6..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/AUTHORS +++ /dev/null @@ -1,2 +0,0 @@ -Douglas C. Schmidt -Bruno Haible diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING deleted file mode 100644 index bab08afa..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307, - USA. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - Appendix: How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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 of the License, 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, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog deleted file mode 100644 index 1af586c4..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/ChangeLog +++ /dev/null @@ -1,3185 +0,0 @@ -2003-06-12 Bruno Haible - - * gperf-3.0.1 released. - - * src/version.cc: Bump version number to 3.0.1. - * doc/gperf.texi: Likewise. - * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp, - tests/cplusplus.exp, tests/gpc.exp, tests/incomplete.exp, - tests/java.exp, tests/languages.exp, tests/modula2.exp, - tests/objc.exp, tests/permut2.exp, tests/permut3.exp, - tests/permutc2.exp, tests/test-4.exp: Update. - -2003-05-31 Bruno Haible - - * doc/gperf.texi (User-supplied Struct): Mention the possibility of an - abbreviated struct declaration. - * src/input.cc (Input::read_input): Support struct declarations of the - form "struct foo;". - * tests/incomplete.gperf: New file. - * tests/incomplete.exp: New file. - * tests/Makefile.in (check-test): Check incomplete.gperf too. - Reported by Rob Leslie . - -2003-05-20 Bruno Haible - - * doc/Makefile.in (gperf.ps): Don't use $< in a target rule. - -2003-05-27 Bruno Haible - - * Makefile.vms (CC): Correct value. - (getopt.obj, getopt1.obj, getline.obj, hash.obj): Don't set - HAVE_CONFIG_H. - -2003-05-17 Bruno Haible - - * Makefile.msvc (DEBUGFLAGS): New variable. - (gperf.exe): Use it, and MFLAGS too. - -2003-05-08 Bruno Haible - - * gperf-3.0 released. - -2003-05-07 Bruno Haible - - * src/version.cc: Bump version number to 3.0. - * doc/gperf.texi: Likewise. - * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp, - tests/cplusplus.exp, tests/gpc.exp, tests/java.exp, - tests/languages.exp, tests/modula2.exp, tests/objc.exp, - tests/permut2.exp, tests/permut3.exp, tests/permutc2.exp, - tests/test-4.exp: Update. - - * src/configure.in: Fix AC_INIT argument. - - * Makefile.devel (configure, lib/configure, src/configure, - tests/configure, doc/configure): Use the newest autoconf. - (src/config.h.in): Use the newest autoheader. - -2003-05-03 Bruno Haible - - * doc/gperf.texi: Use two spaces as sentence separator, as recommended - by the texinfo manual. - -2003-04-12 Bruno Haible - - * doc/configure.in (mandir): Change default value. - * doc/Makefile.in (docdir): Use datadir instead of prefix. - * Makefile.msvc (datadir): New variable. - (mandir, docdir): Use it instead of prefix. - (install, installdirs): Update. - * Makefile.vms (datadir): New variable. - (mandir, docdir): Use it instead of prefix. - (install, installdirs): Update. - -2003-04-12 Bruno Haible - - * README.vms: New file. - * Makefile.vms: New file. - * Makefile.devel (src/config.h_vms): New rule. - (all): Depend on it. - -2003-03-19 Bruno Haible - - * src/input.cc (Input::read_input): Ignore comments at the beginning - of the declarations section. - * doc/gperf.texi (Controls for GNU indent): New section. - Reported by Bruce Lilly . - -2003-03-19 Bruno Haible - - * src/output.cc (Output::output_hash_function): Avoid lint warning if - not all arguments of the hash function are used. Avoid lint warning - for fallthrough in switch. - * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp, - tests/cplusplus.exp, tests/java.exp, tests/languages.exp, - tests/modula2.exp, tests/objc.exp: All /*FALLTHROUGH*/ to expected - output. - Reported by Bruce Lilly . - -2003-03-01 Bruno Haible - - * src/options.h (Options::set_initializer_suffix): New declaration. - * src/options.cc (Options::set_initializer_suffix): New method. - * src/input.cc (Input::read_input): Recognize %define - initializer-suffix. - * doc/gperf.texi (Gperf Declarations): Document %define - initializer-suffix. - * NEWS: Update. - -2003-02-26 Bruno Haible - - * Makefile.msvc: New file. - * README.woe32: New file. - * Makefile.devel (all): Depend on src/config.h.msvc. - (src/config.h.msvc): New rule. - -2003-01-07 Bruno Haible - - * src/input.h (Input::_charset_dependent): New field. - * src/input.cc (Input::read_input): Also set _charset_dependent. - * src/main.cc (main): Pass _charset_dependent from Input to Output. - * src/output.h (Output::Output): Add charset_dependent argument. - (Output::_charset_dependent): New field. - * src/output.cc (Output::Output): Add charset_dependent argument. - (Output::output): Provoke a compilation error if the execution - character set doesn't match the expectations. - * tests/c-parse.exp, tests/charsets.exp, tests/chill.exp, - tests/cplusplus.exp, tests/gpc.exp, tests/java.exp, - tests/languages.exp, tests/modula2.exp, tests/objc.exp, - tests/permut2.exp, tests/permut3.exp, tests/permutc2.exp, - tests/test-4.exp: Update. - - * src/options.cc (Options::long_usage): Change bug report address to - . - * tests/test-6.exp: Update. - - * src/output.cc (USE_DOWNCASE_TABLE): New macro. - (output_upperlower_table): New function. - (output_upperlower_strcmp, output_upperlower_strncmp, - output_upperlower_memcmp): Emit gperf_downcase array accesses. - (Output::output): Call output_upperlower_table. - * tests/permutc2.exp: Update. - - * src/keyword-list.icc (KeywordExt_List::rest): Use a portable cast. - (Only in GCC a cast of an lvalue is an lvalue.) - -2003-01-01 Bruno Haible - - * src/options.cc (Options::parse_options): Update copyright year. - - * doc/gperf.texi (@author): Add me. - - * src/options.h (NULLSTRINGS): New enum value. - (Options::get_stringpool_name, Options::set_stringpool_name): New - method declarations. - (Options::_stringpool_name): New field. - * src/options.icc (Options::get_stringpool_name): New method. - * src/options.cc (DEFAULT_STRINGPOOL_NAME): New variable. - (Options::long_usage): Document -Q and --null-strings. - (Options::Options): Initialize _stringpool_name. - (Options::~Options): Output _stringpool_name, NULLSTRINGS values too. - (Options::set_stringpool_name): New method. - (long_options): Add options --string-pool-name, --null-strings. - (Options::parse_options): Implement options -P, -Q and --null-strings. - * src/input.cc (Input::read_input): Recognize declarations %pic, - %define string-pool-name, %null-strings. - * src/output.h (Output::output_string_pool, - Output::output_lookup_pools): New method declarations. - (Output::_wordlist_eltype): New field. - * src/output.cc (Output::output_keylength_table): Trivial - simplification. - (Output::output_string_pool): New method. - (output_keyword_entry): Add stringpool_index argument. For SHAREDLIB, - use struct offsets. - (output_keyword_blank_entries): For SHAREDLIB, use -1 instead of "". - (Output::output_keyword_table): Use _wordlist_eltype instead of - _struct_tag. Compute stringpool_index for output_keyword_entry. - (Output::output_lookup_pools): New method. - (Output::output_lookup_function_body): Use _wordlist_eltype instead of - _struct_tag. For SHAREDLIB, use "+ stringpool" to convert offsets to - strings. Use "o >= 0" to test for nonempty table entry. - (Output::output_lookup_function): Call output_lookup_pools. - (Output::output): Initialize _wordlist_eltype. Call - output_lookup_pools. - * tests/jstest4.gperf: New file. - * tests/test-6.exp: Update. - * tests/Makefile.in (check-lang-syntax): Drop test of -p. Add tests of - -P and -Q. - * doc/gperf.texi (User-supplied Struct): Mention that first field has - to be of type 'int' if -P is given. - (Gperf Declarations): Document %pic, %define string-pool-name, - %null-strings. - (Output Details): Update description of option -P. Document options -Q - and --null-strings. - - * tests/Makefile.in (check-link-c, check-ada, check-pascal, - check-test): Omit option -p. - * tests/c-parse.exp: Regenerated. - * tests/chill.exp: Regenerated. - * tests/cplusplus.exp: Regenerated. - * tests/gpc.exp: Regenerated. - * tests/java.exp: Regenerated. - * tests/objc.exp: Regenerated. - * tests/test-4.exp: Regenerated. - - * src/output.cc (Output::output_lookup_function_body): Omit the - multicompare code section and its variables when it is not used. - * tests/chill.exp: Regenerated. - - * src/output.c (Output_Compare::output_firstchar_comparison): New - method. - (Output_Compare_Strcmp::output_comparison, - Output_Compare_Strncmp::output_comparison, - Output_Compare_Memcmp::output_comparison): Use it. - * tests/permutc2.exp: Update. - - * tests/smtp.gperf: New file, based on a contribution by Bruce Lilly. - * tests/Makefile.in (check-smtp): New rule. - (check): Depend on it. - (clean): Update. - -2002-12-12 Bruno Haible - - * src/search.h (Search::init_selchars_tuple, - Search::count_duplicates_tuple): Add alpha_unify argument. - (Search::count_duplicates_tuple): New method declaration. - * src/search.cc (Search::init_selchars_tuple, - Search::count_duplicates_tuple): Add alpha_unify argument. - (Search::find_positions): Update. - (Search::count_duplicates_tuple): New method. - (Search::count_duplicates_multiset): Free temp alpha_unify vector. - (Search::find_alpha_inc): Call count_duplicates_tuple. - - * src/configure.in: Add test for stack-allocated variable-size arrays. - * src/config.h.in: Regenerated. - * src/search.cc: Include config.h. - (DYNAMIC_ARRAY, FREE_DYNAMIC_ARRAY): New macros. - (Search::find_alpha_inc, Search::count_possible_collisions, - Search::find_asso_values): Use them. - * src/Makefile.in (search.o): Depend on config.h. - - * src/search.h (Search::keyword_list_length, Search::max_key_length, - Search::get_max_keysig_size, Search::prepare): Remove declarations. - (Search::prepare): Renamed from Search::preprepare. - (Search::_max_selchars_length): New field. - * src/search.cc (Search::prepare): Renamed from Search::preprepare. - (Search::prepare_asso_values): Merged with old Search::prepare. - Initialize _max_selchars_length. - (Search::keyword_list_length): Remove function. Use _list_len instead. - (Search::max_key_length): Remove function. Use _max_key_len instead. - (Search::get_max_keysig_size): Remove function. Use - _max_selchars_length instead. - (Search::count_possible_collisions, Search::find_asso_values): Update. - (Search::find_good_asso_values): Call just prepare_asso_values. - (Search::~Search): Update. - - * src/output.h (Output::output_asso_values_ref): New declaration. - * src/output.cc (char_to_index): Remove variable. - (Output::output_asso_values_ref): New function. - (Output::output_hash_function): Use it. - (Output::output): Update. - - * src/positions.h (Positions::is_useall, Positions::set_useall, - Positions::iterator, Positions::reviterator): New method declarations. - (Positions::_useall): New field. - (PositionIterator): Make constructor private. Add a constructor and a - copy constructor. - (PositionIterator::remaining): New declaration. - (PositionReverseIterator): Make constructor private. Add a constructor - and a copy constructor. - (PositionReverseIterator::remaining): New declaration. - (PositionReverseIterator::_minindex): New field. - * src/positions.icc (Positions::Positions): Initialize _useall. - (Positions::operator=): Likewise. - (Positions::is_useall, Positions::set_useall): New methods. - (Positions::sort): Do nothing if _useall is set. - (Positions::iterator, Positions::reviterator): New methods. - (PositionIterator::PositionIterator): New constructor. - (PositionIterator::remaining): New method. - (PositionReverseIterator::PositionReverseIterator): New constructor. - (PositionReverseIterator::next): Use _minindex as bound. - (PositionReverseIterator::remaining): New method. - * src/positions.cc (Positions::add, Positions::remove): Reset the - useall flag. - (Positions::print): Handle the useall case. - * src/options.h (ALLCHARS): Remove. - * src/options.cc (Options::~Options): Update. - (Options::parse_options): Use Positions::set_useall(). - * src/keyword.h (KeywordExt::init_selchars_tuple, - KeywordExt::init_selchars_multiset, KeywordExt::init_selchars_low): - Remove use_all_chars argument. - * src/keyword.cc (KeywordExt::init_selchars_low): Remove use_all_chars - argument. Tell the position iterator to stop at _allchars_length. - Remove special case code for -k'*'. - (KeywordExt::init_selchars_tuple, KeywordExt::init_selchars_multiset): - Remove use_all_chars argument. - * src/search.h (Search::init_selchars_tuple): Remove use_all_chars - argument. - (Search::init_selchars_multiset): Likewise. - * src/search.cc (Search::init_selchars_tuple): Remove use_all_chars - argument. - (Search::count_duplicates_tuple, Search::find_positions): Update. - (Search::compute_alpha_unify): Remove special case code for -k'*'. - (Search::init_selchars_multiset): Remove use_all_chars argument. - (Search::count_duplicates_multiset): Update. - (Search::find_alpha_inc): Remove special case code for -k'*'. - (Search::prepare): Update. - (Search::get_max_keysig_size): Update. - * src/output.cc (Output::output_hash_function): Remove special case - code for -k'*'. - * tests/chill.exp: Regenerated. - -2002-12-11 Bruno Haible - - Change the positions to be 0-based, instead of 1-based. - * src/positions.h (Positions::LASTCHAR): Set to -1. - (Positions::MAX_SIZE): New constant. - (Positions::pointer): Change return type. - (Positions::_positions): Change element type. - (PositionIterator::EOS, PositionReverseIterator::EOS): Set to -2. - * src/positions.icc (Positions::pointer): Change return type. - (Positions::sort): Update. - * src/positions.cc (Positions::contains, Positions::add, - Positions::remove): Update. - (Positions::print): Update. Fix off-by-one bug. - * src/options.cc (Options::~Options): Update. - (Options::parse_options): Set BAD_VALUE to -3. Update. - * src/keyword.cc (KeywordExt::init_selchars_low): Update. - * src/search.cc (Search::find_positions, Search::compute_alpha_unify, - Search::find_alpha_inc): Update. - * src/output.cc (Output::output_hash_function): Update. Don't emit - a 'case' statement right after 'default:'. - * tests/c-parse.exp: Regenerated. - * tests/charsets.exp: Regenerated. - * tests/cplusplus.exp: Regenerated. - * tests/java.exp: Regenerated. - * tests/languages.exp: Regenerated. - * tests/modula2.exp: Regenerated. - * tests/objc.exp: Regenerated. - -2002-12-10 Bruno Haible - - * src/options.h: Reorder enum values. - (Options::short_usage, Options::long_usage): Make static. - * src/options.cc (Options::short_usage); No longer print a monster - usage line. - (Options::print_options): Improve output of options like - --key-positions=1,2,$. - (Options::~Options): Update. - - * src/options.h (UPPERLOWER): New enum value. - * src/options.cc (Options::long_usage): Document option --ignore-case. - (Options::~Options): Update. - (long_options): Add option --ignore-case. - (Options::parse_options): Handle option --ignore-case. - * src/input.cc (Input::read_input): Recognize option %ignore-case. - * src/keyword.h (KeywordExt::init_selchars_tuple, - KeywordExt::init_selchars_multiset, KeywordExt::init_selchars_low): - Add alpha_unify argument. - * src/keyword.cc (KeywordExt::init_selchars_low): Add alpha_unify - argument. - (KeywordExt::init_selchars_tuple): Add alpha_unify argument. - (KeywordExt::init_selchars_multiset): Add alpha_unify argument. - * src/search.h (Search::compute_alpha_size, - Search::compute_alpha_unify): New declarations. - (Search::init_selchars_multiset): Add alpha_unify argument. - (Search::_alpha_unify): New field. - * src/search.cc (Search::compute_alpha_size, - Search::compute_alpha_unify): New functions. - (Search::init_selchars_tuple): Update. - (Search::find_positions): Temporarily set _alpha_unify. Perform a - case insensitive comparison if needed. - (Search::init_selchars_multiset): Add alpha_unify argument. - (Search::count_duplicates_multiset): Call compute_alpha_unify. - (Search::find_alpha_inc): Temporarily set _alpha_unify. At the end, - set _alpha_size and _alpha_unify. - (Search::prepare): Update. Don't compute _alpga_size here. - (Search::optimize): Propagate unified asso_values. - (Search::~Search) Delete _alpha_unify. - * src/output.cc (output_upperlower_strcmp, output_upperlower_strncmp, - output_upperlower_memcmp): New functions. - (Output_Compare_Strcmp::output_comparison, - Output_Compare_Strncmp::output_comparison, - Output_Compare_Memcmp::output_comparison): Use the case-insensitive - comparison function if --ignore-case was given. - (Output::output): Emit the auxiliary case-insensitive comparison - function if needed. - * tests/permutc2.gperf, tests/permutc2.exp: New files. - * tests/Makefile.in (check-test): Also check permutc2.gperf. - * tests/test-6.exp: Update. - * doc/gperf.texi (Gperf Declarations): Document %ignore-case. - (Input Details): Document option --ignore-case. - * NEWS: Update. - - * src/search.cc (Search::optimize): Fill unused asso_values[] entries - with a large value. - * src/output.h (Output::Output): Remove occurrences argument. - (Output::_occurrences): Remove field. - * src/output.cc (Output::Output): Remove occurrences argument. - (Output::output_hash_function): Ignore _occurrences. - * src/main.cc (main): Don't pass the _occurrences to Output. - - * src/search.cc (Search::preprepare): Exit if keywords contain - out-of-range characters. - - * src/search.cc (for): Define so as to avoid errors with old compilers. - - * src/options.h (SHAREDLIB): New enum value. - * src/options.cc (Options::short_usage): Mention option -P. - (Options::long_usage): Document option -P. - (long_options): Add option --pic. - (Options::parse_options): Handle option -P/--pic. - * src/output.cc (output_keyword_blank_entries): When SHAREDLIB is - specified, emit NULL pointers instead of "". - (Output::output_lookup_function_body): When SHAREDLIB is specified - and SWITCH and DUP and not specified, test the table entry against - NULL before the string comparison. - * tests/test-6.exp: Update. - * doc/gperf.texi (Output Details): Document option -P. - * NEWS: Update. - Suggested by Ulrich Drepper. - -2002-12-08 Bruno Haible - - * tests/permut2.gperf, tests/permut2.exp: New files. - * tests/permut3.gperf, tests/permut3.exp: New files. - * tests/charsets.gperf: New file, from Bruce Lilly. - * tests/charsets.exp: New file. - * tests/languages.gperf: New file, from Bruce Lilly. - * tests/languages.exp: New file. - * Makefile.in (check-test): Test them all. - - Completely new asso_values search algorithm. - * src/search.h (Search::compute_occurrence, Search::clear_determined, - Search::set_determined, Search::already_determined, Search::reorder): - Remove functions. - (Search::init_asso_values, Search::sort_by_occurrence, - Search::compute_occurrence, Search::sort_by_occurrence, - Search::has_collisions, Search::collision_prior_to): Remove functions. - (Search::compute_partition, Search::count_possible_collisions, - Search::unchanged_partition): New method declarations. - (Search::_determined): Remove field. - * src/search.cc (Search::prepare): Don't initialize _determined. - (Search::compute_occurrence, greater_by_occurrence, - Search::clear_determined, Search::set_determined, - Search::already_determined, Search::reorder): Remove functions. - (Search::init_asso_values, compute_disjoint_union, - Search::sort_by_occurrence, Search::compute_occurrence, - Search::sort_by_occurrence, Search::has_collisions, - Search::collision_prior_to): Remove functions. - (StackEntry): Remove class. - (EquivalenceClass, Step): New classes. - (equals, Search::compute_partition, delete_partition, - Search::count_possible_collisions, Search::unchanged_partition): New - functions. - (Search::find_asso_values): Completely rewritten. - (Search::find_good_asso_values): Don't call reorder(). - (Search::~Search): Don't free _determined. - * src/keyword.h (KeywordExt::_occurrence): Remove field. - * src/options.h (ORDER, FAST, OPT_CHOICE): Remove enum values. - (Options::_iterations): Remove field. - * src/options.icc (Options::get_iterations): Remove method. - * src/options.cc (Options::long_usage): Remove mention of -f and -o. - (Options::Options): Don't initialize _iterations. - (Options::~Options): Update. - (Options::parse_options): Do nothing for options -f, -o, -O. - * doc/gperf.texi: (Contributors): Update. - (Algorithmic Details): Remove options -f and -o. Update description - of option -s. - * tests/c-parse.exp, tests/chill.exp, tests/cplusplus.exp, - tests/gpc.exp, tests/java.exp, tests/modula2.exp, tests/objc.exp, - tests/test-4.exp): Regenerated, smaller than before. - * tests/test-6.exp: Update. - * NEWS: Update. - -2002-12-08 Bruno Haible - - * src/search.h (Search::_alpha_size): Change type to 'unsigned int'. - (Search::_asso_value_max): Likewise. - * src/search.cc (Search::prepare_asso_values): Update. - (Search::init_asso_values): Update. - (Search::~Search): Update. - * src/output.h (Output::Output): Change alpha_size type to - 'unsigned int'. - (Output::_alpha_size): Change type to 'unsigned int'. - * src/output.cc (Output::Output): Change alpha_size type to - 'unsigned int'. - (Output::output_hash_function): Update. - -2002-12-07 Bruno Haible - - * src/options.h (OPT_CHOICE): New enum value. - * src/options.cc (Options::~Options): Update. - (long_options): New option --optimized-collision-resolution. - (Options::parse_options): Accept option -O. - * src/search.h (Search::sort_by_occurrence): Change argument to - 'unsigned int'. - (Search::compute_occurrence, Search::sort_by_occurrence): New method - declarations. - * src/search.cc (Search::sort_by_occurrence): Change argument to - 'unsigned int'. - (Search::compute_occurrence, Search::sort_by_occurrence): New methods. - (Search::find_asso_values): Implement OPT_CHOICE. More debugging - output. - - * src/search.cc (Search::prepare_asso_values) [DEBUG]: Also print - the keyword list in order. - (Search::find_asso_values) [DEBUG]: Upon failure, print the union_set. - - * src/options.h (Options::get_size_multiple): Change return type to - float. - (Options::_size_multiple): Change type to float. - * src/options.icc (Options::get_size_multiple): Change return type to - float. - * src/options.cc (Options::long_usage): Update description of option - -s. - (Options::~Options): Update. - (Options::parse_options): For option -s, accept a fraction. - * src/search.cc (Search::prepare_asso_values): Use get_size_multiple - as it is. - * tests/test-6.exp: Update. - * doc/gperf.texi (Algorithmic Details): Update description of option - -s. - -2002-12-04 Bruno Haible - - Improve debugging output. - * src/hash-table.h (Hash_Table::dump): New method. - * src/hash-table.cc (Hash_Table::dump): New method, extracted from - destructor. - (Hash_Table::~Hash_Table): No longer print the contents. - * src/positions.h (PositionReverseIterator): New class. - * src/positions.icc (PositionReverseIterator::PositionReverseIterator, - PositionReverseIterator::next): New methods. - * src/search.cc (Search::find_positions): If debugging, print the - result. - (Search::find_alpha_inc): If debugging, print the result. - (Search::prepare): Explicitly dump the hash table's contents here. - - Portability fixes. - * src/positions.h (Positions::LASTCHAR, Positions::MAX_KEY_POS, - PositionIterator::EOS): Define as compile-time constants using enum. - * src/bool-array.cc (Bool_Array::~Bool_Array): Remove const qualifier - of pointer to be deleted. - * src/input.cc (Input::~Input): Likewise. - * src/keyword.cc (KeywordExt::delete_selchars): Likewise. - * src/main.cc (main): Likewise. - * src/hash-table.cc (Hash_Table::~Hash_Table): Limit scope of 'for' - variables. - * src/search.cc (Search::prepare_asso_values): Use a static_cast to - convert from time_t to long. This is possible because ISO C 99 says - time_t is a numeric type. - -2002-11-20 Bruno Haible - - * src/search.cc (Search::find_asso_values): Avoid gcc warnings about - uninitialized variables. - - Implement backtracking. - * src/search.h (Search::has_collisions): Renamed from - Search::less_collisions. Return a boolean. - * src/search.cc (Search::has_collisions): Renamed from - Search::less_collisions. Return a boolean. - (StackEntry): Remove field _collisions_so_far. - (Search::find_asso_values): Backtrack when encountering an unresolved - collision. Assume collisions_so_far is always zero. - (Search::optimize): Exit if there are accidental duplicates at the end. - * src/output.cc (Output::num_hash_values): Simply return the list - length. - (Output::output_keylength_table): Remove handling of accidental - duplicates. - (Output::output_keyword_table, Output::output_lookup_array): Likewise. - (output_switch_case, output_switches): Likewise. - * doc/gperf.texi (Algorithmic Details): Adjust description of options - -D, -f, -o, -r. - (Bugs): Remove note about missing backtracking. - (Projects): Likewise. - -2002-11-19 Bruno Haible - - Prepare for backtracking. - * src/search.h (Search::try_asso_value, Search::change_some_asso_value): - Remove declarations. - (Search::less_collisions, Search::collision_prior_to): New declarations. - (Search::_fewest_collisions, Search::_union_set, Search::_num_done): - Remove fields. - * src/search.cc (Search::prepare_asso_values): Don't initialize - _union_set. - (Search::try_asso_value, Search::change_some_asso_value): Remove - methods. - (Search::less_collisions, Search::collision_prior_to): New methods. - (StackEntry): New class. - (Search::find_asso_values): Reorganized to use pseudo-recursion. - (Search::~Search): Don't free _union_set. - - * src/search.h (Search::find_good_asso_values): New declaration. - * src/search.cc: Add comments about the basic structure of the - algorithm. - (Search::find_positions): Move the option[POSITIONS] test to here. - (Search::find_good_asso_values): New method, extracted from - Search::optimize. - (Search::optimize): Remove option[POSITIONS] test. Call - find_good_asso_values. - -2002-11-17 Bruno Haible - - * src/options.cc (Options::parse_options): Include copyright notice - and authors in --version output. - - Avoid artificial duplicates. - * src/keyword.h (KeywordExt::init_selchars_tuple): New declaration. - (KeywordExt::init_selchars_multiset): Renamed from - KeywordExt::init_selchars. - (KeywordExt::init_selchars_low): New declaration. - * src/keyword.cc (KeywordExt::init_selchars_low): Renamed from - KeywordExt::init_selchars. Add alpha_inc argument. Remove sorting. - (KeywordExt::init_selchars_tuple): New method. - (KeywordExt::init_selchars_multiset): New method, replaces - KeywordExt::init_selchars. - * src/search.h (Search::init_selchars_tuple): Renamed from - Search::init_selchars. - (Search::count_duplicates_tuple): Renamed from Search::count_duplicates. - (Search::init_selchars_multiset, Search::count_duplicates_multiset, - Search::find_alpha_inc): New declarations. - (Search::_alpha_inc): New field. - (Search::_alpha_size, Search::_occurrences, Search::_asso_values, - Search::_determined): Make non-const. - * src/search.cc (Search::Search): Don't initialize _key_positions, - _alpha_size, _occurrences, _asso_values, _determined here. - (Search::init_selchars_tuple): Renamed from Search::init_selchars. - (Search::count_duplicates_tuple): Renamed from Search::count_duplicates. - (Search::find_positions): Update. - (Search::init_selchars_multiset, Search::count_duplicates_multiset, - Search::find_alpha_inc): New methods. - (Search::prepare): Move preprepare, find_positions calls away. - Initialize _alpha_size, _occurrences, _asso_values, _determined here. - (Search::optimize): Call preprepare, find_positions here. Initialize - _key_positions here. - (Search::~Search): Deallocate _alpha_inc. - * src/output.cc (Output::Output): Add alpha_inc argument. - (Output::output_hash_function): Use _alpha_inc. - * src/output.h (Output::Output): Add alpha_inc argument. - (Output::_alpha_inc): New field. - * src/main.cc (main): Pass _alpha_inc from Search to Output. - * tests/chill.exp: Update. - * doc/gperf.texi (Algorithmic Details): Remove description of - artificial duplicates. - - * src/keyword.h (KeywordExt::_selchars): Change type to - 'const unsigned int *'. - * src/keyword.cc (sort_char_set): Change argument type to - 'unsigned int *'. - (KeywordExt::init_selchars): Update. - * src/search.h (Search::sort_by_occurrence): Change argument type to - 'unsigned int *'. - (Search::try_asso_value): Change argument type to 'unsigned int'. - (Search::_union_set): Change type to 'unsigned int *'. - * src/search.cc (Search::prepare, Search::compute_occurrence, - Search::set_determined, Search::already_determined, - Search::prepare_asso_values, Search::compute_hash): Update. - (compute_disjoint_union): Change argument types to 'unsigned int *'. - (Search::sort_by_occurrence): Likewise. - (Search::try_asso_value): Change argument type to 'unsigned int'. - (Search::change_some_asso_value, Search::~Search): Update. - * src/hash-table.cc (Hash_Table::~Hash_Table, Hash_Table::equal, - Hash_Table::insert): Update. - - * src/positions.h: New file, extracted from options.h. - * src/positions.icc: New file, extracted from options.icc. - * src/positions.cc: New file, extracted from options.cc. - * src/options.h: Include positions.h. Move classes Positions and - PositionsIterator away. - * src/options.icc: Move classes Positions and PositionsIterator away. - * src/options.cc: Move class Positions away. - * src/keyword.cc: Include positions.h instead of options.h. - * src/output.h: Include positions.h instead of options.h. - * src/search.h: Include positions.h instead of options.h. - * src/Makefile.in (OBJECTS): Add positions.o. - (POSITIONS_H): New variable. - (OPTIONS_H, SEARCH_H, OUTPUT_H, keyword.o): Use it. - (positions.o): New rule. - - * src/options.h (POSITIONS): New enum value. - (Positions::Positions): New copy constructor. - (Positions::operator=, Positions::contains, Position::add, - Positions::remove, Positions::print): New method declaration. - (Options::get_max_keysig_size): Remove method. - * src/options.icc (Positions::Positions): New copy constructor. - (Positions::operator=): New method. - (Options::get_max_keysig_size): Remove method. - * src/options.cc (Options::Options): Initialize _key_positions - trivially. - (Options::parse_options): Option -k sets POSITIONS. - (Positions::contains, Positions::add, Positions::remove, - Positions::print): New methods. - * src/hash-table.cc (Hash_Table::~Hash_Table): Compute the field - width explicitly, instead of using Options::get_max_keysig_size. - * src/keyword.h (KeywordExt::init_selchars): Add arguments - use_all_chars, positions. - (KeywordExt::delete_selchars): New declaration. - * src/keyword.cc (KeywordExt::init_selchars): Add arguments - use_all_chars, positions. Remove error message if there are no key - positions. - (KeywordExt::delete_selchars): New method. - * src/search.h: Include options.h. - (Search::preprepare, Search::init_selchars, Search::delete_selchars, - Search::count_duplicates, Search::find_positions): New declarations. - (Search::_key_positions): New field. - * src/search.cc (Search::Search): Initialize _key_positions. - (Search::preprepare, Search::init_selchars, Search::delete_selchars, - Search::count_duplicates, Search::find_positions): New functions. - (Search::prepare): Call preprepare and find_positions. Tweak error - message. - (Search::get_max_keysig_size): Use _key_positions instead of - option.get_key_positions(). - (Search::optimize): Tweak error message. - * src/output.h: Include options.h. - (Output::Output): Add Positions argument. - (Output::_key_positions): New field. - * src/output.cc (Output::Output): Add Positions argument. - (Output::output_hash_function): Omit the table if there are no - positions at all. Use _key_positions instead of - option.get_key_positions(). - (Output::output): Output the computed positions as a comment. - * src/main.cc (main): Pass the Positions from Searcher to Output. - * src/Makefile.in (SEARCH_H, OUTPUT_H): Include OPTIONS_H. - * tests/Makefile.in (check-test): Pass key positions explicitly. - * tests/gpc.exp: Update. - * tests/test-4.exp: Update. - * doc/gperf.texi (Algorithmic Details): Mention that -k is not needed - usually. - -2002-11-16 Bruno Haible - - * src/options.h (Options::get_slot_name): Renamed from - Options::get_key_name. - (Options::set, Options::set_language, Options::set_total_switches, - Options::set_function_name, Options::set_slot_name, - Options::set_class_name, Options::set_hash_name, - Options::set_wordlist_name, Options::set_delimiters): New method - declarations. - (Options::_language): New field. - (Options::_slot_name): Renamed from Options::_key_name. - * src/options.icc (Options::set): New method. - (Options::get_slot_name): Renamed from Options::get_key_name. - * src/options.cc (DEFAULT_FUNCTION_NAME): Renamed from DEFAULT_NAME. - (DEFAULT_SLOT_NAME): Renamed from DEFAULT_NAME. - (Options::Options): Initialize _language. Update. - (Options::~Options): Update. - (Options::set_language, Options::set_total_switches, - Options::set_function_name, Options::set_slot_name, - Options::set_class_name, Options::set_hash_name, - Options::set_wordlist_name, Options::set_delimiters): New methods. - (Options::parse_options): Call set_language. Update. - * src/input.cc (is_declaration, is_declaration_with_arg, - is_define_declaration): New functions. - (Input::read_input): Accept %DECL declarations. - * src/output.cc (Output::output_lookup_function_body): Update. - * doc/gperf.texi (Declarations): Add new subnodes. - (User-supplied Struct, Gperf Declarations, C Code Inclusion): New - nodes. - (Keywords, Output Format, Binary Strings, Options): Mention % - declarations as being equivalent to the command line options. - - * src/options.cc (Options::long_usage): Rename options -H, -N, -l, -G. - (long_options): Add --hash-function-name, --lookup-function-name, - --compare-lengths. - * doc/gperf.texi (Output Details): Rename options -H, -N, -l, -G. - * tests/test-6.exp: Update. - - * src/options.cc (DEFAULT_DELIMITERS): Remove newline. - * src/options.cc (Options::long_usage): Change default --delimiters. - * doc/gperf.texi (Input Details): Likewise. - * tests/test-6.exp: Update. - - * doc/gperf.texi: Move description of option -l from section - Algorithmic Details to section Output Details. - * src/options.cc (Options::long_usage): Likewise. - * tests/test-6.exp: Update. - -2002-11-12 Bruno Haible - - * src/options.h (Output::get_output_file_name): New method. - (Output::_output_file_name): New field. - * src/options.icc (Options::get_output_file_name): New method. - * src/options.cc (Options::long_usage): Document option --output-file. - (Options::Options): Initialize _output_file_name. - (long_options): Add --output-file. - (Options::parse_options): Handle it. - * src/main.cc (main): Open the output file if given by name. - * doc/gperf.texi (Output File): New section. - * tests/test-6.exp: Update. - -2002-11-10 Bruno Haible - - * src/input.cc (pretty_input_file_name): New function. - (read_input): Use it in all error and warning messages. - - * src/keyword.h (Keyword::_lineno): New field. - * src/input.h (Input::_struct_decl_lineno): New field. - * src/input.cc (Input::read_input): Set _struct_decl_lineno. Fill - each keyword's _lineno field. - * src/main.cc (main): Pass _struct_decl_lineno from Input to Output. - * src/output.h (Output::Output) Add struct_decl_lineno argument. - (Output::_struct_decl_lineno): New field. - * src/output.cc (Output::Output) Add struct_decl_lineno argument. - (output_keyword_entry): Emit #line directive before table entry. - (Output::output): Emit #line directive before _struct_decl. - - Fix memory leaks. - * src/keyword.h (empty_string): New declaration. - * src/keyword.cc (empty_string): New variable. - * src/input.h (Input::_input): Make public. - (Input::_input_end): New field. - * src/input.cc (read_input): When removing leading whitespace from - struct_decl, reallocate it. For rest, use empty_string instead of "". - Set _input_end. - (Input::~Input): Delete _struct_decl, _struct_tag, _return_type. - * src/search.cc (Search::prepare): When removing an element from - the keyword list, delete the list node. - (Search::~Search): Delete _occurrences, _asso_values. - * src/main.cc (main): Between Search::~Search and Input::~Input, - destroy the keyword list. - - Rewrite the input routines. - * src/input.h: Don't include read-line.h. - (Input): Don't inherit from class Read_Line. - (Input::read_keys, Input::strcspn, Input::set_output_types, - Input::get_array_type, Input::save_include_src, - Input::get_special_input): Remove declarations. - (Input::read_input): New declaration. - (Input::_struct_decl): Renamed from Input::_array_type. - (Input::_verbatim_declarations): Renamed from Input::_include_src. - (Input::_verbatim_code): Replaces Input::_additional_code. - * src/input.cc: Completely rewritten. - * src/output.h (Output::Output): Update the verbatim_* arguments. - (Output::_struct_decl): Renamed from Output::_array_type. - (Output::_verbatim_declarations): Renamed from Output::_include_src. - (Output::_verbatim_code): Replaces Output::_additional_code. - * src/output.cc (Output::Output): Update the verbatim_* arguments. - (Output::output): Output the verbatim_* code pieces with #line. - * src/main.cc (main): Call Input::read_input instead of - Input::read_keys. Update Output::Output arguments. - * src/read-line.h: Remove file. - * src/read-line.cc, src/read-line.icc: Remove files. - * src/Makefile.in (OBJECTS): Remove read-line.o. - (READ_LINE_H): Remove variable. - (INPUT_H): Update. - (read-line.o): Remove rule. - * doc/gperf.texi (Declarations): Correct the example. - (Keywords): Mention that lines starting with % are forbidden here. - * tests/c-parse.exp: Update. - * tests/cplusplus.exp: Update. - * tests/gpc.exp: Update. - * tests/java.exp: Update. - * tests/objc.exp: Update. - * tests/test-4.exp: Update. - - * src/options.h (Options::get_input_file_name): New declaration. - (Options::_input_file_name): New field. - * src/options.icc (Options::get_input_file_name): New method. - * src/options.cc (Options::Options): Initialize _input_file_name. - (Options::parse_options): Don't open input file, only store it in - _input_file_name. - * src/main.cc (main): Open input file here. - Print an error message upon write error on the output file. - - Upgrade to autoconf-2.52. - * configure.in: Use AC_CONFIG_SUBDIRS instead of AC_OUTPUT_SUBDIRS. - * Makefile.devel (configure, lib/configure, src/configure, - tests/configure, doc/configure): Use autoconf-2.52. - -2002-11-09 Bruno Haible - - * doc/gperf.texi: Talk about "bytes" instead of "characters". Talk - about "keywords", not "keys". Talk about "input file", not "keyfile". - (@menu): Fix a menu entry. - (Contributors): Don't mention cperf. - (Motivation): Fix an off-by-one error in the definition of "minimal". - Mention GNU Java. Recommend http URL instead of anonymous ftp. - (Search Structures): Mention GNU Java. - (Output Format): Drop reference to node 'Implementation'. - (Output Details): Talk about "slot-name" instead of "key name". - (Algorithmic Details): Talk about "selected byte positons", not - "key positions". Upper limit is now 255. Explain a third reason - why duplicates can occur. Describe negative effects of - --occurrence-sort. - (Implementation): Remove chapter. - -2002-11-07 Bruno Haible - - * src/bool-array.cc (Bool_Array::~Bool_Array): Free _storage_array. - * src/search.cc (Search::~Search): Free _union_set, _determined. - - * tests/Makefile.in (check-test): Don't redirect stderr. - -2002-11-05 Bruno Haible - - * src/keyword-list.h (mergesort_list): New declarations. - * src/keyword-list.cc (Keyword_Comparison): New type. - (merge, mergesort_list): New functions, moved here from search.cc. - * src/search.h (Search::merge, Search::merge_sort): Remove methods. - (Search::_occurrence_sort, Search::_hash_sort): Remove fields. - * src/search.cc (Search::merge, Search::merge_sort): Remove methods. - (greater_by_occurrence, less_by_hash_value): New functions. - (Search::reorder, Search::sort): Use mergesort_list. - -2002-11-04 Bruno Haible - - * src/options.h (Options::_asso_iterations): New field. - (Options::get_asso_iterations): New method declaration. - * src/options.icc (Options::get_asso_iterations): New method. - * src/options.cc (Options::short_usage): Mention j and m. - (Options::long_usage): Document option -m. - (Options::Options): Initialize _asso_iterations. - (Options::~Options): Print _asso_iterations too. - (long_options): Add --multiple-iterations. - (Options::parse_options): Handle option -m. - * src/keyword-list.h (copy_list, delete_list): New declarations. - * src/keyword-list.cc (copy_list, delete_list): New functions. - * src/search.h (Search::_initial_asso_value, Search::_jump): New fields. - * src/search.cc (Search::prepare_asso_values): Initialize - _initial_asso_value and _jump here. - (Search::init_asso_values): Use _initial_asso_value. - (Search::try_asso_value): Use _jump. - (Search::optimize): If option -m was given, iterate over different - values for _initial_asso_value and _jump. - * doc/gperf.texi (Algorithmic Details): Document option -m. - * tests/test-6.exp: Update. - -2002-11-03 Bruno Haible - - Bug fix: When option -j 0 was used without option -r, the output was - not random. - * src/search.h (Search::prepare_asso_values): New method declaration. - * src/search.cc (Search::prepare_asso_values): New method, extracted - from Search::init_asso_values. Call srand also when "-j 0" was given. - (Search::optimize): Call prepare_asso_values(). - - * src/hash-table.h (Hash_Table::_ignore_length, Hash_Table::equal): - Declare as const. - * src/hash-table.cc (Hash_Table::equal): Declare as const. - * src/input.h (Input::_factory): Declare as const. - * src/keyword-list.h (Keyword_List::first, KeywordExt_List::first): - Declare as const. - * src/keyword-list.icc (Keyword_List::first, KeywordExt_List::first): - Declare as const. - * src/output.h (Output::num_hash_values, Output::output_constants, - Output::output_hash_function, Output::output_keylength_table, - Output::output_keyword_table, Output::output_lookup_array, - Output::output_lookup_tables, Output::output_lookup_function_body, - Output::output_lookup_function, Output::_array_type, - Output::_additional_code, Output::_include_src, Output::_total_keys, - Output::_total_duplicates, Output::_max_key_len, Output::_min_key_len): - Declare as const. - * src/output.cc (Output::num_hash_values, Output::output_constants, - Output::output_hash_function, Output::output_keylength_table, - Output::output_keyword_table, Output::output_lookup_array, - Output::output_lookup_tables, Output::output_lookup_function_body, - Output::output_lookup_function): Declare as const. - * src/search.h (Search::merge, Search::merge_sort, - Search::compute_occurrence, Search::already_determined, - Search::keyword_list_length, Search::max_key_length, - Search::get_max_keysig_size, Search::compute_hash, - Search::sort_by_occurrence): Declare as const. - * src/search.cc (Search::merge, Search::merge_sort, - Search::compute_occurrence, Search::already_determined, - Search::keyword_list_length, Search::max_key_length, - Search::get_max_keysig_size, Search::compute_hash, - Search::sort_by_occurrence): Declare as const. - - * src/output.cc (Output::output): Set char_to_index to a cast in all - cases. Avoids gcc warnings on the generated code. - - * src/output.cc (Output_Enum): Prepend an underscore to field names. - (Output_Expr1): Likewise. - (Output::output_hash_function): Simplify the special case for "-k 1,$". - - * src/search.h (Search::init_asso_values, Search::find_asso_values): - New declarations. - (Search::try_asso_value): Renamed from Search::affects_prev. - (Search::change_some_asso_value): Renamed from Search::change. - (Search::set_asso_max, Search::get_asso_max): Remove methods. - (Search::_union_set): New field. - * src/search.cc (Search::init_asso_values): New method, extracted - from Search::optimize. - (Search::try_asso_value): Renamed from Search::affects_prev. Take the - iteration count as argument. - (Search::change_some_asso_value): Renamed from Search::change. Don't - make union_set static. Don't increment _fewest_collisions here. - (Search::find_asso_values): New method, extracted from - Search::optimize. - (Search::optimize); Update. - - * src/search.h (Search::compute_hash): Renamed from Search::hash. - (Search::compute_disjoint_union): Remove declaration. - (Search::sort_by_occurrence): Renamed from Search::sort_set. - * src/search.cc (Search::compute_hash): Renamed from Search::hash. - (compute_disjoint_union): Renamed from Search::compute_disjoint_union. - (Search::sort_by_occurrence): Renamed from Search::sort_set. - (Search::change): Simplify loop. - - * src/search.h (Search::clear_determined): New declaration. - * src/search.cc (Search::clear_determined): New method. - (Search::already_determined): Optimize. - (Search::reorder): Even when the next keyword after the current one - is completely determined, move all determined keywords after the - current one. - - Compute the occurrences after removal of duplicates, not before. - * src/keyword.h (KeywordExt::init_selchars): Remove occurrences - argument. - * src/keyword.cc (KeywordExt::init_selchars): Likewise. - * src/search.cc (Search::prepare): Reorder the code. Compute the - occurrences after removal of duplicates. - (Search::merge_sort): Optimize the loop. - (Search::compute_occurrence): Renamed from Search::get_occurrence. - * src/search.h (Search::compute_occurrence): Renamed from - Search::get_occurrence. - * tests/chill.exp: Regenerated. - - Bug fix: The hash table could fail to detect duplicates, between - keywords of different length, when option -n (option[NOLENGTH]) was - given. - * src/hash-table.h (Hash_Table::Hash_Table): Pass table size, not - vector and vector size as arguments. - (Hash_Table::_log_size): New field. - (Hash_Table::equal): New declaration. - * src/hash-table.cc (size_factor): New variable. - (Hash_Table::Hash_Table): Pass table size, not vector and vector size - as arguments. Allocate the vector here. - (Hash_Table::~Hash_Table): Deallocate the vector here. - (Hash_Table::equal): New function. - (Hash_Table::insert): Use it. Don't use item->_allchars_length for the - increment if _ignore_length is true. - * src/search.cc (TABLE_MULTIPLE): Remove variable. - (Search::prepare): Update. - -2002-11-02 Bruno Haible - - Provide documentation also in PDF format. - * doc/Makefile.in (pdfdir, TEXI2PDF): New variables. - (all): Depend on pdf. - (pdf, gperf.pdf): New rules. - (maintainer-clean): Remove the PDF file. - - * src/keyword-list.icc: New file, extracted from keyword-list.h. - * src/keyword-list.h: Include keyword-list.icc. Move inline methods - to there. - * src/keyword-list.cc: Include keyword-list.icc. - * src/Makefile.in (KEYWORD_LIST_H): Add keyword-list.icc. - - * lib/hashpjw.h (hashpjw): Change argument type to 'unsigned char *'. - * lib/hash.cc (hashpjw): Likewise. - * src/keyword.icc: New file. - * src/keyword.h: Include keyword.icc. - (KeywordExt::_selchars): Change type to 'unsigned char *'. - * src/keyword.cc: Include keyword.icc. - (Keyword::Keyword, KeywordExt::KeywordExt): Move to keyword.icc. - (sort_char_set): Change argument type to 'unsigned char *'. - (KeywordExt::init_selchars): Update. - * src/search.h (Search::compute_disjoint_union): Change argument types - to 'unsigned char *'. - (Search::sort_set): Likewise. - (Search::affects_prev): Change argument type to 'unsigned char'. - * src/search.cc (Search::prepare): Initialize _duplicate_link here. - (Search::get_occurrence, Search::set_determined, - Search::already_determined, Search::hash): Update. - (Search::compute_disjoint_union): Change argument types to - 'unsigned char *'. - (Search::sort_set): Likewise. - (Search::affects_prev): Change argument type to 'unsigned char'. - (Search::change): Update. - * src/Makefile.in (KEYWORD_H): Add keyword.icc. - - * src/options.cc (Options::parse_options): Fix error message. - - * src/read-line.h (Read_Line::Read_Line): Make FILE* argument - mandatory. Move body to read-line.icc. - * src/read-line.icc (Read_Line::Read_Line): New constructor. - * src/input.h (Input::Input): Add FILE* argument. - * src/input.cc (Input::Input): Likewise. - * src/main.cc (main): Pass stdin to Input constructor. - - * src/options.h (DEFAULTCHARS): Remove. - (Positions::MAX_KEY_POS): Set to 255. - (Positions::_positions): Increase array size. - (PositionIterator::EOS): Set to -1. - (PositionIterator::_index): Change type to 'unsigned int'. - * src/options.icc (Positions::Positions): Don't store - PositionIterator::EOS. - (PositionIterator::next): Produce PositionIterator::EOS here. - * src/options.cc (Options::long_usage): Use MAX_KEY_POS, not - MAX_KEY_POS-1. - (PositionStringParser): Rename field _size to _in_range. Rename - field _curr_value to _range_curr_value. Rename field _upper_bound - to _range_upper_bound. - (PositionStringParser::nextPosition): Comments. - (Options::Options): Update. - (Options::~Options): Update. - (long_options): Use NULL, not 0. - (Options::parse_options): Set BAD_VALUE to -2; -1 is now EOS. Bug fix: - Check against array overflow when more than MAX_KEY_POS positions are - given. Don't store PositionIterator::EOS. - Check against extra arguments before opening the input file. - * src/output.cc (Output::output_hash_function): Change test which - was for option[DEFAULTCHARS]. - * tests/test-6.exp: Update. - - * src/options.h (Options::get_delimiters): Renamed from - Options::get_delimiter. - * src/options.icc (Options::get_delimiters): Renamed from - Options::get_delimiter. - * src/input.cc (Input::read_keys): Update. - - Bug fix. - * src/options.cc (Options::print_options): Escape backquote inside - double-quoted strings. - - Bug fix. - * src/keyword.cc (KeywordExt::init_selchars): Avoid comparison with - uninitialized member variable. Found with 'valgrind'. - - * src/version.cc: Include version.h. - * src/Makefile.in (OBJECTS): Reorder. - (KEYWORD_H, KEYWORD_LIST_H, INPUT_H, SEARCH_H, OUTPUT_H): New - variables. - (HASH_TABLE_H): Update. - (options.o, read-line.o, keyword.o, keyword-list.o, input.o, search.o, - output.o, main.o): Update dependencies. - - * src/vectors.h: Remove file. - * src/vectors.cc: Remove file. - * src/search.h: Don't include vectors.h. - (Search): Don't inherit from Vectors. New fields _alpha_size, - _occurrences, _asso_values. - (Search::_determined, Search::get_occurrence, Search::set_determined, - Search::already_determined, Search::hash, Search::sort_set): Make - nonstatic. - * src/search.cc (Search::Search): Initialize _alpha_size, _occurrences, - _asso_values, _determined. - (Search::optimize, Search::~Search): Update. - * src/output.h: Don't include vectors.h. - (Output): Remove field _v. New fields _alpha_size, _occurrences, - _asso_values. - (Output::Output): Replace Vectors* argument with alpha_size, - occurrences, asso_values. - * src/output.cc (Output::Output): Replace Vectors* argument with - alpha_size, occurrences, asso_values. - (Output::output_hash_function): Update. - * src/main.cc (main): Don't set Vectors::ALPHA_SIZE. - Pass _alpha_size, _occurrences, _asso_values from Search to Output. - * src/keyword.h: Don't include vectors.h. - * src/Makefile.in (OBJECTS): Remove vectors.o. - (VECTORS_H): Remove variable. - (vectors.o): Remove rule. - - * src/search.h: New file, combines src/key-list.h, src/gen-perf.h. - * src/search,cc: New file, combines src/key-list.cc, src/gen-perf.cc. - * src/key-list.h: Remove file. - * src/key-list.cc: Remove file. - * src/gen-perf.h: Remove file. - * src/gen-perf.cc: Remove file. - * src/main.cc (KeywordExt_Factory): Moved here from gen-perf.cc. - (main): Inline some code from gen-perf.cc. - * src/keyword.h (KeywordExt::init_selchars): Take the occurrences - vector as argument. - * src/keyword.cc (KeywordExt::init_selchars): Take the occurrences - vector as argument. - * src/input.cc (Input::set_output_types): Initialize _array_type, - _return_type, _struct_tag. - (Input::read_keys): Initialize _additional_code. - * src/Makefile.in (OBJECTS): Add search.o. - Remove key-list.o, gen-perf.o. - (KEY_LIST_H, GEN_PERF_H): Remove variables. - (gen-perf.o, key-list.o): Remove rules. - (search.o): New rule. - - * *, */*: Update copyright notice to GPL version 2. - - * src/keyword-list.h (Keyword_List): New class. - (KeywordExt_List): Inherit from it. - * src/keyword-list.cc (Keyword_List::Keyword_List): New constructor. - (KeywordExt_List::KeywordExt_List): Update. - * src/input.h (Input::Input): Add Keyword_Factory argument. - (Input::_factory): New field. - (Input::_head): Change type to Keyword_List*. - (Input::parse_line): New declaration. - * src/input.cc (Input::Input): New constructor. - (Input::parse_line): Renamed from parse_line. Use the _factory. - (Input::read_keys): Update. - * src/key-list.cc (KeywordExt_Factory): New class. - (Key_List::read_keys): Pass a KeywordExt_Factory as Input constructor - argument. - - Avoid g++ -Wold-style-cast warnings. - * src/bool-array.icc: Use new-style casts. - * src/gen-perf.cc: Likewise. - * src/input.cc: Likewise. - * src/key-list.cc: Likewise. - * src/keyword.cc: Likewise. - * src/options.cc: Likewise. - * src/output.cc: Likewise. - * src/hash-table.cc: Likewise. Remove (char *) cast in memset argument. - - * src/keyword-list.h (KeywordExt_List): Don't inherit from KeywordExt. - (KeywordExt_List::KeywordExt_List): Take a KeywordExt* as argument. - (KeywordExt_List::_car): New field. - (KeywordExt_List::first): Use it. - * src/keyword-list.cc (KeywordExt_List::KeywordExt_List): Take a - KeywordExt* as argument. - * src/input.cc (parse_line): Create the KeywordExt separately. - - Start using bool. - * src/bool-array.h (Bool_Array::set_bit): Change return type to bool. - * src/bool-array.icc (Bool_Array::set_bit): Likewise. - * src/gen-perf.h (Gen_Perf::affects_prev): Likewise. - * src/gen-perf.cc (Gen_Perf::affects_prev): Likewise. - * src/hash-table.h (Hash_Table::_ignore_length): Change type to bool. - (Hash_Table::Hash_Table): Change 3rd argument type to bool. - * src/hash-table.cc (Hash_Table::Hash_Table): Likewise. - * src/input.h (Input::_additional_code): Change type to bool. - * src/input.cc (Input::read_keys): Update. - * src/key-list.h (Key_List::_occurrence_sort, Key_List::_hash_sort, - Key_List::_additional_code): Change type to bool. - (Key_List::_determined): Change element type to bool. - (Key_List::already_determined): Change return type to bool. - * src/key-list.cc (Key_List::_determined): Change element type to bool. - (Key_List::set_determined): Update. - (Key_List::already_determined): Change return type to bool. - (Key_List::reorder, Key_List::sort, Key_List::Key_List): Update. - * src/options.h (Positions::sort): Change return type to bool. - (Options::operator[]): Likewise. - * src/options.icc (Positions::sort): Change return type to bool. - (Options::operator[]): Likewise. - * src/output.h (Output::Output): Change 5th argument type to bool. - (Output::_additional_code): Change type to bool. - * src/output.cc (Output::Output): Change 5th argument type to bool. - -2002-10-16 Bruno Haible - - * src/*.h: Align all member names at column 24. - -2002-10-15 Bruno Haible - - * src/input.h: New file. - * src/input.cc: New file, extracted from key-list.cc. - * src/key-list.h (Key_List): Don't inherit from Read_Line. - (Key_List::get_special_input, - Key_List::save_include_src, Key_List::get_array_type, - Key_List::strcspn, Key_List::set_output_types): Remove methods. - * src/key-list.cc (Key_List::get_special_input, - Key_List::save_include_src, Key_List::get_array_type, - Key_List::strcspn, Key_List::set_output_types, parse_line): Move to - src/input.cc. - (Key_List::read_keys): Use Input::read_keys. - (Key_List::Key_List): Update. - * src/gen-perf.cc: Update. - * src/Makefile.in (OBJECTS): Add input.o. - (input.o): New rule. - -2002-10-14 Bruno Haible - - * src/options.cc: Don't include "vector.h". - (Options::parse_options): Don't initialize Vectors::ALPHA_SIZE here. - * src/vectors.cc (Vectors::ALPHA_SIZE): Don't initialize here. - * src/gen-perf.cc (Gen_Perf::Gen_Perf): Initialize Vectors::ALPHA_SIZE. - - * src/options.h (Positions): New class. - (PositionIterator): New class. - (Options::parse_options): Renamed from Options::operator(). - (Options::get_asso_max, Options::set_asso_max): Move to class Key_List. - (Options::reset, Options::get): Remove, replaced by class - PositionIterator. - (Options::get_initial_asso_value): Renamed from Options::initial_value. - (Options::key_sort): Remove, replaced by Positions::sort. - (Options): Make all fields and methods non-static. - * src/options.icc (Positions::Positions, Positions::operator[], - Positions::get_size, Positions::pointer, Positions::set_size, - Positions::sort, PositionIterator::PositionIterator, - PositionIterator::next): New methods. - (Options::get_initial_asso_value): Renamed from Options::initial_value. - (Options::get_size_multiple): New method. - (Options::get_key_positions): New method. - (Options::get_max_keysig_size): Implement using _key_positions. - * src/options.cc (Options::long_usage): Split big string into small - pieces. - (PositionStringParser): Prefix field names with _. - (Options::Options): Update. - (Options::~Options): Fix explanation of of _size_multiple. Don't print - _key_positions if it is effectively ignored. - (Options::parse_options): Renamed from Options::operator(). Update. - * src/key-list.h (Key_List): New field _size. New methods get_asso_max, - set_asso_max, get_max_keysig_size. - * src/key-list.cc (Key_List::read_keys): Don't make side effects on - options. - (Key_List::dump): Use Key_List::get_max_keysig_size() instead of - Options::get_max_keysig_size(). - (Key_List::get_max_keysig_size): New function. - * src/hash-table.cc (Hash_Table::~Hash_Table): Compute the field - width on the fly if option[ALLCHARS]. - * src/gen-perf.cc (Gen_Perf::Gen_Perf): Update, - Use Options::get_size_multiple() instead of Options::get_asso_max(). - Use Key_List::get_asso_max() instead of Options::get_asso_max(). Use - Key_List::get_max_keysig_size() instead of - Options::get_max_keysig_size(). - (Gen_Perf::affects_prev): Likewise. - (Gen_Perf::change): Likewise. - * src/keyword.cc: Update. - * src/main.cc: Update. - * src/output.cc: Update. - * tests/test-6.exp: Update. - -2002-10-13 Bruno Haible - - * src/bool-array.*: Some polishing. - - * src/options.h (Options::operator=, Options::operator!=): Remove - unused methods. - * src/options.icc (Options::operator=, Options::operator!=): Remove. - - * src/*.h: Prefix all field names with _. - * src/*.cc, src/*.icc: Update. - - * src/*: Simplify declarations of functions without arguments. - -2002-10-04 Bruno Haible - - * src/output.h: New file, extracted from key-list.h. - * src/output.cc: New file, extracted from key-list.cc. - * src/key-list.h (Key_List): Make some fields protected. Move output - routines to src/output.h. - * src/key-list.cc: Move output routines to src/output.cc. - * src/gen-perf.cc (Gen_Perf::doit_all): Use class Output. - * src/Makefile.in (OBJECTS): Add output.o. - (output.o): New rule. - -2002-10-03 Bruno Haible - - * src/iterator.h: Remove file. - * src/iterator.cc: Remove file. - * src/options.cc: (PositionStringParser): New class, taken from old - iterator.cc. - * src/Makefile.in (OBJECTS): Remove iterator.o. - (ITERATOR_H): Remove variable. - (iterator.o): Remove rule. - - * src/keyword-list.h: New file. - * src/keyword-list.cc: New file. - * src/list-node.h: Remove file. - * src/list-node.cc: Remove file. - * src/keyword.h (KeywordExt::init_selchars): New declaration. - * src/keyword.cc (sort_char_set, KeywordExt::init_selchars): New, from - old list-node.cc. - * src/gen-perf.cc: Replace List_Node by KeywordExt or KeywordExt_List, - as appropriate. - * src/hash-table.h: Likewise. - * src/key-list.h: Likewise. - * src/key-list.cc: Likewise. - * src/Makefile.in (OBJECTS): Remove list-node.o, add keyword-list.o. - (LIST_NODE_H): Remove macro. - (list-node.o): Remove rule. - (keyword-list.o): New rule. - - * src/keyword.h (KeywordExt): New class. - * src/keyword.cc (KeywordExt): New constructor. - * src/list-node.h (List_Node): Inherit from KeywordExt. - * src/list-node.cc: Update. - * src/gen-perf.cc: Update. - * src/hash-table.cc: Update. - * src/key-list.cc: Update. - (output_keyword_entry): Change argument type to KeywordExt*. - - * src/keyword.h: New file. - * src/keyword.cc: New file. - * src/list-node.h (List_Node): Extend Keyword. - * src/list-node.cc: Update. - * src/gen-perf.cc: Update. - * src/hash-table.cc: Update. - * src/key-list.cc: Update. - * src/Makefile.in (OBJECTS): Add keyword.o. - (keyword.o): New rule. - - * src/key-list.cc (Key_List::read_keys): Allocate the memory for the - hash table using 'new'. - (Key_List::output_lookup_array): Allocate the memory for the duplicates - array using 'new'. - * src/options.h (LARGE_STACK_ARRAYS): Remove definition. - * src/main.cc (main): Remove setrlimit call. - * src/configure.in: Don't test for unistd.h, sys/time.h, - sys/resource.h, getrlimit, setrlimit. - - * src/bool-array.h (Bool_Array): Make all members non-static. - Add an argument to the constructor. Remove init(), rename reset() to - clear(), rename find() to set_bit(). - * src/bool-array.icc: Move init() code into the constructor. - Rename reset() to clear(), rename find() to set_bit(). - * src/gen-perf.h (Gen_Perf): Add collision_detector member. - * src/gen-perf.cc: Update. - - * src/gen-perf.h (Gen_Perf::doit_all): Renamed from - Gen_Perf::operator (). - * src/gen-perf.cc (Gen_Perf::doit_all): Renamed from - Gen_Perf::operator (). - * src/main.cc: Update. - - * src/read-line.h (Read_Line::read_next_line): Renamed from - Read_Line::get_line. - * src/read-line.icc: Likewise. - * src/read-line.cc: Update. - * src/key-list.cc: Update. - - * lib/getline.h: New file. - * lib/getline.cc: New file. - * lib/Makefile.in (OBJECTS): Add getline.o. - (getline.o): New rule. - * src/read-line.h (Read_Line::readln_aux): Remove declaration. - * src/read-line.cc (Read_Line::readln_aux): Remove function. - * src/read-line.icc (Read_Line::get_line): Use ::get_line. - * src/options.h (LARGE_STACK): Remove macro. - - * src/bool-array.h (STORAGE_TYPE): Remove type. - Use 'unsigned int' instead of STORAGE_TYPE. - * src/bool-array.cc: Likewise. - * src/bool-array.icc: Likewise. - * src/gen-perf.cc: Likewise. - - * src/new.cc: Remove file. - * src/Makefile.in (OBJECTS): Remove new.o. - (new.o): Remove rule. - * src/configure.in: Remove test for HAVE_THROW_DECL. - * acconfig.h: Remove file. - - * src/trace.h: Remove file. - * src/trace.cc: Remove file. - * src/Makefile.in (OBJECTS): Remove trace.o. - (TRACE_H): Remove variable. - (trace.o): Remove rule. - Update all dependencies. - * src/bool-array.h, src/bool-array.cc, src/bool-array.icc: Don't use T. - * src/gen-perf.cc: Likewise. - * src/hash-table.cc: Likewise. - * src/iterator.cc: Likewise. - * src/key-list.cc: Likewise. - * src/list-node.cc: Likewise. - * src/main.cc: Likewise. - * src/new.cc: Likewise. - * src/options.h, src/options.cc, src/options.icc: Likewise. - * src/read-line.h, src/read-line.cc, src/read-line.icc: Likewise. - - * tests/Makefile.in: Use gperf option -I, to avoid gcc-3.x warnings. - * tests/test.c: Don't use gets(), to avoid warnings. - -2001-08-02 Bruno Haible - - * doc/gperf.texi: Change bug report address to . - * README: Updated. - -2000-12-18 Bruno Haible - - * src/configure.in: Add check for rand() in libm. Needed for BeOS. - * src/Makefile.in (LIBS): Use @GPERF_LIBM@ instead of hardwiring -lm. - -2000-11-20 Bruno Haible - - * doc/help2man: Update to version 1.23. - -2000-09-26 Bruno Haible - - * gperf-2.7.2 released. - - * doc/gperf.texi: Add a second bug report address - . - * README: Updated. - -2000-08-28 Bruno Haible - - * lib/getopt.h (struct option): Use "const" also when compiling in - C++ mode. Avoids warnings from Sun CC and HP-UX aCC. - - * doc/Makefile.in (docdir): Change from $(datadir)/doc/@PACKAGE@ to - $(prefix)/doc/@PACKAGE@, following the newest GNU standards. - -2000-08-20 Bruno Haible - - * src/version.cc: Bump version number to 2.7.2. - * doc/gperf.texi: Likewise. - - * doc/texinfo.tex: Update to post-texinfo-4.0 version. @code in the - title page now chooses a larger font. The overall layout of the - text is denser. - - * AUTHORS: New file. - - * tests/Makefile.in (all): Add check-lang-utf8 and check-lang-ucs2. - (check-lang-utf8, check-lang-ucs2): New targets. - (clean): Remove lu8out and lu2out. - * tests/lang-utf8.gperf, tests/lang-utf8.exp: New files. - * tests/lang-ucs2.gperf, tests/test2.c, tests/lang-ucs2.in, - tests/lang-ucs2.exp: New files. - - Allow the use of embedded NULs in keys. - * lib/hash.h (hashpjw): Add a length argument. - * lib/hash.cc (hashpjw): Likewise. Don't stop when encountering a NUL - character. - * src/hash-table.h (Hash_Table constructor): Add ignore_len argument. - (Hash_Table::ignore_length): New field. - (Hash_Table::insert): Renamed from Hash_Table::operator(). Remove - ignore_length argument. - * src/hash-table.cc (NIL): Remove macro. - (Hash_Table constructor): Add ignore_len argument. Use it to - initialize ignore_length. - (Hash_Table destructor): Specify explicit length of char_set and - key. - (Hash_Table::insert): Renamed from Hash_Table::operator(). Remove - ignore_length argument. Pass explicit length to hashpjw. Compare - char_set using memcmp, not strcmp. - * src/list-node.h (List_Node): Rename field length to key_length. - New field char_set_length. - (List_Node constructor): Accept key and rest, not the entire line. - * src/list-node.cc (List_Node constructor): Accept key and rest, not - the entire line. Don't NUL terminate key and char_set. Specify - explicit length of key. Initialize char_set_length field. - * src/key-list.cc: Include . - (parse_line): New function. - (Key_List::read_keys): Call parse_line instead of new List_Node. - Pass option[NOLENGTH] to Hash_Table constructor, not - Hash_Table::insert. Specify explicit length of key and char_set. - (Key_List::get_occurrence): Use explicit length of char_set. - (Key_List::set_determined): Likewise. - (Key_List::already_determined): Likewise. - (output_string): Add length argument. Output unprintable characters - using octal escape sequence. - (output_keyword_entry): Use explicit length of key. - (Key_List::output_lookup_array): Specify explicit length of key. - (output_switch_case): Likewise. - (Key_List::dump): Likewise. - * src/gen-perf.h (Gen_Perf::compute_disjoint_union): Add two length - arguments. - * src/gen-perf.cc (Gen_Perf::compute_disjoint_union): Likewise. Don't - stop when encountering NUL characters. Don't NUL terminate the - result. - (Gen_Perf::hash): Use explicit length of char_set. - (Gen_Perf::change): Specify explicit length of key. - * doc/gperf.texi: Document it. - - * doc/help2man: New file, help2man version 1.022. - * Makefile.devel (all): Add doc/gperf.1. - (doc/gperf.1): New target. - * doc/gperf.1: Automatically generated. - - * mkinstalldirs: New file, from automake-1.4, grep-2.4.1, guile-1.4, - libtool-1.3.3, make-3.79.1, tar-1.13. - * src/Makefile.in (MKINSTALLDIRS): New variable. - (install, installdirs): Use it instead of mkdir. - * doc/Makefile.in (MKINSTALLDIRS): New variable. - (install, installdirs): Use it instead of mkdir. - - * INSTALL: Update. - -2000-08-19 Bruno Haible - - * src/key-list.cc (Output_Compare_Memcmp): New class. - (Key_List::output_lookup_function): When option -l is given, use - memcmp instead of strcmp or strncmp. - - * doc/gperf.texi: The bug report address is . - The download address is ftp.gnu.org. Remove mention of -a and -g - options (now nops). Explain effect of -c option. - - * doc/configure.in (PACKAGE): New variable. - * doc/Makefile.in (datadir, docdir): New variables. - (dvidir, htmldir): Change values. - (install, installdirs): Update. - - * src/configure.in: Rename cache variable gp_cxx_throw_decl to - gp_cv_cxx_throw_decl. - - * src/key-list.cc (Key_List::output_hash_function): When outputting - __inline, take advantage of C++ compilers which have inline. - - * src/key-list.cc (Output_Compare_Strncmp::output_comparison): - After the call to strncmp, verify that expr2 is not longer than - `len'. - Reported by Carlo Wood . - - * src/key-list.cc (Key_List::output_lookup_function_body): Avoid - emitting the loop for dealing with duplicates if - total_duplicates == 0. - - * src/key-list.cc (Key_List::read_keys): Don't accept an empty key. - - * src/Makefile.in (install, installdirs, uninstall): Respect - $(DESTDIR). - * doc/Makefile.in (install, installdirs, uninstall): Likewise. - - * src/options.cc (Options::print_options): Escape the arguments which - contain special characters. - - * tests/c-parse.gperf: Updated from gcc-2.95.2/gcc/c-parse.gperf. - * tests/objc.gperf: New file, from gcc-2.95.2/gcc/objc/objc.gperf. - * tests/chill.gperf: New file, from gcc-2.95.2/gcc/ch/gperf. - * tests/cplusplus.gperf: New file, from gcc-2.95.2/gcc/cp/gxx.gperf. - * tests/gplus.gperf: Remove file. - * tests/java.gperf: New file, from gcc-2.95.2/gcc/java/keyword.gperf. - * tests/Makefile: Check them all. - * tests/c-parse.exp: Renamed from tests/test-1.exp. - * tests/modula2.exp: Renamed from tests/test-2.exp. - * tests/cplusplus.exp: Renamed from tests/test-3.exp. - * tests/gpc.exp: Renamed from tests/test-5.exp. - - * src/key-list.cc (output_switch_case): Add trailing semicolon to - lengthptr assignment line. Fixes bug with -D and -S. - From Reini Urban . Also reported by - David Hunter. - * tests/Makefile.in (check-lang-syntax): Perform each test with -D - once without and once with duplicates. - - * src/key-list.cc (output_keyword_entry): Avoid outputting a struct - initializer of the form {"key",}. - - * src/iterator.cc: Don't include . - From Michael Deutschmann . - - * tests/Makefile.in (VALIDATE, check-lang-syntax): Use $(srcdir) where - appropriate. - Reported by Andreas Schwab . - - * tests/validate: Don't run -traditional tests by default. - - * src/main.cc (main): Check for write error on stdout before returning. - - * src/Makefile.in (LDFLAGS): New definition, to catch the value given - at configure time. - - Make the structure initializers customizable. Based on a patch by - Kaveh R. Ghazi . - * src/options.h (Options::get_initializer_suffix, - Options::initializer_suffix): New declarations. - * src/options.icc (Options::get_initializer_suffix): New function. - * src/options.cc (DEFAULT_INITIALIZER_SUFFIX): New constant. - (Options::initializer_suffix): New variable. - (Options::short_usage): Document option "-F". - (Options::long_usage): Document option "-F". - (Options constructor): Initialize initializer_suffix. - (Options destructor): Dump initializer_suffix. - (long_options): Add option "-F". - (Options::operator()): Accept option "-F". Sets initializer_suffix. - * src/key-list.cc (output_keyword_blank_entries): Output - initializer_suffix. - * doc/gperf.texi: Document option "-F". - - * COPYING: Replace with GPL version 2 (with new FSF address and Y2K - safe year format). - - * doc/gpl.texinfo: New file. - * doc/gperf.texi: Document it. - * doc/Makefile.in (gperf.info, gperf.dvi, gperf.html, gperf_toc.html): - Update dependencies. - - * doc/Makefile.in (MAKEINFO): Unset LANG while running makeinfo. - -1998-05-20 Bruno Haible - - * doc/Makefile.in (gperf.dvi, clean): Remove gperf.cps. - (install, installdirs, uninstall): Don't install gperf.dvi. The - info and HTML documentations are sufficient for on-line use, and - users who wish to print the documentation (in PS or DVI format) - can do this directly off the source distribution. - (DVIPS): Use "-D600" instead of "-Pljfour", for portability. - -1998-05-20 Akim Demaille - - * doc/gperf.texi: Many modifications: - (Output Format): Declare `hash' and `in_word_set' as functions. - (Concept Index): New section. - (Title page): Use standard presentation. - (Top): Use @top instead of @unnumbered so that automatic master - update works. - (Motivation): Avoid spaces in @var. - (Options): Use the standard name ``Invoking ...''. - (Options): Declare also the long form of the options. - (Options): Remove redundant @itemize when @table is used. - -1998-05-08 Andreas Schwab - - * aclocal.m4 (CL_PROG_INSTALL): Set cl_cv_path_install, not - ac_cv_path_install. - -Sat May 2 13:20:54 1998 Bruno Haible - - * gperf-2.7 released. - -Sat May 2 12:31:51 1998 Bruno Haible - - * src/version.cc (version_string): Remove the "(C++ version)" suffix. - It's redundant: the early C versions of gperf are called cperf. - Reported by Karl Berry. - * src/option.cc (Options::operator()): Trim the output of "gperf -v". - -Thu Apr 16 13:22:16 1998 Bruno Haible - - * lib/Makefile.in, src/Makefile.in: Don't use $(TARGET_ARCH). - Solaris "make" sets it to a value not understood by "cc". - -Wed Apr 15 23:52:14 1998 Bruno Haible - - * lib/Makefile.in, src/Makefile.in: Don't use implicit rules. Don't - use $<. AIX "make" and OSF/1 "make" have problems with both. - * src/gen-perf.cc, src/key-list.cc: Cast free() argument to char*, - otherwise it doesn't compile on SunOS 4. - * src/key-list.h: Declare structs outside of other declarations, - needed for OSF/1 cxx 5.5. - * lib/getopt.h: Use prototypes if __STDC__ || __cplusplus. - Don't give a prototype for getopt(), to avoid error on SunOS 4. - * lib/getopt.c: Declare strncmp, to avoid warnings. - -Tue Apr 14 23:24:07 1998 Bruno Haible - - * lib/GetOpt.{h,cc}: Remove files. - * lib/getopt.{h,c}, lib/getopt1.c: New files, from GNU libc. - * lib/configure.in (AC_INIT): Search for hash.cc, not GetOpt.cc. - * lib/Makefile.in (OBJECTS): Remove GetOpt.o, add getopt.o, getopt1.o. - (getopt.o, getopt1.o, hash.o): Use explicit building rules. Some - "make"s don't support to have both implicit rules for "%.o : %.c" - and "%.o : %.cc" in the same Makefile. - * lib/hash.{h,cc}: Remove #pragma; there are no templates here. - * src/option.h (Options::usage): Remove. - (Options::short_usage, Options::long_usage): Declare. - * src/option.cc (Options::usage): Remove. - (Options::short_usage, Options::long_usage): New functions. - (long_options): New array. - (Options::operator()): Use getopt_long instead of GetOpt::operator(), - change all references to GetOpt members. - - * src/std-err.{h,cc}: Remove files. - * src/gen-perf.cc, src/key-list.cc, list-node.cc, new.cc, options.cc: - Call fprintf(stderr) instead of Std_Err::report_error(). - * src/key-list.h, src/list-node.h, src/options.h: Don't use class - Std_Err any more. - * src/option.cc (program_name): New variable. - * src/Makefile.in: Remove STD_ERR_H. - (OBJECTS): Remove std-err.o. - -Mon Mar 23 01:03:35 1998 Bruno Haible - - * aclocal.m4, {lib,src,tests}/configure.in: Remove CL_CC_WORKS and - CL_CXX_WORKS, already contained in autoconf 2.12. - - * src/gen-perf.cc, src/key-list.cc: Move some code from - Gen_Perf::Gen_Perf() to Key_List::output(). - * src/Makefile.in: Update dependencies. - - * src/options.{h,cc}: Remove option "-p". - * src/key-list.cc (Key_List::set_output_types): Rewrite. - (default_array_type, default_return_type): Remove. - * src/key-list.cc: Adjust "const" handling. - + With option "-t" [TYPE], don't emit wrong code if there is no - space before the struct's opening brace. - -Sun Mar 22 16:59:15 1998 Bruno Haible - - * src/key-list.{h,cc}: Completely reorganized the output routines. - Rewrote from scratch the output_switch() function. Use classes - (Output_Constants, Output_Expr, Output_Compare) for abstraction. - In particular: - + Don't emit trailing whitespace and spurious blank lines. - + Adjust indentation of the arrays. - + Don't emit commas at the end of array initializers and - struct initializers. - + With option "-l" [LENTABLE], compare the length before - fetching the word from memory. - + With option "-S" [SWITCH], emit the comparison code just once, - not once in every switch statement. - + With option "-S" [SWITCH], choose the right switch statement - through a binary search, not a linear search. - + With option "-S" [SWITCH], emit straightforward comparisons - instead of switch statements with just one "case" label. - + With options "-S -p -t" [SWITCH, POINTER, TYPE], don't emit - spurious empty elements at the beginning of the wordlist array. - + With option "-D" [DUP] and not option "-S" [SWITCH], if there - is no more room for duplicate entries in the lookup array, - don't call `assert (i != 0)'. Instead, make the array larger :-) - + With option "-D" [DUP], if there are no duplicates, don't - automatically fall back to the non-"-D" algorithm. If the user - wants the non-"-D" algorithm, he can just not specify "-D". - + With option "-D" [DUP] and either options "-p -t" [POINTER, TYPE] - or not option "-S" [SWITCH], don't emit spurious empty elements - at the beginning of the wordlist array. - + With option "-D" [DUP], simplify the detection and processing - of duplicate entries in the lookup array. - + With options "-D -l" [DUP, LENTABLE] and not option "-S" [SWITCH], - don't forget to emit the lengthtable array. - + With options "-D -l -S" [DUP, LENTABLE, SWITCH], don't forget to - compare the lengths before comparing the strings. - - * src/gen-perf.cc: No need to include . - * src/options.cc: Likewise. - - * src/options.cc: Don't use `errno' after freopen failed. - * src/std-err.cc: `report_error' doesn't call strerror(errno) any - more. No need to include and . - - * tests/Makefile.in (check-*): Any difference between .exp and .out - is a failure. Don't ignore whitespace differences. - - * tests/Makefile.in (check-lang-syntax): Add some more checks. - -Fri Mar 20 00:54:54 1998 Bruno Haible - - * tests/jscript.gperf: Renamed from tests/javascript.gperf, because - of Minix and SVR2 14-character filename limit. - * src/key-list.cc (output_string): New function. - (Key_List::output_switch, Key_List::output_keyword_table): Call it. - - * src/options.{h,icc,cc} (get_wordlist_name): New function. Add - option -W. - * src/key-list.cc (Key_List::output_switch, - Key_List::output_keyword_table, Key_List::output_lookup_function): - Use it. - Patch from William Bader . - - * src/version.cc: Bump version number directly from 2.5 to 2.7, - because Schmidt's last release from 1991 carries version number 2.6. - -Tue Jul 30 00:02:39 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) - - * Fixed a small bug in the Key_List::output_keyword_table routine - that caused an extra newline to be printed if there where no - leading blank entries... (who cares, right?!) - -Mon Jul 29 22:05:40 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) - - * Modified the handling of the -E (emit enums rather than - #defines) option in conjunction with the -G option. Now, if -G - and -E are given the enums are generated outside the lookup - function, rather than within it! - -Mon Apr 8 18:17:04 1991 Doug Schmidt (schmidt at net4.ics.uci.edu) - - * Yucko, there was a bug in the handling of -c (and of course the - new -I command in key-list.cc). Apparently when I added the - super-duper hack that provided support for duplicate keys I - forgot to update the strcmp output... - -Mon Mar 9 02:19:04 1998 Bruno Haible - - * Moved the documentation to doc/, put the stuff borrowed from - libg++ into lib/. - * Rewrote all Makefile.in's for better compliance with GNU standards. - * Autoconf based configuration. Rewrote all configure.in's. Added - aclocal.m4, with macros from CLISP and CLN. Added Makefile.devel. - * src/depend: Removed. Dependencies are now in src/Makefile.in. - - * src/bool-array.icc: New file, contains inline functions, from both - src/bool-array.h and src/bool-array.cc. - * src/options.icc: New file, contains inline functions, from both - src/options.h and src/options.cc. - * src/read-line.icc: New file, contains inline functions, from both - src/read-line.h and src/read-line.cc. - - * src/bool-array.h: Don't include . - * src/bool-array.cc: Include . - * src/gen-perf.cc: No need to include . Don't include - <_G_config.h>. - * src/hash-table.cc: Don't include and . Include - and lib/hash.h instead. - * src/iterator.cc: Don't include . - * src/key-list.cc: Don't include . Include and - instead. - * src/list-node.cc: Don't include . Include instead. - Remove `index' hack. - * src/main.cc: Don't include <_G_config.h>. - * src/new.cc: Don't include . Include instead. - * src/options.cc: Don't include . Include and - instead. - * src/read-line.cc: Don't include . Include - instead. - * src/std-err.cc: Don't include . Include (for Irix). - * src/vectors.h: No need to include . - * src/version.cc: No need to include . - - * src/bool-array.h: Change `STORAGE_TYPE' from int to unsigned int. - * src/bool-array.{h,cc}: Change type of `Bool_Array::size' from int - to unsigned int. - * src/bool-array.{h,cc}: Change type of `Bool_Array::init' argument - from STORAGE_TYPE to unsigned int. - * src/gen-perf.{h,cc}: Change two `Gen_Perf::compute_disjoint_union' - argument types from `char *' to `const char *'. - * src/iterator.h: Change type of `Iterator::str' and argument of - `Iterator::Iterator' from `char *' to `const char *'. - * src/iterator.cc: Cast to `unsigned char' before calling `isdigit'. - * src/key-list.{h,cc}: Change type of `Key_List::array_type', - `Key_List::return_type', `Key_List::struct_tag', - `Key_List::include_src', `default_array_type', `default_return_type' - and return type of `Key_List::get_array_type', - `Key_List::get_special_input', `Key_List::save_include_src' from - `char *' to `const char *'. - * src/key-list.cc: Change "pretty gross" assignment. - * src/key-list.cc: Don't use `alloca', HP-UX CC lacks it. - * lib/GetOpt.cc: Likewise. - * src/key-list.cc (merge): Use iteration instead of recursion. - * src/list-node.{h,cc}: Change type of `List_Node::key', - `List_Node::rest', `List_Node::char_set' from `char *' to - `const char *'. - * src/new.cc: Don't use BUFSIZ. Conditionalize the throw() declaration. - * src/read-line.h: Don't use BUFSIZ. - * src/read-line.cc: Make CHUNK_SIZE a constant, and use allocate the - buffers on the stack by default. Use memcpy for copying buffers. - Include . - * src/read-line.icc (get_line): Use iteration instead of tail recursion. - Don't call ungetc(EOF,stdin). - * src/std-err.{h,cc}: Change type of `Std_Err::program_name' and of - argument `Std_Err::report_error' from `char *' to `const char *'. - * src/std-err.cc: `report_error' doesn't call `exit' any more. All - callers changed to do that themselves. - * src/trace.h: Make constructor/destructor calls non-inline. - - * src/key-list.cc (output_hash_function): If option[CPLUSPLUS], - always make the hash function inline. - (output): Declare the hash function inline, with the right name. - * src/options.{h,cc}, src/gen-perf.cc, src/key-list.cc: Remove - options -g, making it on by default. Remove option -a. Instead, - introduce "-L KR-C", "-L C", "-L ANSI-C", "-L C++". - * src/options.{h,cc}, src/key-list.cc: Add option -I. - * src/key-list.cc: Don't emit "const" if compiling in mode "-L KR-C". - * src/key-list.cc: Don't emit a comma at the end of an enum list. - * src/main.cc: Remove COUNT_TIME code. - * src/vectors.h, src/key-list.cc, src/options.cc, src/list-node.cc: - ALPHA_SIZE defaults to 256 now. Add option -7. - - * tests/javascript.gperf: New file. - * tests/jstest*.gperf, tests/validate: New tests. - -Sat Jan 31 01:38:11 1998 Alexandre Oliva - - * src/Makefile.in ($(TARGETPROG)): Add $(CFLAGS). - -Wed Jan 28 01:56:00 1998 Manfred Hollstein - - * configure.in (package_makefile_rules_frag): New and - redirect stderr from ${srcdir}/config.shared to - ${package_makefile_rules_frag}. - * src/configure.in: Ditto. - * tests/configure.in: Ditto. - -Fri Jan 23 08:00:41 1998 H.J. Lu (hjl@gnu.org) - - * gperf.texi (@ichapter): Changed to @chapter. - -Wed Jan 14 09:16:48 1998 H.J. Lu (hjl@gnu.org) - - * src/key-list.cc, src/key-list.h (Key_List::strcspn): Don't - define if strcspn is defined. - -Fri Jan 24 13:23:47 1997 Mike Stump - - * src/new.cc (operator delete): Add the exception specification. - -Mon Feb 5 19:29:16 1996 Per Bothner - - * src/read-line.cc (Read_Line::readln_aux): Handle EOF if last line - has a length which is an exact multiple of CHUNK_SIZE. (Used to throw - away the line's contents.) From Bruno Haible . - * src/Makefile.in ($(TARGETPROG)): Add -lm to link line. - -Tue Jun 11 13:43:50 1996 Brendan Kehoe - - * src/list-node.cc (List_Node): Reorder init of nodes to - match declaration order. - * src/hash-table.cc (Hash_Table): Likewise. - -Tue Oct 10 16:37:28 1995 Mike Stump - - * src/new.cc: Since malloc/delete are not paired, we cannot call - free. - -Wed Jan 4 12:40:14 1995 Per Bothner - - * src/Makefile.in ($(TARGETPROG)): Link with $(LDFLAGS). - Patch from John Interrante . - -Sat Nov 5 19:12:48 1994 Jason Merrill (jason@phydeaux.cygnus.com) - - * src/Makefile.in (LIBS): Remove. - -Tue Oct 18 17:51:14 1994 Per Bothner - - * src/std-err.cc: Use stderror, instead of the non-standard - sys_nerr and sys_errlist. - -Sat Sep 17 22:02:13 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * src/key-list.cc (output_hash_function): - Patch from William Bader . - -Fri Jul 15 09:38:11 1994 Per Bothner (bothner@cygnus.com) - - * src/std-err.cc: #include , and only declare - extern int errno if errno is not a macro. - -Mon May 30 17:29:34 1994 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (src_all, install): Make sure to add '/' after - `pwd` in $rootme, as expected by FLAGS_TO_PASS. - -Wed May 11 00:47:22 1994 Jason Merrill (jason@deneb.cygnus.com) - - Make libg++ build with gcc -ansi -pedantic-errors - * src/options.h: Lose commas at end of enumerator lists. - -Sun Dec 5 19:16:40 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * src/hash-table.cc (Hash_Table::~Hash_Table): Don't pass an - argument to fprintf, since it's not expecting one. - -Fri Nov 26 19:03:18 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * src/list-node.cc: #undef index, for the sake of broken NeXT, - -Thu Nov 4 11:16:03 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (install): Use INSTALL_DATA for gperf.1. - -Mon Oct 25 18:40:51 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * src/key-list.cc (Key_List::read_keys): Use POW macro - to increase hash table size to power of 2. - - * options.h (LARGE_STACK_ARRAYS): New flag. Defaults to zero. - * gen-perf.cc, key-list.cc, read-line.cc: - Only stack-allocate large arrays if LARGE_STACK_ARRAYS is set. - * main.cc (main): Only call setrlimit (RLIMIT_STACK, ...) - if LARGE_STACK_ARRAYS. - -Mon Oct 4 17:45:08 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * src/gen-perf.cc: Always use ANSI rand/srand instead of BSDisms. - -Wed Aug 18 12:19:53 1993 Per Bothner (bothner@kalessin.cygnus.com) - - * Makefile.in (src_all): Make less verbose output. - -Fri May 28 14:01:18 1993 Per Bothner (bothner@rtl.cygnus.com) - - * src/gen-perf.cc (Gen_Perf::change): Don't use gcc-specific - 2-operand conditional expression. - * src/key-list.cc (Key_List::output_lookup_array): - Don't use variable-size stack arrays, unless compiled by g++. - -Tue May 4 14:08:44 1993 Per Bothner (bothner@cygnus.com) - - Changes (mostly from Peter Schauer) to permit compilation - using cfront 3.0 and otherwise be ARM-conforming. - * src/key-list.h: class Key_List must use public derivation - of base class Std_Err (because Gen_Perf::operator() in gen-perf.cc - calls Std_Err::report_error). - * src/gen-perf.cc (Gen_Perf::affects_prev), src/hash-table.cc - (Hash_Table::operator()): Don't use gcc-specific 2-operand - conditional expression. - * src/iterator.cc (Iterator::operator()): Don't use gcc-specific - range construct in case label. - * key-list.cc (Key_List::output_lookup_array, Key_List::read_keys), - src/gen-perf.cc (Gen_Perf::operator(), src/read-line.cc - (Read_Line::readln_aux): If not gcc, don't allocate - variable-sized arrays on stack. - * src/new.cc (operator new): Argument type should be size_t. - * key-list.cc (Key_List::output_lookup_array, Key_List::read_keys), - new/cc (::operator new): Don't use non-standard >?= operator. - -Tue Apr 27 20:11:30 1993 Per Bothner (bothner@cygnus.com) - - * src/Makefile.in: Define TARGETPROG, and use it. - -Mon Apr 19 00:29:18 1993 Per Bothner (bothner@cygnus.com) - - * Makefile.in, configure.in: Re-vamped configure scheme. - * gperf.texinfo: Renamed to gperf.texi. - * src/bool-array.{h,cc}: ANSIfy bzero->memset. - -Sat Jan 30 20:21:28 1993 Brendan Kehoe (brendan@lisa.cygnus.com) - - * tests/Makefile.in (mostlyclean): Also delete aout, cout, m3out, - pout, and preout. - -Tue Dec 29 08:58:17 1992 Ian Lance Taylor (ian@cygnus.com) - - * Makefile.in: pass $(FLAGS_TO_PASS) to all calls to make. - (FLAGS_TO_PASS): added INSTALL, INSTALL_DATA, INSTALL_PROGRAM. - -Mon Dec 21 18:46:46 1992 Per Bothner (bothner@rtl.cygnus.com) - - * tests/expected.* renamed to *.exp to fit in 14 chars. - * tests/Makefile.in: Update accordingly. - Also rename output.* to *.out. - * src/Makefile.in (clean): Remove gperf program. - -Wed Dec 9 14:33:34 1992 Per Bothner (bothner@cygnus.com) - - * src/hash-table.cc, src/bool-array.h: ANSIfy bzero->memset. - -Thu Dec 3 19:34:12 1992 Per Bothner (bothner@cygnus.com) - - * Makefile.in (distclean, realclean): Don't delete - Makefile before recursing. - -Fri Nov 6 13:41:49 1992 Per Bothner (bothner@rtl.cygnus.com) - - * key-list.{h,cc}: Remove MAX_INT (and similar) constant - fields from Key_List class, and use INT_MAX (etc) from limits.h. - * key-list.{h,cc}, options.{h,cc}, vectors.h: Removed all - uses of initialized const fields, as they are non-standard - - and their use was easy to do away with. Mostly, just - made the constants static non-fields in the .cc file. - -Mon Nov 2 13:10:11 1992 Per Bothner (bothner@cygnus.com) - - * tests/Makefile.in: When generating cinset.c, don't pass -C, - since -C assumes an ANSI compiler. Add the -C flag (with -a) - when generating test.out.3 instead. - * tests/expected.out.3: Update accordingly. - -Wed Aug 12 11:47:54 1992 Per Bothner (bothner@cygnus.com) - - * Makefile.in: Factor out common flags into $(FLAGS_TO_PASS). - * Makefile.in: 'install-info' depends on gperf.info. - -Mon Aug 10 11:39:52 1992 Ian Lance Taylor (ian@dumbest.cygnus.com) - - * Makefile.in, src/Makefile.in: always create installation - directories. - -Mon Jul 20 15:33:21 1992 Mike Stump (mrs@cygnus.com) - - * src/new.cc (operator new): Add cast from void * to char *, - since it is not a standard conversion. - -Wed Jun 17 16:25:30 1992 Per Bothner (bothner@rtl.cygnus.com) - - * src/gen-perf.cc: #include <_G_config.h> for _G_SYSV. - * src/key-list.cc: alloca() hair. - * src/main.cc (main): Only call getrlimit if _G_HAVE_SYS_RESOURCE. - * Makefile,in, {src,test}/Makefile.in: Fix *clean rules. - -Fri May 29 13:21:13 1992 Per Bothner (bothner@rtl.cygnus.com) - - * src/gen-perf.cc: Replace USG -> _G_SYSV. - -Thu May 14 13:58:36 1992 Per Bothner (bothner@rtl.cygnus.com) - - * src/Makefile.in: Don't pass obsolete flag -DUNLIMIT_STACK. - * tests/Makefile.in (clean): Fix. - -Sat Mar 7 00:03:56 1992 K. Richard Pixley (rich@rtl.cygnus.com) - - * gperf.texinfo: added menu item hook. - -Wed Feb 26 18:04:40 1992 K. Richard Pixley (rich@cygnus.com) - - * Makefile.in, configure.in: removed traces of namesubdir, - -subdirs, $(subdir), $(unsubdir), some rcs triggers. Forced - copyrights to '92, changed some from Cygnus to FSF. - -Sun Jan 26 19:21:58 1992 Per Bothner (bothner at cygnus.com) - - * tests/Makefile.in: Use re-directed stdin instead of file - name in argv. This allows us to remove the filename - from the output, the expected output, and hence the diffs. - (Note that the input file is in $(srcdir), which we cannot - place in the expected out files.) - * tests/expected.out.[1235]: Edit out input filename, - to match new output. - -Thu Jun 28 16:17:27 1990 Doug Schmidt (schmidt at brilliant) - - * Wow, first fix on the new job! There was a dumb error - in Key_List::output_lookup_function, where I printed the - string "&wordlist[key]" instead of the correct "&wordlist[index]". - - * Added a couple of #ifdefs for USG support. - -Sun Jun 3 17:16:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Updated the version number to 2.5 and sent to Doug Lea for release - with the latest GNU libg++. - - * Changed the error handling when a keyword file cannot be opened - (now calls perror). - -Wed May 30 14:49:40 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Instrumented the source code with trace statements automagically - inserted using my new automated trace instrumentation tool! - -Wed May 9 11:47:41 1990 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Really fixed the previous bug. Turns out that a small amount - of logic had to be duplicated to handle static links that occur - as part of dynamic link chains. What a pain!!! - -Tue May 8 23:11:44 1990 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Fixed a stupid bug in Key_List::output_lookup_array that was - causing incorrect counts to be generated when there were both - static and dynamic links occurring for the same hash value. - Also simplified the code that performs the logic in this routine. - -Mon Apr 30 17:37:24 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Fixed stupid bug in Key_List::output_lookup_array that was - making the generated lookup[] array contain `chars' even - when the values stored in the chars are greater than 127! - - * Changed the behavior of the -G (global table) option so that it - will output the `length[]' array in the global scope along with - the `word_list[]' array. - - * Fixed a stupid bug in Key_List::output_lookup_function that - would always output the complicated `duplicate-handling' lookup - logic, even when there were no duplicates in the input! - - * Yikes, had to modify a bunch of stuff in key-list.cc to correctly - handle duplicate entries. Changed the generated code so that - the MIN_HASH_VALUE is no longer subtracted off when calculating - the hash value for a keyword. This required changing some other - code by substituting MAX_HASH_VALUE for TOTAL_KEYS in several places. - Finally, this means that the generated tables may contain leading - null entries, but I suppose it is better to trade-off space to get - faster performance... - -Mon Mar 26 13:08:43 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Updated version number to 2.4 to reflect the latest changes. - - * Changed the main program so that it always prints out gperf's - execution timings to the generated output file. - -Sun Mar 25 12:39:30 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added the -Z option so that users can specify the name of the - generated class explicitly. Updated documentation to reflect - this change. - - * Modified the generated C++ class interface so that the functions - are declared static (to remove the overhead of passing the `this' - pointer). This means that operator()() can no longer be used, - since it only works on non-static member functions. - Also changed things so that there is no constructor (why waste - the extra call, when it doesn't do anything, eh?) - - * Modified the behavior of Key_List::output when the -L C++ option - is enabled. Previously the code generated use const data members - to record MIN_WORD_LENGTH, MIN_HASH_VALUE, etc. However, as - pointed out by James Clark this may result in suboptimal behavior - on the part of C++ compilers that can't inline these values. - Therefore, the new behavior is identical to what happens with - -L C, i.e., either #defines or function-specific enums are used. - Why sacrifice speed for some abstract notion of `code purity?' ;-) - -Tue Mar 6 18:17:42 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added the -E option that defines constant values using an enum - local to the lookup function rather than with #defines. This - also means that different lookup functions can reside in the - same file. Thanks to James Clark (jjc@ai.mit.edu). - -Sat Mar 3 20:19:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Added a special case to key_list::output_switch that doesn't - generate extra comparisons when the `-S' is given an argument - of 1 (the normal case). This should speed up the generated - code output a tad... - -Fri Feb 23 14:21:28 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Renamed all instances of member function get_keysig_size - to get_max_keysig_size, since this is more precise... - - * Changed all occurrences of charset to keysig (stands for ``key - signature'') to reflect the new naming convention used in the - USENIX paper. - -Thu Feb 22 11:28:36 1990 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Changed the name of the generated associated values table from - asso_value to asso_values to reflect conventions in the USENIX - C++ paper. - -Thu Feb 15 23:29:03 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Updated the gperf.texinfo file to fix some formatting problems - that had crept in since last time. - -Wed Feb 14 23:27:24 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed stupid bug in key-list.cc (get_special_input), wher - gperf replaced each '%' with the succeeding character. - - * Added support for multiple target language generation. Currently - handled languages are C and C++, with C as the default. Updated - documentation and option handler to reflect the changes. - - * Added a global destructor to new.cc and removed the #ifdef, since - the bloody thing now works with libg++. - -Mon Feb 14 13:00:00 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Found out that my gperf paper was accepted at the upcoming - USENIX C++ Conference in San Francisco. Yow! - -Tue Jan 30 09:00:29 1990 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * #ifdef'd out the new.cc memory allocator, since there are - problems with this and the libg++ stuff. - - * Changed key-list.h so that class Vectors is a public (rather - than private) base class for class Key_List. The previous - form was illegal C++, but wasn't being caught by the old - g++ compiler. Should work now... ;-) - -Sun Dec 10 14:08:23 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added several changes from rfg@ics.uci.edu. These changes - help to automate the build process. - -Wed Nov 15 15:49:33 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Removed conditional compilation for GATHER_STATISTICS. There's - really no good reason to avoid collecting this info at run-time, - since that section of code is *hardly* the bottleneck... ;-) - - * Simplified the C output routines in Key_List::set_output_types - and Key_List::output_keyword_table a bit in order to - speed-up and clean up the code generation. - - * Modified function Key_List::get_special_input so that it does - not try to `delete' a buffer that turned out to be too short. - This is important since the new memory management scheme - does not handle deletions. However, adding a small amount of - garbage won't hurt anything, since we generally don't do this - operation more than a couple times *at most*! - - * Created a new file (new.cc) which includes my own overloaded - operator new. This function should dramatically reduce the - number of calls to malloc since it grabs large chunks and - doles them out in small pieces. As a result of this change - the class-specific `operator new' was removed from class List_Node. - -Tue Nov 14 21:45:30 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Continued to refine the great hack. The latest trick is to - try and replace most uses of dynamic memory (i.e., calls to - new) with uses of gcc dynamic arrays (i.e., an alloca solution). - This makes life much easier for the overall process-size, since - it reduces the amount of overhead for memory management. As a - side-effect from this change there is no reason to have the - Bool_Array::dispose member function, so it's outta here! - - * Fixed a stupid bug that was an disaster waiting to happen... - Instead of making the boolean array large enough to index - max_hash_value it was only large enough to index max_hash_value - - 1. Once again, an off-by-one mistake in C/C++!!!! - -Mon Nov 13 19:38:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the final great hack! This allows us to generate hash tables - for near-perfect hash functions that contain duplicates, *without* - having to use switch statements! Since many compilers die on large - switch statements this feature is essential. Furthermore, it appears - that the generated code is often *smaller* than that put out by - compilers, even though a large, sparse array must be created. - Here's the general idea: - - a. Generate the wordlist as a contiguous block of keywords, - just as before when using a switch statement. This - wordlist *must* be sorted by hash value. - - b. Generate the lookup array, which is an array of signed - {chars,shorts,ints}, (which ever allows full coverage of - the wordlist dimensions). If the value v, where v = - lookup[hash(str,len)], is >= 0 and < TOTAL_KEYWORDS, then we - simply use this result as a direct access into the wordlist - array to snag the keyword for comparison. - - c. Otherwise, if v is < -TOTAL_KEYWORDS or > TOTAL_KEYWORDS - this is an indication that we'll need to search through - some number of duplicates hash values. Using a hash - linking scheme we'd then index into a different part of - the hash table that provides the starting index and total - length of the duplicate entries to find via linear search! - -Sun Nov 12 13:48:10 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Simplified Key_List::output_min_max considerably by recognizing - that since the keyword list was already sorted by hash value finding - the min and max values is trivial! - - * Improved the debugging diagnostics considerably in classes Key_List, - Hash_Table, and Gen_Perf. - - * Modified the `-s' option so that a negative argument is now - interpreted to mean `allow the maximum associated value to be - about x times *smaller* than the number of input keys.' This - should help prevent massive explosion of generated hash table - size for large keysets. - -Sat Nov 11 11:31:13 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added a field in class Key_List that counts the total number - of duplicate keywords, both static and dynamic. - - * Added a new member function Bool_Array that deletes the dynamic - memory allocated to Bool_Array::storage_array. This space may - be needed for subsequent options, so it made sense to free it as - soon as possible... - - * Renamed file/class Alpha_Vectors to Vectors, to avoid problems - with 14 character length filenames on SYSV. Also changed file - adapredefined.gperf to adadefs.gperf in the ./tests directory. - - * Modified class Options by changing the member function - Options::total_positions to Options::get_charset_size and - Options::set_charset_size. These two routines now either return - the total charset size *or* the length of the largest keyword - if the user specifies the -k'*' (ALLCHARS) option. This change - cleans up client code. - - * Merged all the cperf changes into gperf. - - * Made sure to explicitly initialize perfect.fewest_collisions to - 0. - - * Cleaned up some loose ends noticed by Nels Olson. - 1. Removed `if (collisions <= perfect.fewest_collisions)' - from Gen_Perf::affects_prev since it was superfluous. - 2. Removed the fields best_char_value and best_asso_value - from Gen_Perf. There were also unnecessary. - 3. Fixed a braino in the Bool_Array::bool_array_reset - function. Since iteration numbers can never be zero - the `if (bool_array.iteration_number++ == 0)' must be - `if (++bool_array.iteration_number == 0).' - 4. Modified Std_Err::report_error so that it correctly handles - "%%". - - * It is important to note that -D no longer enables -S. - There is a good reason for this change, which will become - manifested in the next release... (suspense!). - - * Made some subtle changes to Key_List::print_switch so that if finally - seems to work correctly. Needs more stress testing, however... - - * Made a major change to the Key_List::print_switch function. - The user can now specify the number of switch statements to generate - via an argument to the -S option, i.e., -S1 means `generate 1 - switch statement with all keywords in it,' -S2 means generate - 2 switch statements with 1/2 the elements in each one, etc. - Hopefully this will fix the problem with C compilers not being - able to generate code for giant switch statements (but don't - hold your breath!) - - * Changed Key_List::length function to Key_List::keyword_list_length. - - * Added a feature to main.c that prints out the starting wall-clock - time before the program begins and prints out the ending wall-clock - time when the program is finished. - - * Added the GATHER_STATISTICS code in hash-table.c so we can - keep track of how well double hashing is doing. Eventually, - GATHER_STATISTICS will be added so that all instrumentation - code can be conditionally compiled in. - - * Fixed a stupid bug in Key_List::print_switch routine. This - was necessary to make sure the generated switch statement worked - correctly when *both* `natural,' i.e., static links and dynamic - links, i.e., unresolved duplicates, hash to the same value. - - * Modified Bool_Array::~Bool_Array destructor so that - it now frees the bool_array.storage_array when it is no longer - needed. Since this array is generally very large it makes sense - to return the memory to the freelist when it is no longer in use. - - * Changed the interface to constructor Hash_Table::Hash_Table. This - constructor now passed a pointer to a power-of-two sized buffer that - serve as storage for the hash table. Although this weakens information - hiding a little bit it greatly reduces dynamic memory fragmentation, - since we can now obtain the memory via a call to alloca, rather - than malloc. This change modified Key_List::read_keys calling - interface. - - * Since alloca is now being used more aggressively a conditional - compilation section was added in main.c. Taken from GNU GCC, - this code gets rid of any avoidable limit on stack size so that - alloca does not fail. It is only used if the -DRLIMIT_STACK - symbol is defined when gperf is compiled. - - * Added warnings in option.c so that user's would be informed - that -r superceeds -i on the command-line. - - * Rewrote Gen_Perf::affects_prev. First, the code structure - was cleaned up considerably (removing the need for a dreaded - goto!). Secondly, a major change occurred so that Gen_Perf::affects_prev - returns FALSE (success) when fewest_hits gets down to whatever - it was after inserting the previous key (instead of waiting for - it to reach 0). In other words, it stops trying if it can - resolve the new collisions added by a key, even if there are - still other old, unresolved collisions. This modification was - suggested by Nels Olson and seems to *greatly* increase the - speed of gperf for large keyfiles. Thanks Nels! - - * In a similar vein, inside the Gen_Perf::change routine - the variable `perfect.fewest_collisions is no longer initialized - with the length of the keyword list. Instead it starts out at - 0 and is incremented by 1 every time change () is called. - The rationale for this behavior is that there are times when a - collision causes the number of duplicates (collisions) to - increase by a large amount when it would presumably just have - gone up by 1 if none of the asso_values were changed. That is, - at the beginning of change(), you could initialize fewest_hits - to 1+(previous value of fewest_hits) instead of to the number of - keys. Thanks again, Nels. - - * Replaced alloca with new in the Gen_Perf::change function. - This should eliminate some overhead at the expense of a little - extra memory that is never reclaimed. - - * Renamed Gen_Perf::merge_sets to Gen_Perf::compute_disjoint_union - to reflect the change in behavior. - - * Added the -e option so users can supply a string containing - the characters used to separate keywords from their attributes. - The default behavior is ",\n". - - * Removed the char *uniq_set field from LIST_NODE and modified - uses of uniq_set in perfect.c and keylist.c. Due to changes - to Gen_Perf::compute_disjoint_sets this field was no longer - necessary, and its removal makes the program smaller and - potentially faster. - - * Added lots of changes/fixes suggested by Nels Olson - (umls.UUCP!olson@mis.ucsf.edu). In particular: - 1. Changed Bool_Array so that it would dynamically create - an array of unsigned shorts rather than ints if the - LO_CAL symbol was defined during program compilation. - This cuts the amount of dynamic memory usage in half, - which is important for large keyfile input. - 2. Added some additional debugging statements that print extra - info to stderr when the -d option is enabled. - 3. Fixed a really stupid bug in Key_List::print_switch - A right paren was placed at the wrong location, which broke - strlen (). - 4. Fixed a subtle problem with printing case values when keylinks - appear. The logic failed to account for the fact that there - can be keylinks *and* regular node info also! - 5. Changed the behavior of Key_List::read_keys so that it would - honor -D unequivocally, i.e., it doesn't try to turn off dup - handling if the user requests it, even if there are no - immediate links in the keyfile input. - 6. Modified the -j option so that -j 0 means `try random values - when searching for a way to resolve collisions.' - 7. Added a field `num_done' to the Gen_Perf struct. This is used - to report information collected when trying to resolve - hash collisions. - 8. Modified the merge_sets algorithm to perform a disjoint - union of two multisets. This ensures that subsequent - processing in Gen_Perf::affect_prev doesn't - waste time trying to change an associated value that is - shared between two conflicting keywords. - 9. Modified Gen_Perf::affects_prev so that it doesn't try - random jump values unless the -j 0 option is enabled. - 10. Fixed a silly bug in Gen_Perf::change. This problem caused - gperf to seg fault when the -k* option was given and the - keyfile file had long keywords. - -Sun Oct 29 00:18:55 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Modified class-specific new operations for Read_Line and - List_Node so they don't fail if SIZE is larger than twice - the previous buffer size. Note we double buffer size - everytime the previous buffer runs out, as a heuristic - to reduce future calls to malloc. - -Sun Oct 22 13:49:43 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Updated gperf version number to 2.0. Send to Doug Lea for - incorporation into the long-awaited `official' libg++ 1.36 - release! - - * Thanks to Nels Olson a silly bug in Gen_Perf::change () - was fixed. This problem caused gperf to seg fault when - the -k* option was given and the keyfile file had long - keywords. - - * Modified Key_List::print_hash_function so that it output - max_hash_value + 1 (rather than just max_hash_value) for - any associated value entries that don't correspond to - keyword charset characters. This should speed up rejection - of non-keyword strings a little in some cases. - -Sat Oct 21 19:28:36 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Fixed Key_List::print_hash_function so that it no longer output - things like `return 0 + ...' Although this probably gets - optimized away by even the worst C compilers there isn't any - point tempting fate... ;-) - - * Fixed class List_Node's constructor so that it wouldn't a priori - refuse to consider trying to hash keys whose length is less - than the smallest user-specified key position. It turns out - this is not a problem unless the user also specifies the -n - (NOLENGTH) option, in which case such keys most likely - don't have a prayer of being hashed correctly! - - * Changed the name of the generated lookup table from `Hash_Table' - to `asso_value' to be consistent with the gperf paper. - -Tue Oct 17 14:19:48 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added a flag GATHER_STATISTICS in the Makefile. If defined - during compilation this turns on certain collection facilities - that track the performance of gperf during its execution. In - particular, I want to see how many collisions occur for the - double hashing Hash_Table. - - * Added a safety check so that we don't screw up if the total - number of `resets' of the Bool_Array exceeds MAX_INT. Since - this number is around 2^31 it is unlikely that this would ever - occur for most input, but why take the risk? - - * Changed the behavior for the -a (ANSI) option so that the - generated prototypes use int rather than size_t for the LEN - parameter. It was too ugly having to #include all - over the place... - -Mon Oct 16 11:00:35 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Continued to work on the gperf paper for the USENIX C++ - conference. At some point this will be merged back into - the gperf documentation... - -Sat Oct 14 20:29:43 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Added a majorly neat hack to Bool_Array, suggested by rfg. - The basic idea was to throw away the Ullman array technique. - The Ullman array was used to remove the need to reinitialize all - the Bool_Array elements to zero everytime we needed to determine - whether there were duplicate hash values in the keyword list. - The current trick uses an `iteration number' scheme, which takes - about 1/3 the space and reduces the overall program running a - time by about 20 percent for large input! The hack works as - follows: - - 1. Dynamically allocation 1 boolean array of size k. - 2. Initialize the boolean array to zeros, and consider the first - iteration to be iteration 1. - 2. Then on all subsequent iterations we `reset' the bool array by - kicking the iteration count by 1. - 3. When it comes time to check whether a hash value is currently - in the boolean array we simply check its index location. If - the value stored there is *not* equal to the current iteration - number then the item is clearly *not* in the set. In that - case we assign the iteration number to that array's index - location for future reference. Otherwise, if the item at - the index location *is* equal to the iteration number we've - found a duplicate. No muss, no fuss! - -Mon Oct 2 12:30:54 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed some consts in options.h to enumerals, since g++ - doesn't seem to like them at the moment! - -Sat Sep 30 12:55:24 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a stupid bug in Key_List::print_hash_function that manifested - itself if the `-k$' option was given (i.e., only use the key[length] - character in the hash function). - - * Added support for the -C option. This makes the contents of - all generated tables `readonly'. - - * Changed the handling of generated switches so that there is - only one call to str[n]?cmp. This *greatly* reduces the size of - the generated assembly code on all compilers I've seen. - - * Fixed a subtle bug that occurred when the -l and -S option - was given. Code produced looked something like: - - if (len != key_len || !strcmp (s1, resword->name)) return resword; - - which doesn't make any sense. Clearly, this should be: - - if (len == key_len && !strcmp (s1, resword->name)) return resword; - -Tue Sep 26 10:36:50 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed class Read_Line's definition so that it no longer - needs to know about the buffering scheme used to speed up - dynamic memory allocation of input keywords and their - associated attributes. This means that operator new is no longer - a friend of Read_Line. - -Mon Sep 25 23:17:10 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Decided that Obstacks had too much overhead, so they were - removed in favor of super-efficient, low-overhead buffered - storage allocation hacks in Read_Line and List_Node. - - * No longer try to inline functions that g++ complains about - (Key_List::Merge and Key_List::Merge_Sort). - -Sun Sep 24 13:11:24 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed classes Read_Line and List_Node to use Obstacks in order - to cache memory allocation for keyword strings and List_Nodes. - - * Continued to experiment with inheritance schemes. - - * Added a new file `alpha.h', that declares static data shared - (i.e., inherited) between classes List_Node and Key_List. - -Tue Sep 12 16:14:41 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Made numerous changes to incorporate multiple inheritance in - gperf. - -Wed Aug 16 23:04:08 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -DCOMPILER_FIXED flag to the ./src/Makefile. This - implies that people trying to compile gperf need to have a - working version of the new g++ compiler (1.36.0). - - * Removed some extra spaces that were being added in the generated - C code. - -Mon Jul 24 17:09:46 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed PRINT_HASH_FUNCTION and PRINT_LOOKUP_FUNCTION in keylist.c - so that the generated functions take an unsigned int length argument. - If -a is enabled the prototype is (const char *str, size_t len). - -Fri Jul 21 13:06:15 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed a typo in PRINT_KEYWORD_TABLE in keylist.cc that prevented - the indentation from working correctly. - - * Fixed a horrible typo in PRINT_KEYWORD_TABLE in keylist.cc - that prevented links from being printed correctly. - -Tue Jul 18 16:04:31 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed up readline.cc and readline.h so that they work OK - with g++ compilers that aren't completely up-to-date. - If symbol COMPILER_FIXED is defined then the behavior - that works on my more recent version of g++ is enabled. - -Sun Jul 9 17:53:28 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed the ./tests subdirectory Makefile so that it - uses $(CC) instead of gcc. - -Sun Jul 2 21:52:15 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a number of subtle bugs that occurred when -S was - combined with various and sundry options. - - * Added the -G option, that makes the generated keyword table - a global static variable, rather than hiding it inside - the lookup function. This allows other functions to directly - access the contents in this table. - - * Added the "#" feature, that allows comments inside the keyword - list from the input file. Comment handling takes place in readline.c. - This simplifies the code and reduces the number of malloc calls. - - * Also added the -H option (user can give the name of the hash - function) and the -T option (prevents the transfer of the type decl - to the output file, which is useful if the type is already defined - elsewhere). - -Thu Jun 22 20:39:39 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Modified many classes so that they would inherit Std_Err as - a base class. This makes things more abstract... - -Fri Jun 16 14:23:00 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Modified the -f (FAST) option. This now takes an argument. - The argument corresponds to the number of iterations used - to resolve collisions. -f 0 uses the length of the - keyword list (which is what -f did before). This makes - life much easier when dealing with large keyword files. - -Tue Jun 6 17:53:27 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -c (comparison) option. Enabling this - will use the strncmp function for string comparisons. - The default is to use strcmp. - - * Fixed a typo in key_list.cc (PRINT_SWITCH). This caused - faulty C code to be generated when the -D, -p, and -t - options were all enabled. - -Thu May 25 14:07:21 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Once again, changed class Read_Line to overload global operator - new. Hopefully, this will work...! - -Sun May 21 01:51:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Modified Key_List::print_hash_function () so that it properly - formats the associated values in the hash table according to - the maximum number of digits required to represent the largest - value. - - * Removed the named return value from class Hash_Table's - operator (), since this causes a seg fault when -O is enabled. - No sense tripping subtle g++ bugs if we don't have to.... ;-) - - * Removed the operator new hack from Read_Line, since this seemed - to create horrible bus error problems. - - * Changed many class member functions and data members to be `static', - if they don't manipulate this! - -Fri May 12 23:06:56 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Changed class Std_Err to use static member functions, a la - Ada or Modula 2. This eliminates the need for an explicit - error-handler class object. - - * Added the ``named return value'' feature to Hash_Table::operator () - and Bool_Array::operator [], just for the heck of it.... ;-) - - * Changed the previous hack in Read_Line so that we now use - the overloaded global `new' instead of NEW_STRING! - -Wed May 3 17:36:55 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Updated to version 1.7. This reflects the recent major changes - and the new C port. - - * Modified the GNU getopt.cc routine to have a class-based interface. - - * Fixed a typo in Perfect.cc ~Perfect that prevented the actual maximum - hash table size from being printed (maybe the stream classes - weren't so bad after all.... ;-). - - * Added support for the -f option. This generates the perfect - hash function ``fast.'' It reduces the execution time of - gperf, at the cost of minimizing the range of hash values. - -Tue May 2 16:23:29 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added an efficiency hack to Read_Line. Instead of making - a call to operator NEW (a.k.a. malloc) for each input string - a new member function NEW_STRING stores a large buffer from - which new strings are carved out, growing the buffer if - necessary. It might be useful to add this throughout the - program.... - - * Removed all unnecessary calls to DELETE. If the program is about - to exit it is silly to waste time freeing memory. - - * Added the GNU getopt program to the distribution. This makes - GPERF portable to systems that don't include getopt in libc. - - * Added a strcspn member to class Key_List. This also increases - portability. - - * Added the get_include_src function from keylist.c as a member - function in class Key_List. Hopefully every function is - now associated with a class. This aids abstraction and - modularity. - - * Ported gperf to C. From now on both K&R C and GNU G++ versions - will be supported. There will be two ChangeLog files, one - for each version of the program. - -Mon May 1 16:41:45 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a bug with -k'*'. This now prints out *all* the cases - up to the length of the longest word in the keyword set. - -Sun Apr 30 12:15:25 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Removed all use of the stream classes. Too ugly, slow, and - not handled by the c++-mode formatter.... - - * Modified the handling of links (i.e., keywords that have - identical hash values as other keywords). This should - speed up hash function generation for keyword sets with - many duplicate entries. The trick is to treat duplicate - values as equivalence classes, so that each set of duplicate - values is represented only once in the main list processing. - - * Fixed some capitialization typos and indentations mistakes in - Key_List::print_hash_function. - -Sat Apr 29 12:04:03 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Fixed a typo/logico in Key_List::print_switch that prevented - the last keyword in the keyword list to be print out. This - requires further examination..... - - * Fixed a stupid bug in List_Node::List_node. If the -k'*' option - was enabled the KEY_SET string wasn't getting terminated with - '\0'! - -Fri Apr 28 12:38:35 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Renamed strexp.h and strexp.cc to iterator.h and iterator.cc. - Also changed the strexp class to iterator. Continued to work - on style... - - * Updated the version number to 1.6. This reflects all the - recent changes. - -Thu Apr 27 00:14:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -D option that properly handles keyword sets that - contain duplicate hash values. - - * Continued the stylistic changes. Added the #pragma once - directive to all the *.h files. Removed all #defines and - replaced them with static consts. Also moved the key_sort - routine from options.cc into the options class as a - member function. - -Mon Apr 3 13:26:55 1989 Doug Schmidt (schmidt at zola.ics.uci.edu) - - * Made massive stylistic changes to bring source code into - conformance with GNU style guidelines. - -Thu Mar 30 23:28:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Fixed up the output routines so that they generate code - corresponding to the GNU style guidelines. - -Sat Mar 11 13:12:37 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed Stderr constructors so that they wouldn't try to - use the base class initializer syntax for the static - class variable Program_Name. G++ 1.34 is stricter in - enforcing the rules! - -Fri Mar 10 11:24:14 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Removed -v and ``| more'' from the Makefile to keep rfg happy... - -Thu Mar 2 12:37:30 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Sent latest GNU gperf version 1.5 to Doug Lea for inclusion - into libg++ 1.34. Note that there is a small bug with - the new %{ ... %} source inclusion facility, since it doesn't - understand comments and will barf if %{ or %} appear nested - inside the outermost delimiters. This is too trivial of - a defect to fix at the moment... - -Tue Feb 28 11:19:58 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added the -K option, which allows the user to provide a - alternative name for the keyword structure component. - The default is still ``name.'' - - * Added the LEX and YACC-like ability to include arbitrary - text at the beginning of the generated C source code output. - This required two new functions Get_Special_Input, - Key_List::Save_Include_Src; - - * Fixed memory allocation bug in Key_List::Set_Types. - Variable Return_Type needs 1 additional location - to store the "*" if the -p option is used. - - * Added code to NULL terminate both Struct_Tag and Return_Type, - *after* the strncpy (stupid mistake). - -Mon Feb 27 14:39:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added a new option -N. This allows the user to specify the - name to be used for the generated lookup function. The - default name is still ``in_word_set.'' This makes it - possible to completely automate the perfect hash function - generation process! - -Mon Feb 20 23:33:14 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Corrected the Hash_Table::operator () function so that - *it* is responsible for deciding when a new key has the - same signature as a previously seen key. The key length - information is now used internally to this function to - decide whether to add to the hash table those keys with - the same key sets, but different lengths. Before, this - was handled by the Key_List::Read_Keys function. However, - this failed to work for certain duplicate keys, since - they weren't being entered into the hash table properly. - -Sun Feb 19 16:02:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Modified class Options by moving the enum Option_Type out - of the class. This is to satisfy the new enumeration - scope rules in C++. - -Sun Jan 15 15:12:09 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Incremented the version number upto 1.4 to reflect the new - options that affect the generated code. Send the new - distribution off to Michael for use with g++ 1.33. - - * Added a fix to Key_List::Read_Keys so that it checks for links - properly when the -n option is used. Previously, it didn't - catch obvious links, which caused it to spend large amount - of time searching for a solution that could never occur! - - * Modified the Key_List data structure to record *both* the - minimum and the maximum key lengths. This information - is now computed in Key_List::Read_Keys, and thus - Key_List::Print_Min_Max doesn't need to bother. - - * Modifed the key position iterator scheme in options.cc to - eliminate the need for member function Options::Advance. - Now, the Options::Get function performs the advancement - automatically, obviating the need for an extra function call. - - * Added the new function Options::Print_Options, to print out - the user-specified command line options to generated C - output file. - - * Added a new function, Key_List::Print_Keylength_Table, - which creates a table of lengths for use in speeding - up the keyword search. This also meant that a new - option, -l (LENTABLE) is recognized. It controls - whether the length table is printed and the comparison - made in the generated function ``in_word_set.'' - - * Added a comment at the top of the generated C code - output file that tells what version of gperf was used. - Next, I'll also dump out the command line options - as a comment too. Thanks to Michael Tiemann for the - feedback on this. - - * Fixed the -n option to make it work correctly with - other parts of the program (most notably the Perfect::Hash - function and the computation of minimum and maximum lengths. - -Fri Jan 13 21:25:27 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Realized the the need to add a test that will enable - optimziation of the generated C code in the ``hash'' function - by checking whether all the requested key positions are - guaranteed to exist due to the comparison in `in_word_set.'' - I'll put this in soon.... - -Thu Jan 12 20:09:21 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Added pascal, modula3, and modula2 tests inputs to the - Makefile - - * Recognised that there is a bug with the -n option. However - I'm too busy to fix it properly, right now. The problem - is that the generated #define end up being 0, since that's - my hack to make -n work. This needs complete rethinking! - -Tue Jan 10 00:08:16 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Added a new option, -n, that instructs gperf to not use the - length of an identifier when computing the hash functions. - I'm not sure how useful this is! - - * Retransmitted the distribution to rocky.oswego.edu. Hopefully, - this will work! - - * Began fixing the indentation and capitalization to conform - to the GNU coding guidelines. - -Mon Jan 9 22:23:18 1989 Doug Schmidt (schmidt at pompe.ics.uci.edu) - - * Fixed horrible bug in Read_Line::Readln_Aux. This was - a subtle and pernicous off-by-1 error, that overwrote - past the last character of the input string buffer. I - think this fault was killing the vax! - - * Yow, fixed an oversight in List_Node::List_Node, where the - pointer field Next was uninitialized. Luckily, the new routine - seems to return 0 filled objects the first time through! - -Sun Jan 8 13:43:14 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Modified the ``key linked'' diagnostic in Key_List::Read_Keys - to be more helpful and easy to read. - - * Fixed the List_Node::List_Node so that it would ignore trailing - fields if the -t option was not enabled. - - * Moved the List_Node declarations out of keylist.h and - into a file of its own, called listnode.cc and listnode.h - Made Set_Sort a member function of class List_Node. - - * Massively updated the documentation in the gperf.texinfo file. - - * Polished off the major revision to the print functions, - added a few new tests in the Makefile to check for the - validity of the program and ftp'ed the entire distribution - off to Doug Lea for libg++. ( changed it to - 1.3 to reflect the major changes with the generated - C code ). - - * Fixed Key_List::Print_Switch to deal with the -p and -t options. - This meant that the ``still-born'' function Key_List:: - Print_Type_Switch was superflous, so I removed it. - Also, removed the restriction in Option that the -p and - -t options couldn't be used simultaneously. - - * Modified List_Node::List_Node, to perform only 1 call to - ``new'' when dynamically allocating memory for the Key_Set - and the Uniq_Set. - -Sat Jan 7 14:10:51 1989 Doug Schmidt (schmidt at glacier.ics.uci.edu) - - * Fixed a big bug with the new policy of nesting the - wordlist inside of generated function ``in_word_set.'' - I'd forgotten to declare the wordlist array as static! - ( arrgh ). - - * Added a new function Key_List::Set_Types, that figures out - the return type for generated function ``in_word_set,'' - the user-defined ``struct tag,'' if one is used, and also - formates the array type for the static local array. - - * Changed the print routines to take advantage of the - new -p option. - - * Began adding the hooks to allow the return of a pointer - to a user defined struct location from the generated - ``in_word_set'' function instead of the current 0 or 1 - return value. Created function Key_List::Print_Type_Switch - and added option -p to class Option, allowing the user to - request generation of the aforementioned pointers returned - instead of booleans. - - * Put in checks in class Option to make sure that -S and -t - options are not used simultaneously. This restriction - will be removed in subsequent releases, once I decide on - a clean way to implement it. - - * Sent version 1.2 to Doug Lea for possible inclusion into - the libg++ distribution. - - * Moved the static word_list array inside the generated function - in_word_set. This supports better data hiding. - - * Added a texinfo file, gperf.texinfo - - * Revised the Makefile to cleanup the droppings from texinfo - and changed the name of gperf.cc and gperf.h to perfect.cc - and perfect.h. - -Fri Jan 6 13:04:45 1989 Doug Schmidt (schmidt at crimee.ics.uci.edu) - - * Implemented the switch statement output format. Much better - for large datasets in terms of space used. - - * Added new functions to break up the Key_List::Output function. - Functions added were Key_List::Print_Switch, Key_List::Print_Min_Max, - Key_List::Print_Keyword_Table, Key_List::Print_Hash_Function, - and Key_List::Print_Lookup_Function. This simplifies the - big mess in Key_List::Output considerably! - - * Added switch statement option to Options, which potentially - trades time for space in the generated lookup code. - -Thu Jan 5 22:46:34 1989 Doug Schmidt (schmidt at siam.ics.uci.edu) - - * Released version 1.1 - - * Fixed a bug with Gperf::Merge_Set, it was skipping letters shared - between the Set_1 and Set_2. - - * Added the optimal min/max algorithm in Key_List::Output. This - runs in O ( 3n/2 ), rather than O ( 2n ) time. - - * Changed Gperf::Sort_Set to use insertion sort, rather than - bubble sort. - - * Added a check in Key_List::Output for the special case where - the keys used are 1,$. It is possible to generate more - efficient C code in this case. diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL deleted file mode 100644 index 350b32f5..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/INSTALL +++ /dev/null @@ -1,183 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes a while. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. - diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS deleted file mode 100644 index efa3ca0c..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/NEWS +++ /dev/null @@ -1,80 +0,0 @@ -New in 3.0.1: - -* Bug fix. - -New in 3.0: - -* Added option --output that allows to specify the output file name. -* Some options have been renamed: - --hash-fn-name=NAME --> --hash-function-name=NAME - --lookup-fn-name=NAME --> --lookup-function-name=NAME - --compare-strlen --> --compare-lengths - --global --> --global-table - The older variants are still supported for backward compatibility. -* The following options can now be specified inside the input file: - %delimiters=DELIMITER-LIST - %struct-type - %ignore-case - %language=LANGUAGE-NAME - %define slot-name NAME - %define initializer-suffix INITIALIZERS - %define hash-function-name NAME - %define lookup-function-name NAME - %define class-name NAME - %7bit - %compare-lengths - %compare-strncmp - %readonly-tables - %enum - %includes - %global-table - %pic - %define string-pool-name NAME - %null-strings - %define word-array-name NAME - %switch=COUNT - %omit-struct-type -* When the option -k is not given, the default key positions are now - computed depending on the set of keywords. -* If the input file is given by name, the output file will now contain - #line directives referring to the input file. -* Some keyword sets containing permutations, like { "xy", "yx", "xz", "zx" } - or { "abc", "acb", "bca", "cab" }, are now handled by gperf without - requiring the option -D. -* The generated table is usually much smaller than it was with earlier - versions of gperf. -* Added option -m/--multiple-iterations that allows to further reduce the - size of the generated table. -* When the search for a good hash function is not immediately successful, - the table's size will grow as needed. Earlier versions of gperf bailed - out with an "Internal error, duplicate hash code value". -* The options -f/--fast and -o/--occurrence-sort have no effect any more. -* Added options -P/--pic and --null-strings that optimize the generated code - for use in shared libraries. -P/--pic does a perfect optimization but may - require some small code changes (see the documentation for details), whereas - --null-strings does only a half-hearted optimization but works without - needing any change to surrounding code. -* Added option --ignore-case that produces a case independent lookup function. -* Bug fixes. - -New in 2.7.2: - -* Keywords may now be enclosed in double quotes; this permits the use of - '#', ',', space or NUL inside keywords. -* Bug fixes. - -New in 2.7.1: - -* Added option "-F" for gcc. - -New in 2.7: - -* gperf is now a stand-alone package, untied from libg++. -* Autoconfiguring. -* Removed the "-a" and "-g" options, extended the "-L" option instead. -* Removed the "-p" option, it is the default. -* Added long options ("--help", "--version" etc.). -* 8-bit cleanliness is now the default; use "-7" to get the old behaviour. -* Compiles with any C++ compiler. -* Numerous small improvements. - diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README deleted file mode 100644 index 26173bfc..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1-src/README +++ /dev/null @@ -1,28 +0,0 @@ -This is GNU gperf. It is a program that generates perfect hash -functions for sets of key words. A perfect hash function is: - - A hash function and a data structure that allows - recognition of a key word in a set of words using - exactly 1 probe into the data structure. - -The doc/gperf.html file explains how the program works, the form of -the input, what options are available, and hints on choosing the best -options for particular key words set. - -See the file NEWS for a list of major changes in the current release. - -See the file INSTALL for compilation and installation instructions. - -Output from the GPERF program is used to recognize reserved words in -the GNU C, GNU C++, and GNU Pascal compilers, as well as with the GNU -indent program. - -For general documentation on the coding and usage standards -this distribution follows, see the GNU standards document -ftp://ftp.gnu.org/pub/gnu/standards.*, especially the 'Makefile -Conventions', 'Configuration', and 'User Interfaces' sections. - -Mail suggestions and bug reports to . When -reporting bugs, please include in the subject line the package name -and version (output of 'gperf --version') for which you found a problem. - diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log deleted file mode 100644 index 1e16f46d..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check.log +++ /dev/null @@ -1,156 +0,0 @@ -cd lib; make check -make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/lib' -make[1]: Niets te doen voor `check'. -make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/lib' -cd src; make check -make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/src' -make[1]: Niets te doen voor `check'. -make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/src' -cd tests; make check -make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/tests' -performing some tests of the perfect hash generator -gcc -c -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 ../../gperf-3.0.1-src/tests/test.c -../src/gperf -c -l -S1 -I -o ../../gperf-3.0.1-src/tests/c.gperf > cinset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o cout cinset.c test.o -testing ANSI C reserved words, all items should be found in the set -./cout -v < ../../gperf-3.0.1-src/tests/c.gperf > c.out -diff ../../gperf-3.0.1-src/tests/c.exp c.out -../src/gperf -k1,4,'$' -I ../../gperf-3.0.1-src/tests/ada.gperf > adainset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o aout adainset.c test.o -testing Ada reserved words, all items should be found in the set -./aout -v < ../../gperf-3.0.1-src/tests/ada.gperf > ada-res.out -diff ../../gperf-3.0.1-src/tests/ada-res.exp ada-res.out -../src/gperf -D -k1,'$' -s 2 -I -o ../../gperf-3.0.1-src/tests/adadefs.gperf > preinset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o preout preinset.c test.o -testing Ada predefined words, all items should be found in the set -./preout -v < ../../gperf-3.0.1-src/tests/adadefs.gperf > ada-pred.out -diff ../../gperf-3.0.1-src/tests/ada-pred.exp ada-pred.out -../src/gperf -k1,2,'$' -I -o ../../gperf-3.0.1-src/tests/modula3.gperf > m3inset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o m3out m3inset.c test.o -testing Modula3 reserved words, all items should be found in the set -./m3out -v < ../../gperf-3.0.1-src/tests/modula3.gperf > modula.out -diff ../../gperf-3.0.1-src/tests/modula.exp modula.out -../src/gperf -o -S2 -I < ../../gperf-3.0.1-src/tests/pascal.gperf > pinset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o pout pinset.c test.o -testing Pascal reserved words, all items should be found in the set -./pout -v < ../../gperf-3.0.1-src/tests/pascal.gperf > pascal.out -diff ../../gperf-3.0.1-src/tests/pascal.exp pascal.out -../src/gperf -k1 -t -I -K foreign_name < ../../gperf-3.0.1-src/tests/lang-utf8.gperf > lu8inset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o lu8out lu8inset.c test.o -testing UTF-8 encoded languages, all items should be found in the set -sed -e '1,6d' -e 's/,.*//' < ../../gperf-3.0.1-src/tests/lang-utf8.gperf | ./lu8out -v > lang-utf8.out -diff ../../gperf-3.0.1-src/tests/lang-utf8.exp lang-utf8.out -gcc -c -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 ../../gperf-3.0.1-src/tests/test2.c -../src/gperf -k4 -t -l -I -K foreign_name < ../../gperf-3.0.1-src/tests/lang-ucs2.gperf > lu2inset.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o lu2out lu2inset.c test2.o -testing UCS-2 encoded languages, all items should be found in the set -./lu2out -v < ../../gperf-3.0.1-src/tests/lang-ucs2.in > lang-ucs2.out -diff ../../gperf-3.0.1-src/tests/lang-ucs2.exp lang-ucs2.out -testing SMTP keywords, case-insensitive -../src/gperf --struct-type --readonly-table --enum --global -K field_name -N header_entry --ignore-case ../../gperf-3.0.1-src/tests/smtp.gperf > smtp.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o smtp smtp.c -./smtp -../src/gperf --struct-type --readonly-table --enum --global -K field_name -N header_entry --ignore-case --compare-strncmp ../../gperf-3.0.1-src/tests/smtp.gperf > smtp.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o smtp smtp.c -./smtp -../src/gperf --struct-type --readonly-table --enum --global -K field_name -N header_entry --ignore-case --compare-lengths ../../gperf-3.0.1-src/tests/smtp.gperf > smtp.c -gcc -Wall -O3 -fms-extensions -mms-bitfields -fno-exceptions -fomit-frame-pointer -march=i386 -mcpu=i686 -o smtp smtp.c -./smtp -../src/gperf -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k1,3,'$' < ../../gperf-3.0.1-src/tests/c-parse.gperf > c-parse.out -diff ../../gperf-3.0.1-src/tests/c-parse.exp c-parse.out -2c2 -< /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k'1,3,$' */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k'1,3,$' */ -../src/gperf -j1 -i 1 -g -o -t -N is_reserved_word -k1,3,'$' < ../../gperf-3.0.1-src/tests/objc.gperf > objc.out -diff ../../gperf-3.0.1-src/tests/objc.exp objc.out -2c2 -< /* Command-line: ../src/gperf -j1 -i 1 -g -o -t -N is_reserved_word -k'1,3,$' */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -j1 -i 1 -g -o -t -N is_reserved_word -k'1,3,$' */ -../src/gperf -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' < ../../gperf-3.0.1-src/tests/chill.gperf > chill.out -diff ../../gperf-3.0.1-src/tests/chill.exp chill.out -2c2 -< /* Command-line: ../src/gperf -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' */ -../src/gperf -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k1,4,7,'$' < ../../gperf-3.0.1-src/tests/cplusplus.gperf > cplusplus.out -diff ../../gperf-3.0.1-src/tests/cplusplus.exp cplusplus.out -2c2 -< /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k'1,4,7,$' */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k'1,4,7,$' */ -../src/gperf -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k1,3,'$' < ../../gperf-3.0.1-src/tests/java.gperf > java.out -diff ../../gperf-3.0.1-src/tests/java.exp java.out -2c2 -< /* Command-line: ../src/gperf -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k'1,3,$' */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k'1,3,$' */ -../src/gperf -n -k1-8 -l < ../../gperf-3.0.1-src/tests/modula2.gperf > modula2.out -diff ../../gperf-3.0.1-src/tests/modula2.exp modula2.out -2c2 -< /* Command-line: ../src/gperf -n -k1-8 -l */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -n -k1-8 -l */ -../src/gperf -D -t -k1,'$' < ../../gperf-3.0.1-src/tests/c-parse.gperf > test-4.out -diff ../../gperf-3.0.1-src/tests/test-4.exp test-4.out -2c2 -< /* Command-line: ../src/gperf -D -t -k'1,$' */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -D -t -k'1,$' */ -../src/gperf -g -o -j1 -t -N is_reserved_word < ../../gperf-3.0.1-src/tests/gpc.gperf > gpc.out -diff ../../gperf-3.0.1-src/tests/gpc.exp gpc.out -2c2 -< /* Command-line: ../src/gperf -g -o -j1 -t -N is_reserved_word */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -g -o -j1 -t -N is_reserved_word */ -../src/gperf -m5 < ../../gperf-3.0.1-src/tests/permut2.gperf > permut2.out -diff ../../gperf-3.0.1-src/tests/permut2.exp permut2.out -2c2 -< /* Command-line: ../src/gperf -m5 */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -m5 */ -../src/gperf -m5 < ../../gperf-3.0.1-src/tests/permut3.gperf > permut3.out -diff ../../gperf-3.0.1-src/tests/permut3.exp permut3.out -2c2 -< /* Command-line: ../src/gperf -m5 */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -m5 */ -../src/gperf -m5 --ignore-case < ../../gperf-3.0.1-src/tests/permutc2.gperf > permutc2.out -diff ../../gperf-3.0.1-src/tests/permutc2.exp permutc2.out -2c2 -< /* Command-line: ../src/gperf -m5 --ignore-case */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -m5 --ignore-case */ -../src/gperf -C -E -G -I -t < ../../gperf-3.0.1-src/tests/charsets.gperf > charsets.out -diff ../../gperf-3.0.1-src/tests/charsets.exp charsets.out -2c2 -< /* Command-line: ../src/gperf -C -E -G -I -t */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -C -E -G -I -t */ -../src/gperf -C -E -G -I -t < ../../gperf-3.0.1-src/tests/languages.gperf > languages.out -diff ../../gperf-3.0.1-src/tests/languages.exp languages.out -2c2 -< /* Command-line: ../src/gperf -C -E -G -I -t */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -C -E -G -I -t */ -../src/gperf -t < ../../gperf-3.0.1-src/tests/incomplete.gperf > incomplete.out -diff ../../gperf-3.0.1-src/tests/incomplete.exp incomplete.out -2c2 -< /* Command-line: ../src/gperf -t */ ---- -> /* Command-line: 'k:\\Devel\\gperf\\3.0.1\\gperf-3.0.1\\src\\gperf.exe' -t */ -../src/gperf -h > test-6.out -diff ../../gperf-3.0.1-src/tests/test-6.exp test-6.out -3c3 -< Usage: ../src/gperf [OPTION]... [INPUT-FILE] ---- -> Usage: k:\Devel\gperf\3.0.1\gperf-3.0.1\src\gperf.exe [OPTION]... [INPUT-FILE] -only if, do, for, case, goto, else, while, and return should be found -./aout -v < ../../gperf-3.0.1-src/tests/c.gperf > test-7.out -diff ../../gperf-3.0.1-src/tests/test-7.exp test-7.out -make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/tests' -cd doc; make check -make[1]: Entering directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/doc' -make[1]: Niets te doen voor `check'. -make[1]: Leaving directory `/cygdrive/k/Devel/gperf/3.0.1/gperf-3.0.1/doc' diff --git a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log b/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log deleted file mode 100644 index 8263f49c..00000000 --- a/gnuwin32/contrib/gperf/3.0.1/gperf-3.0.1/check_err.log +++ /dev/null @@ -1,21 +0,0 @@ -../../gperf-3.0.1-src/tests/test.c: In function `main': -../../gperf-3.0.1-src/tests/test.c:25: warning: implicit declaration of function `in_word_set' -1 input keys have identical hash values, examine output carefully... -../../gperf-3.0.1-src/tests/test2.c: In function `main': -../../gperf-3.0.1-src/tests/test2.c:52: warning: implicit declaration of function `in_word_set' -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -8 input keys have identical hash values, examine output carefully... -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -make[1]: [check-test] Fout 1 (genegeerd) -- cgit v1.2.3