diff options
Diffstat (limited to 'ACE/apps/gperf/ChangeLog')
-rw-r--r-- | ACE/apps/gperf/ChangeLog | 2106 |
1 files changed, 2106 insertions, 0 deletions
diff --git a/ACE/apps/gperf/ChangeLog b/ACE/apps/gperf/ChangeLog new file mode 100644 index 00000000000..600cde48a9d --- /dev/null +++ b/ACE/apps/gperf/ChangeLog @@ -0,0 +1,2106 @@ +Tue Mar 14 21:08:12 UTC 2006 jiang,shanshan <shanshan.jiang@vanderbilt.edu> + + * apps/gperf/src/Gen_Perf.cpp + * apps/gperf/src/Key_List.cpp + * apps/gperf/src/List_Node.cpp + * apps/gperf/src/Options.cpp + Updated these files to solve the warnings when setting up "VC level 4 warnings" + on Windows. These warnings include "unreachable code", "assignment within + conditional expression", "conversion from some type to another type, possible + loss of data", "local variable may be used without having been initialized" and + so on. + Thanks to Lukas Gruetzmacher <gruetzmacher at ais-dresden dot de> for + motivating the fix to these "VC level 4 warnings". + +Wed Jan 4 22:55:24 UTC 2006 J.T. Conklin <jtc@acorntoolworks.com> + + * ChangeLog: + + Untabify. + Delete-trailing-whitespace. + + Added "Local Variables" section defining "add-log-time-format" + to a really ugly lambda expression that formats changelog + timestamps in UTC and works with both GNU Emacs and XEmacs. + +Mon Oct 3 13:52:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl> + + * src/Key_List.cpp: + Fixed might be unitialized warning in Cygwin build + +Thu Jun 9 18:34:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl> + + * src/Key_List.cpp: + Only generate the base pointer when it is used. Fixes bugzilla 2099. + Thanks to Frank Pilhofer <fp@mc.com> + +Sat Apr 30 10:56:12 UTC 2005 Johnny Willemsen <jwillemsen@remedy.nl> + + * src/Key_List.cpp: + Use option.key_name() instead of opname_, the key name is passed + as -K on the commandline. Thanks to Frank Pilhofer <fp@mc.com> + +Fri Apr 29 09:08:39 2005 Douglas C. Schmidt <schmidt@cs.wustl.edu> + + * src/Key_List.cpp (output_binary_search_function): Added a + + do {/* null */} while (&base == 0); + + to silence warnings on some compilers. Thanks to Frank Pilhofer + <fp@mc.com>. + +Fri Aug 5 15:30:00 UTC 2004 Simon Massey <simon.massey@prismtechnologies.com> + + * apps/gperf/tests/gperf_test.mpb + * apps/gperf/tests/tests.mpc + + gperf is not built on cross compiled targets, thus tests will not run! + Therefore added the dependancy to the build of these test. + +Fri Apr 23 21:18:17 2004 Ossama Othman <ossama@dre.vanderbilt.edu> + + * src/Options.h (operator !=): + * src/Options.cpp (operator !=): + + Changed return type to bool, as is the norm in modern C++. + +Tue Jan 20 17:13:29 2004 Steve Huston <shuston@riverace.com> + + * version.texi: Something in the autoconf build thought it wise to + update the date in this file. It matches the last modification + date of gperf.texi. + +Thu Jun 19 14:52:05 UTC 2003 Don Hinton <dhinton@dresystems.com> + + * tests/test-1.exp: + * tests/test-2.exp: + * tests/test-3.exp: + * tests/test-4.exp: + * tests/test-5.exp: + Added (int) casts to expected results to match the new output. + +Tue Jun 17 11:38:36 2003 Douglas C. Schmidt <schmidt@macarena.cs.wustl.edu> + + * src/Key_List.cpp (output_lookup_array): + * src/Gen_Perf.cpp (run): + * src/Key_List.cpp (already_determined): + * src/List_Node.cpp (List_Node): Added casts to prevent GCC 3.3 + from complaining about stupid stuff... Thanks to Bala for + reporting this. + +Sun Jul 28 17:04:54 2002 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> + + * src/gperf.cpp (main): Only generate the timestamps if the + DEBUGGING option ('-d') is enabled. Thanks to Kier Schmitt + <SchmittKC@kpt.nuwc.navy.mil> for this suggestion. + +Tue Feb 26 23:15:47 2002 Ossama Othman <ossama@uci.edu> + + * gperf.texi: + + Added missing "@dircategory" entry. It is required for proper + installation when using `install-info'. + + Use "@direntry" instead of "{START,END}-INFO-DIR-ENTRY" + directly. + + * gperf.info: + + Regenerated this file. + +Mon Jan 14 14:43:53 2002 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + Re-generate dependencies. + +Mon Dec 24 12:47:27 2001 Carlos O'Ryan <coryan@uci.edu> + + * src/Options.cpp: + Add temporary fix until something better shows up, at least it + compiles this way! + +Sat Sep 22 09:06:10 2001 Douglas C. Schmidt <schmidt@macarena.cs.wustl.edu> + + * src/Makefile: Removed the rules.lib.GNU file since it didn't + seem to be needed and was causing problems for MinGW. Thanks to + Jeff McNiel <JMcNiel@datacrit.com> for reporting this. + +Wed Sep 19 02:29:37 2001 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + Another minor problem in the generated Makefile, i.e. the script + continues to break for filenames that contain a '+' sign in them. + +Wed Sep 12 16:06:46 2001 Krishnakumar B <kitty@cs.wustl.edu> + + * tests/Makefile: + + Added missing dependency in runtests and entry in realclean for + taoout. This fixes a long standing nagging problem. + +Sat Sep 8 22:40:21 2001 Krishnakumar B <kitty@cs.wustl.edu> + + * src/Key_List.cpp (output_lookup_array): + + Removed a compilation warning on 64-bit Linux. + +Sun Jul 29 12:17:55 2001 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> + + * The following changes fix a bug reported by Karl Proese + <karl.proese@mchp.siemens.de> and Jeff Parsons. + + * tests: Patched the *.exp files to include the new WORDLIST_SIZE + macro. + + * src/Key_List.cpp: Generate a new const/enum that defines the + size of the wordlist array. This is now used to fix a nasty bug + where MAX_HASH_VALUE was used instead of WORDLIST_SIZE. + + * src/Key_List.cpp (output_lookup_array): Reformatted the + debugging output to make it easier to tell what's going on. + + * tests/tao.exp: Updated this file based on the expected output of + the new test example. + + * tests/tao.gperf: Updated this to use a different set of keys since + they exercise the range of screwy inputs better than the earlier + contents of this file. In particular, this should detect + certain nasty bugs that were plaguing GPERF earlier for keyword + sets with a large number of duplicates. + + * src/Key_List.cpp (read_keys): Clarified the debugging message + to indicate the key links are *static*. + + * src/Options.cpp (parse_args): Fixed a stupid typo... + +Sun Jul 1 08:33:56 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> + + * tests/Makefile: For some strange reason there was a BIN2 macro + but no BIN macro, which caused problems... + + * tests: Added support to check for the condition that caused + TAO's IDL compiler to break on keylists that have a large number + of duplicates! + + * src/Key_List.cpp (output_lookup_function): Fixed a tiny mistake + where "slot < MAX_HASH_VALUE" should have been "slot <= + MAX_HASH_VALUE". Thanks to Vsevolod Novikov + <novikov@df.nnov.rfnet.ru> and Jeff Parsons + <parsons@cs.wustl.edu> for helping to track this down. + +Sat Jun 2 13:30:30 2001 Douglas C. Schmidt <schmidt@tango.doc.wustl.edu> + + * src/Makefile (INSTALL): Fixed several minor problems with the + Makefile so that this will build correctly on mingw. Thanks to + Cristian Ferretti <cristian_ferretti@yahoo.com> for pointing + this out. + +Fri Mar 30 11:30:54 2001 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + And we need to patch dependencies yet another time. + +Wed Jan 24 13:44:53 2001 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + And I got nailed by the same problem again: + Just doing 'make depend' generates invalid dependencies for some + reason, had to manually patch them. + +Mon Oct 16 10:34:06 2000 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + Just doing 'make depend' generates invalid dependencies for some + reason, had to manually patch them. + +Fri Apr 21 20:33:11 2000 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + Add dependencies for the runtest rule, otherwise parallel builds + fail. + +Thu Apr 20 09:04:27 2000 Carlos O'Ryan <coryan@uci.edu> + + * tests/Makefile: + Just running 'make depend' on this file introduces an spurious + 'c++' string in the middle of the dependencies. Have no time to + figure out why. + +Wed Mar 8 17:26:22 2000 Ossama Othman <ossama@uci.edu> + + * src/Key_List.cpp (Key_List, ~Key_List, output_types): + + Fixed memory leaks related to lack of deallocation of variables + that were initialized with static strings, and then + reinitialized with strings that were dynamically allocated. + [Bug 334] + +Tue Feb 22 18:25:02 2000 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp, + src/Bool_Array.cpp, + src/Gen_Perf.cpp, + src/Hash_Table.cpp, + src/Options.h, + src/Options.cpp: Renamed the DEBUG enum to DEBUGGING enum + to avoid problems with -DDEBUG is enabled. Thanks to + Tobin Bergen-Hill <tbhill@dctd.saic.com> for reporting this. + +Sat Nov 13 18:43:53 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp: The code for output_lookup_function() was + not being called if option[GLOBAL] was set. Thanks to Eugene + Surovegin <ebs@glasnet.ru> for reporting the bug and the fix. + +Tue Aug 31 14:47:06 1999 Pradeep Gore <pradeep@flamenco.cs.wustl.edu> + + * Makefile: + Fix for Bug#:250 - The Makefile now uses ACE's build commands. + This also gets rid of the build warning on egcs when compiling + with repo=1. Thanks to David, Ossama, Bala and Yamuna. + +Thu Jul 1 09:31:32 1999 Carlos O'Ryan <coryan@cs.wustl.edu> + + * Makefile: + If we are cross compiling we shouldn't compile gperf, it is not + going to help anyway, because we could not run it. + +Sun Jun 27 20:40:30 1999 Douglas C. Schmidt <schmidt@ace.cs.wustl.edu> + + * src/Key_List.cpp: Added some initializers to keep EGCS from + complaining. + +Wed Jun 23 07:24:58 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp (output_hash_function): Use conditional + compilation rather than a runtime check to test if + ACE_STANDARD_CHARACTER_SET_SIZE == ACE_EBCDIC_SIZE. This + suppresses a warning on DEC UNIX. Thanks to David Levine for + reporting this. + +Fri Jun 18 16:54:43 1999 Irfan Pyarali <irfan@cs.wustl.edu> + + * apps/gperf/src/Key_List.cpp (output_lookup_array): Prefixed + debug message with "GPERF". + +Thu Jun 17 18:04:30 1999 Douglas C. Schmidt <schmidt@mambo.cs.wustl.edu> + + * tests/test-[1-5].exp: Fixed all the tests to account for the new + EBCDIC output. + +Thu Jun 17 17:25:00 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp (output_hash_function): Generate an asso_values + table that will have the appropriate values for both EBCDIC or + ASCII, depending on the platform. + + * src/Key_List.cpp (output_hash_function), + src/Gen_Perf.cpp (Gen_Perf), + src/Vectors.h: Replaced the use of ALPHA_SIZE with + ACE_STANDARD_CHARACTER_SET_SIZE, which works correctly for + EBCDIC platforms, as well as ASCII ones. Thanks to + Jim Rogers <jrogers@viasoft.com> for this suggestion. + +Wed Jun 16 19:08:01 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Key_List.cpp: Fixed the key_word table generation so that it + generates the "default fill" string for the null entries in the + table. Thanks to Irfan and Naga for helping in this. + +Sun Jun 6 15:47:23 1999 Douglas C. Schmidt <schmidt@danzon.cs.wustl.edu> + + * src/Key_List.cpp (output_switch): Make sure to generate "const + char *resword;" rather than "char *resword" since otherwise C++ + compilers correctly complain. + + * tests: Fixed a bunch of warnings related to misuses of "const + char *". + +Sun Jun 6 10:30:09 1999 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests/test-4.exp: Fixed another use of "index". Thanks to David + Levine for reporting this. + +Sat Jun 5 23:17:39 1999 Douglas C. Schmidt <schmidt@danzon.cs.wustl.edu> + + * Replaced all uses of "index" with "slot" to avoid problems with + broken C++ compilers that define a macro called "index". + +Tue May 4 14:24:27 1999 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.cpp (parse_args): Removed %a flag from -v option and + used ACE_OS::exit (0) instead. + +Mon Apr 26 15:42:54 1999 Ossama Othman <othman@cs.wustl.edu> + + * tests/test-{1,2,3,4,5}.exp: Forgot to update the expected test + output to reflect the version string update listed below. + +Mon Apr 26 10:42:08 1999 Ossama Othman <othman@cs.wustl.edu> + + * src/Version.cpp (version_string): Updated version string to "2.8 + (ACE version)" since 2.7 is used by the old Cygnus maintained + gperf. + + * src/*.{h,cpp}: Updated copyright/distribution information to GPL + v2 style notice. + +Sun Apr 25 16:16:12 1999 Ossama Othman <othman@cs.wustl.edu> + + * mdate-sh: Added this file to the CVS repository. It will be + used once the auto{conf,make} integrations are in place. + +Sun Apr 25 16:13:40 1999 Ossama Othman <othman@cs.wustl.edu> + + * COPYING: Updated to GPL version 2. + +Sat Apr 24 18:18:35 1999 Ossama Othman <othman@cs.wustl.edu> + + * gperf.1: + * gperf.info: + * gperf.texi: Added missing quote, cosmetic fix, regenerated + gperf.info. + + * src/Key_List.cpp + * src/Options.h: + * src/Options.cpp: Merged Cygnus patch that allows the user to + specify a default fill expression/value in the keyword table. + Updated help message with new `-F' option. Made some cosmetic + fixes to the help message, too. + + * tests/test.cpp: Minor spelling correction in comment + + * tests/test-6.exp: Updated with new expected gperf output. + +Mon Nov 9 23:37:09 1998 Vishal Kachroo <vishal@cs.wustl.edu> + + * src/Key_List.cpp: Fixed the problem with Binary and Linear + Search code. + +Sat Oct 10 18:40:56 1998 Vishal Kachroo <vishal@merengue.cs.wustl.edu> + + * tests/test-6.exp (Usage): copied the output of gperf -h option + into test-6.exp. This test was failing because it didn't have + the -b option previously. Thanks to David for reporting the + failure of tests. + + * src/Options.cpp : Changed the option case 'h' to include the + following line " -b/t Code for Linear Search". + +Fri Oct 9 01:06:56 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.cpp : + * src/Key_List.cpp (output_linear_search_function): Changed option + -z to -b for generating linear search. Removed <len> parameter + from the lookup code. We dont need <len> in the generated code + in the case of linear/binary search options. + +Thu Oct 8 17:40:19 1998 Vishal Kachroo <vishal@merengue.cs.wustl.edu> + + * src/Gen_Perf.cpp (run): added the linear search changes. + * src/Gen_Perf.h : added the linear search changes. + * src/Options.cpp : added the linear search changes. + * src/Options.h : added the linear search changes. + * src/Key_List.cpp : added the linear search changes. + * src/Key_List.h : added the linear search changes. + + +Wed Oct 7 01:20:35 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * tests/test-6.exp: + Updated thif file to the current help message. Thanks to Hans + for reporting this. + +Tue Oct 6 11:51:47 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Key_List.cpp (Key_List): Fixed g++ warnings. + +Tue Oct 6 02:48:37 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + Thanks to Vishal the following things have been done to get Binary + Search code generated from GPERF. + + * src/Options.cpp (parse_args): Added the -B option for the binary + search. + + * src/Options.h (enum Option_Type): Added the BINARYSEARCH in the + enumeration. + + * src/Key_List.cpp : Added the function + output_binary_search_function(void). Changed the output function + to include the Binary Search option. Used option[BINARYSEARCH] + to distinguish the binary search case from the hashing case. + + * src/Key_List.h : Added the prototype for + output_binary_search_function. Also added the key_sort variable + to enable sorting based on key values. + +Mon Oct 5 18:24:15 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Gen_Perf: Created a new function that allows us to split the + binary search and perfect hash logic apart. Thanks to Vishal + and Alex for reporting this. + + * src/Key_List.cpp (dump): Fixed the unsigned problems with line + 1502 YET again... Thanks to David/Darrell for reporting this. + +Sun Oct 4 20:42:56 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src: Fixed yet another problem with switching from array-based + lookups to switch-based lookups. Thanks to Carlos for reporting + this. + +Sat Oct 3 19:36:52 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.h: + * src/Options.cpp: + * src/Key_List.h: + * src/Key_List.cpp: Reverted all the changes done for Binary + Search. + +Sat Oct 3 17:51:10 1998 Carlos O'Ryan <coryan@cs.wustl.edu> + + * tests/test-6.exp: Added the new -B option. + +Sat Oct 3 13:47:40 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Key_List.cpp (output_binary_search_function): Added a new + line after binary search code. + +Sat Oct 3 10:11:15 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.cpp (parse_args): Changed the option for binary + search to '-B' + +Fri Oct 2 21:38:54 1998 Vishal Kachroo <vishal@merengue.cs.wustl.edu> + + * src/Options.cpp (parse_args): Added the -b option for the binary + search. + + * src/Options.h (enum Option_Type): Added the BINARYSEARCH in the + enumeration. + + * src/Key_List.cpp : Added the function + output_binary_search_function (void). Changed the output + function to include the Binary Search option. Used + option[BINARYSEARCH] to distinguish the binary search case from + the hashing case. + + * src/Key_List.h : Added the prototype for + output_binary_search_function. Also added the key_sort variable + to enable sorting based on key values. + +Thu Oct 1 12:40:59 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.cpp (parse_args): Comments for Vishal to incorporate + Binary Seach on to GPERF. + +Wed Sep 30 16:55:53 1998 Carlos O'Ryan <coryan@cs.wustl.edu> + + * tests/Makefile: Updated dependencies, added a realclean target + to remove the output from the tests. + +Wed Sep 30 12:41:29 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp (dump): Fixed another signed/unsigned int + mismatch. Thanks to David Levine for reporting this. + +Mon Sep 28 13:18:05 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests: Updated all the test-*.exp files to reflect the latest + "unsigned" changes. + + * src/Key_List.cpp (output_hash_function): Fixed another use of + int to be unsigned int. + + * tests/test.cpp: Fixed the signature of in_word_set() to be + consistent with the new gperf. Thanks to David Levine and + Carlos O'Ryan for this fix. + +Sun Sep 27 00:04:18 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp (dump): Reverted back to using int for + keyword_width to keep certain compilers happy. Thanks to David + Levine for reporting this. + + * src/Key_List: MAke sure that we don't generate the lookup table + twice if we're forced to change to the switch format. + + * src/Key_List: Replaced the use of "int" with "unsigned int" for + parameters and hash values. + + * src/Key_List: Fixed the code so that if we change over to using + the switch statement then we use the already generated keyword + table appropriately. This prevents unnecessary warnings from + some C++ compilers. Thanks to David Levine for reporting this. + + * src/Key_List.cpp (output): If it's not possible to use the + lookup_array implementation of -D (e.g., because there aren't + enough empty slots in the lookup_array), then default to using + -S1 option... This fixes a nasty bug that's been in gperf for + years.... + + * src/Key_List.cpp: (output_lookup_array): Added a "return 0" to + make the C++ compiler happy. Thanks to David for noticing this. + + * tests/c++-res.exp: Added a new test for C++ keywords. + + * tests/corba.gperf: Added a proper test for CORBA keywords. + +Sat Sep 26 15:32:56 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Hash_Table.cpp (find): Fixed a bug in the increment + computation that arose if the -n option was given. + + * src: Removed all set_ and get_ prefixes to be more consistent + with ACE programming guidelines. + + * src: GPERF now Purifies cleanly. + + * src/Gen_Perf: Cleaned up the code so that if errors occur they + get handled properly. + + * src/List_Node: Added a destructor to remove the memory when + we're done. + + * src: Continued to tidy up the source code so that it is better + designed and Purifies cleanly on shutdown. + + * src/Makefile: Removed the need for libGperf.{a,so}. + + * src/Key_List: Changed read_keys() to return a value so that we + can check for errors. + +Fri Sep 25 08:54:41 1998 David L. Levine <levine@cs.wustl.edu> + + * src/Key_List.cpp (Key_List ctor): reordered initializers to + match declaration order. + +Thu Sep 24 18:20:36 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List: Changed char_set field to keysig to be consistent + with the paper. + + * src/Hash_Table: Renamed operator() to find(). What the heck was + I thinking in '92?! + + * src/gperf.cpp (main): Removed the LARGE_STACK_ARRAYS option. + This was annoying... + +Tue Sep 22 21:30:59 1998 David L. Levine <levine@cs.wustl.edu> + + * tests/corba.exp: added this file, it hadn't been checked in. + +Tue Sep 22 18:02:01 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests/Makefile: Added a new test for CORBA keywords. + + * tests: Added a new test for the type of input that is causing + problems with TAO's IDL compiler. + + * src/Key_List.cpp (output_lookup_array): Changed the assertion + from assert (i != 0) to assert (i >= 0) since I think that's + correct... (ah, so THAT's why comments are important thinks the + '92 Doug... ;-)). + + * src/Options: Improved the comments for the '-h' option to + reflect current reality... + +Thu Sep 17 11:42:53 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp (output_lookup_array): Put 'signed' keyword + before 'char lookup' to avoid problems on platforms where char + is defined as unsigned. Thanks to Margherita Vittone Wiersma + <vittone@fndaub.fnal.gov> for reporting this. + +Wed Sep 16 19:08:13 1998 David L. Levine <levine@cs.wustl.edu> + + * Makefile: don't run build/run tests on CROSS-COMPILE platforms. + Thanks to Raja Ati <rati@montereynets.com> for reporting this + problem. + +Wed Sep 16 18:18:41 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests/Makefile: Changed CFLAGS to CCFLAGS to make aCC happy on + HP/UX. Thanks to John Mulhern for reporting this. + +Tue Sep 15 18:14:08 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests/test-6.exp (Usage): Fixed the usage so diff should no + longer complain... Thanks to David for reporting this. + +Tue Sep 15 21:54:07 1998 David L. Levine <levine@cs.wustl.edu> + + * tests/Makefile: filter timestamps from test output so that + diffs will pass. + +Tue Sep 15 18:14:08 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests: Updated the expected output to look for 2.7 vs 2.6 + of gperf. + +Thu Sep 10 16:50:21 1998 Carlos O'Ryan <coryan@cs.wustl.edu> + + * tests/Makefile: + The test programs were not linking against ACE. + +Tue Sep 8 12:45:53 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * tests/test.cpp: Added #include "ace/OS.h" so that the ACE_RCSID + macro is defined. Thanks to Arturo Montes + <mitosys@colomsat.net.co> for reporting this. + +Sat Aug 22 08:44:15 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.cpp : Fixed the typo (-V instead of -v) under 'case + h' print string. + +Fri Aug 21 11:57:57 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/Key_List.cpp (set_output_types): Make sure that we leave an + extra space between the struct tag and the wordlist so the + compiler doesn't complain. Thanks to Andy Gokhale for reporting + this. + + * src/gperf.cpp: Modified the main() program so that it doesn't + print the starting time until AFTER we've parsed the arguments. + + * src/Version.cpp: Updated the version to 2.7 to reflect the + new changes. + + * src/Options.cpp (operator): Added a new -V option, which just + exits with a value of 0. This is useful for checking if gperf + exists in the search path. We use the feature in TAO. + + * src: Removed the globally overloaded new operator. This was a + portability pain and didn't really improve performance very + much. + + * src/Options.cpp (operator): Fixed '%e' to be '%r' to come up to + speed with ACE changes. + +Sat Aug 15 07:59:58 1998 David L. Levine <levine@cs.wustl.edu> + + * src/gperf.cpp (main): added ACE_UNUSED_ARGS for argc and + argv if ! ACE_HAS_GPERF. + +Fri Aug 14 13:47:00 1998 David L. Levine <levine@cs.wustl.edu> + + * src/new.cpp (delete): aded ACE_UNUSED_ARG (ptr). + +Fri Jul 31 18:28:45 1998 Gonzalo Diethelm <gonzo@tango.cs.wustl.edu> + + * src/Bool_Array.cpp: + * src/Gen_Perf.cpp: + * src/Hash_Table.cpp: + * src/Iterator.cpp: + * src/Key_List.cpp: + * src/List_Node.cpp: + * src/Options.cpp: + * src/Vectors.cpp: + * src/Version.cpp: + * src/gperf.cpp: + * src/new.cpp: + * tests/test.cpp: + Added ACE_RCSID to these files. + +Tue Jul 21 09:30:51 1998 David L. Levine <levine@cs.wustl.edu> + + * src/gperf.cpp (main): added a trivial main () if ! ACE_HAS_GPERF, + so that the link succeeds. + +Mon Jul 20 16:02:18 1998 David L. Levine <levine@cs.wustl.edu> + + * src/Makefile: fixed INSTALL. It works with the latest + $ACE_ROOT/include/makeinclude/rules.lib.GNU. + +Mon Jul 20 15:35:59 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * Wrapped all the files with "#if defined (ACE_HAS_GPERF)" so that + it compiles on appropriate platforms. + +Sun Jul 19 22:21:17 1998 David L. Levine <levine@cs.wustl.edu> + + * src/new.cpp (new): wrapped assignment with parens where used + as a conditional. + + * src/Iterator.cpp (Iterator), List_Node.cpp (List_Node), + Hash_Table.cpp (Hash_Table): + reordered initializers to match declaration order. + + * src/Hash_Table.cpp (~Hash_Table), + * src/Bool_Array.cpp (init): cast sizeof + to int to avoid compiler (g++/Linux alpha) warning about + mismatch with %d format specifier. + + * src/new.cpp (new): use ACE_THROW_SPEC instead of + _RWSTD_THROW_SPEC. + +Sun Jul 19 13:11:59 1998 Douglas C. Schmidt <schmidt@tango.cs.wustl.edu> + + * src/new.cpp: Added support for the _RWSTD_THROW_SPEC macro for + DEC UNIX. Thanks to David Levine for reporting this. + + * src/Key_List.cpp: Fixed one of those nasty "for loop counter + scoping glitches. Again, thanks to David Levine and DEC C++ for + catching this. * src/Key_List.cpp (reorder): Clarified the code + so that we don't write horrible C-style hacks. Thanks to David + Levine and the DEC C++ compiler for finding this one! + +Tue Jun 30 15:43:16 1998 Alexander Babu Arulanthu <alex@cs.wustl.edu> + + * src/Options.h : + * src/Options.cpp : + * src/Key_List.cpp : Added the following options to gperf. + - "-m" To mute warnings. (If -D option is enabled, + gperf doesnt say anything about duplicate hash + values etc. + - "-M" To skip class definition while in C++ mode. + - "-J" To skip the line "#include <string.h>" in the + output. + +Thu May 14 16:37:39 1998 Douglas C. Schmidt <schmidt@flamenco.cs.wustl.edu> + + * src: ACE'ifed most of the gperf source code, yow! + +Sun Apr 14 14:31:10 1996 Douglas C. Schmidt (schmidt@tango.cs.wustl.edu) + + * src: Changed things so that there's no longer any use of the + Read_Line and Std_Err code. All of this has been pushed into + the ACE components, which is where it belongs... + + * src: Changed things so that there's no longer any use of the + pointless inheritance in the code. This was a result of my not + understanding inheritance back in 1989... ;-) + + * Began to integrate GNU gperf into the ACE release. Started off + by bringing the standard GNU version up to date wrt to the + changes I made back in 1991! + +Tue Oct 10 16:37:28 1995 Mike Stump <mrs@cygnus.com> + + * src/new.cc: Since malloc/delete are not paired, we cannot call + free. + +Wed Jan 4 12:40:14 1995 Per Bothner <bothner@kalessin.cygnus.com> + + * src/Makefile.in ($(TARGETPROG)): Link with $(LDFLAGS). + Patch from John Interrante <interran@uluru.stanford.edu>. + +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 <bothner@kalessin.cygnus.com> + + * 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 <wbader@CSEE.Lehigh.Edu>. + +Fri Jul 15 09:38:11 1994 Per Bothner (bothner@cygnus.com) + + * src/std-err.cc: #include <errno.h>, 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. + +Mon Nov 4 15:04:41 1991 Douglas C. Schmidt (schmidt at bastille.ics.uci.edu) + + * Need to do something about the end-of-line marker being + hard-coded to '\n'... + + * Need to do something about the comment character being + hard-coded to '#'... + +Fri Sep 27 09:30:15 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) + + * Fixed a stupid problem with printout out a local enum with the + -E option (I forgot to check for the case of 0 duplicates, so it + was saying 1 duplicate instead!). + +Mon Aug 19 00:39:40 1991 Douglas C. Schmidt (schmidt at javel.ics.uci.edu) + + * Yow, all finished making gperf run with cfront/Saber C++. Not + really all that hard, actually, though did need to remove some + GNU specific hacks, like dynamically sized arrays and + initializing class data members in their declarations, etc. + + * Bumped up the version # to reflect the recent changes. + +Sun Aug 18 22:25:32 1991 Douglas C. Schmidt (schmidt at javel.ics.uci.edu) + + * Changed passage of Options::usage function in Options.C to have + a leading `&' so that Saber C++ wouldn't complain... + + * Added a new header file called gperf.h that includes system-wide + info. + + * Hacked up the release to work with Saber C++! Changed all *.cc + files to *.C. + +Mon Aug 5 21:18:47 1991 Douglas C. Schmidt (schmidt at net1.ics.uci.edu) + + * Yow, hacked in the nifty changes to the Std_Err error handling + abstraction. This now adds format string support for printing + out signals and the name of the function when things go wrong. + Make changes throughout the source to make use of the new + facilities and also to make sure all previous uses of + Std_Err::report_error are now prefixed by the name of the class. + +Tue Jul 30 00:02:39 1991 Douglas C. Schmidt (schmidt at net4.ics.uci.edu) + + * Make sure to add 1 to the Key_List::total_duplicates value when + printing it out since any time we have more than zero duplicates + we really have two or more duplicates! + + * Added support for the -O (optimize option). This option + optimizes the generated lookup function by assuming that all + input keywords are members of the keyset from the keyfile. + + * Added #define DUPLICATES and #define HASH_VALUE_RANGE (and of + course the enum equivalent) to the generated output. Don't know + how useful this will be, but it allows us to determine at a + glance whether we've got a minimal perfect hash function (in + which case TOTAL_KEYWORDS = HASH_VALUE_RANGE, and DUPLICATES = + 0). + + * 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! + + * Yow, as part of my Software Practice and Experience submission + writeup I realized I needed to make the # comment character work + correctly. Now if you put a backslash character ('\') in front + of the # it treats the first character as a #. Naturally, to + put a '\' character on the front of the line you need to escape + it also, i.e., + \\I'm a line that starts with only one \ + # I'm a comment line + \#define I'm walking a fine line... ;-) + +Wed Jun 26 11:21:02 1991 Douglas C. Schmidt (schmidt at bastille.ics.uci.edu) + + * Changed all uses of the identifier `iteration_number' to + `generation_number' (also updated the paper!). + +Tue Apr 9 07:59:42 1991 Doug Schmidt (schmidt at net4.ics.uci.edu) + + * Had to change a whole bunch of little thangs in key-list.cc and + list-node.cc to make the -I option work. + + * Changed an alloca statement in key-list.cc to reflect the + strncasecmp modification (i.e., we now need to be able to + allocate a longer buffer if the -I option is used). + +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... + + * Boy, it has been a *long* time since I hacked this puppy. Let's + see, I'm about to add long-overdue support for case-insensitive + string comparisons to gperf's generated output code. We are + going to employ the hitherto unused option -I to indicte this! + +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 <stddef.h> 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. + +Local Variables: +mode: change-log +add-log-time-format: (lambda () (progn (setq tz (getenv "TZ")) (set-time-zone-rule "UTC") (setq time (format-time-string "%a %b %e %H:%M:%S %Z %Y" (current-time))) (set-time-zone-rule tz) time)) +indent-tabs-mode: nil +End: |