diff -C 2 -rP gperf-3.0.1/COPYING gperf-3.0.2/COPYING *** gperf-3.0.1/COPYING Sat Aug 19 07:15:50 2000 --- gperf-3.0.2/COPYING Sat May 14 14:22:35 2005 *************** *** 3,7 **** 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 --- 3,7 ---- Copyright (C) 1989, 1991 Free Software Foundation, Inc. ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. Everyone is permitted to copy and distribute verbatim copies diff -C 2 -rP gperf-3.0.1/ChangeLog gperf-3.0.2/ChangeLog *** gperf-3.0.1/ChangeLog Thu Jun 12 17:01:58 2003 --- gperf-3.0.2/ChangeLog Thu Jun 29 14:57:15 2006 *************** *** 1,2 **** --- 1,101 ---- + 2006-06-29 Brendan Kehoe + + * gperf-3.0.2 released. + + * doc/Makefile.in (all): No longer depend on dvi. + + 2006-01-22 Brendan Kehoe + + * doc/gperf.texi: Update copyright to be 1989-2006. + (UPDATED): Change to 22 January 2006. + * doc/gperf.1 (TH): Fix date. + * configure.in: Update copyright years. + * configure: Regenerate. + * src/Makefile.in: Update copyright years. + + * doc/gperf.{dvi,ps,pdf}: Regenerated by manually invoking tex + instead of trying to use texi2dvi, whose run of etex ends up + actually always running pdfetex, thus always recreating gperf.pdf. + + 2006-01-13 Brendan Kehoe + + * NEWS: Add note about #line directive fix. + * doc/gperf.1: Regenerate with Makefile.devel. + + * doc/gperf.texi (UPDATED): Correct to be today. + * doc: Regenerated by doing make in a configured tree. + Requires makeinfo, texi2dvi, texi2pdf, and texi2html. + + * configure.in: Add AC_OBJEXT and AC_EXEEXT. + * lib/Makefile.in (OBJEXT): Define for subst. + (OBJECTS): Use $(OBJEXT) instead of '.o'. + * src/Makefile.in: Make dependencies use $(OBJEXT). + (OBJEXT, EXEEXT): Define for subst. + (TARGETPROG): Add $(EXEEXT). + (OBJECTS): Use $(OBJEXT) instead of '.o'. + (clean): Remove *.$(OBJEXT) instead of *.o. + + 2006-01-13 Bruno Haible + + Fix #line directives for filenames containing backslashes. + * src/output.cc (output_line_directive): New function. + (output_keyword_entry, Output::output): Use it. + Reported by Alexander . + + * src/options.cc (Options::parse_options): Update years in --version + output. + + 2005-08-29 Brendan Kehoe + + * src/keyword.cc: Tweak comment to avoid nesting. + + 2005-08-27 Bruno Haible + + Fix missing ranlib detection when cross-compiling. + * aclocal.m4 (CL_PROG_RANLIB): Remove macro. + * lib/configure.in: Use AC_PROG_RANLIB instead of CL_PROG_RANLIB. + + 2005-07-30 Bruno Haible + + * src/version.cc: Bump version number to 3.0.2. + * 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. + + 2005-07-30 Bruno Haible + + * src/positions.h: Add forward declarations of friend classes. + Needed for compilation with g++ 4.0. + + 2004-08-22 Bruno Haible + + * tests/Makefile.in (check-lang-syntax): Add test for the + --length-table-name option. + * tests/test-6.exp: Update. + + 2004-08-21 Bruce Lilly + + * src/input.cc (Input::read_input): Accept length-table-name + declaration. + * src/options.h (Options::get_lengthtable_name, + Options::set_lengthtable_name): New declarations. + (Options): Add field _lengthtable_name. + * src/options.icc (Options::get_lengthtable_name): New inline method. + * src/options.cc (DEFAULT_LENGTHTABLE_NAME): New constant. + (Options::long_usage): Document --length-table-name option. + (Options::Options): Initialize _lengthtable_name field. + (Options::~Options): Update. + (Options::set_lengthtable_name): New method. + (long_options): Add option --length-table-name. + (Options::parse_options): Implement --length-table-name option. + * src/output.cc (Output::output_keylength_table, output_switch_case, + Output::output_lookup_function_body): Use option.get_lengthtable_name. + * doc/gperf.texi (Gperf Declarations): Document %define + length-table-name. + (Output Details): Document --length-table-name option. + 2003-06-12 Bruno Haible diff -C 2 -rP gperf-3.0.1/Makefile.in gperf-3.0.2/Makefile.in *** gperf-3.0.1/Makefile.in Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/Makefile.in Sat May 14 14:22:35 2005 *************** *** 20,24 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 20,24 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #### Start of system configuration section. #### diff -C 2 -rP gperf-3.0.1/Makefile.msvc gperf-3.0.2/Makefile.msvc *** gperf-3.0.1/Makefile.msvc Sat May 17 17:49:22 2003 --- gperf-3.0.2/Makefile.msvc Sat May 14 14:22:35 2005 *************** *** 19,23 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 19,23 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #### Start of system configuration section. #### diff -C 2 -rP gperf-3.0.1/Makefile.vms gperf-3.0.2/Makefile.vms *** gperf-3.0.1/Makefile.vms Tue May 27 20:25:17 2003 --- gperf-3.0.2/Makefile.vms Sat May 14 14:22:35 2005 *************** *** 19,23 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 19,23 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #### Start of system configuration section. #### diff -C 2 -rP gperf-3.0.1/NEWS gperf-3.0.2/NEWS *** gperf-3.0.1/NEWS Thu Jun 12 17:02:42 2003 --- gperf-3.0.2/NEWS Fri Jan 13 16:07:03 2006 *************** *** 1,2 **** --- 1,9 ---- + New in 3.0.2: + + * Compiles with g++-4.0.x. + * Added option --length-table-name. + * Added declaration %define length-table-name. + * Fixed #line directives for filenames containing backslashes. + New in 3.0.1: diff -C 2 -rP gperf-3.0.1/README.woe32 gperf-3.0.2/README.woe32 *** gperf-3.0.1/README.woe32 Tue Apr 29 09:57:44 2003 --- gperf-3.0.2/README.woe32 Sun Aug 22 15:50:36 2004 *************** *** 3,6 **** --- 3,15 ---- - Requires MS Visual C/C++ 4.0 or 5.0 or 6.0 or 7.0. + Note that binaries created with MSVC 7.0 should not be distributed: They + depend on a closed-source library 'msvcr70.dll' which is not normally part + of a Woe32 installation. You cannot distribute 'msvcr70.dll' with the + binaries - this would be a violation of the GPL and of the Microsoft EULA. + You can distribute the binaries without including 'msvcr70.dll', but this + will cause problems for users that don't have this library on their system. + Therefore it is not recommended. This problem does not occur with MSVC 6.0 + and earlier. + - Cannot build in a separate directory. *************** *** 12,16 **** C:\Program Files\Microsoft Visual Studio\VC98\bin\vcvars32.bat In a typical MSVC7.0 installation, it can be achieved by running ! C:\Program Files\Microsoft Visual Studio .NET\VC7\bin\vcvars32.bat nmake -f Makefile.msvc --- 21,25 ---- C:\Program Files\Microsoft Visual Studio\VC98\bin\vcvars32.bat In a typical MSVC7.0 installation, it can be achieved by running ! C:\Program Files\Microsoft Visual Studio .NET\Common7\Tools\vsvars32.bat nmake -f Makefile.msvc diff -C 2 -rP gperf-3.0.1/aclocal.m4 gperf-3.0.2/aclocal.m4 *** gperf-3.0.1/aclocal.m4 Sat Aug 19 10:15:10 2000 --- gperf-3.0.2/aclocal.m4 Mon Aug 29 10:50:26 2005 *************** *** 1,6 **** AC_PREREQ(2.12) - AC_DEFUN(CL_PROG_RANLIB, [AC_CHECK_PROG(RANLIB, ranlib, ranlib, true)]) - AC_DEFUN(CL_PROG_INSTALL, [dnl This is mostly copied from AC_PROG_INSTALL. --- 1,4 ---- Only in gperf-3.0.1: bld diff -C 2 -rP gperf-3.0.1/configure gperf-3.0.2/configure *** gperf-3.0.1/configure Wed May 7 11:19:21 2003 --- gperf-3.0.2/configure Sun Jan 22 12:12:03 2006 *************** *** 1,8 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.57. # ! # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. --- 1,7 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.59. # ! # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. *************** *** 21,27 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 20,27 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 42,46 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 42,46 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 219,222 **** --- 219,223 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 225,232 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 226,233 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 632,636 **** # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` --- 633,637 ---- # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` *************** *** 672,679 **** ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 673,680 ---- ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 747,753 **** Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in --- 748,754 ---- Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in *************** *** 814,823 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir --- 815,857 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac cd $ac_dir *************** *** 830,834 **** $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help --- 864,868 ---- $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help *************** *** 844,849 **** cat <<\_ACEOF ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. --- 878,882 ---- cat <<\_ACEOF ! Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. *************** *** 857,861 **** It was created by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ --- 890,894 ---- It was created by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ *************** *** 934,950 **** ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" --- 967,983 ---- ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" *************** *** 980,989 **** *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1013,1022 ---- *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1014,1018 **** do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo --- 1047,1051 ---- do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo *************** *** 1033,1037 **** echo "$as_me: exit $exit_status" } >&5 ! rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status --- 1066,1070 ---- echo "$as_me: exit $exit_status" } >&5 ! rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status *************** *** 1113,1117 **** ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set --- 1146,1150 ---- ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set *************** *** 1130,1140 **** *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac --- 1163,1173 ---- *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac *************** *** 1186,1190 **** echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 --- 1219,1223 ---- echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 *************** *** 1214,1217 **** --- 1247,1252 ---- + + ac_aux_dir=$srcdir *************** *** 1268,1278 **** # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1303,1313 ---- # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1304,1314 **** # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi --- 1339,1349 ---- # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi *************** *** 1324,1334 **** t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g --- 1359,1369 ---- t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g *************** *** 1352,1356 **** # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" --- 1387,1391 ---- # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" *************** *** 1396,1402 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 1431,1438 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 1417,1421 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 1453,1457 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 1596,1599 **** --- 1632,1636 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 1602,1609 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 1639,1646 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 1632,1636 **** This file was extended by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 1669,1673 ---- This file was extended by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 1676,1680 **** --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: --- 1713,1717 ---- --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: *************** *** 1687,1695 **** ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." --- 1724,1731 ---- ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." *************** *** 1906,1912 **** /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` --- 1942,1948 ---- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` *************** *** 1926,1934 **** case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac --- 1962,1970 ---- case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac *************** *** 1937,1944 **** ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 1973,1980 ---- ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 1956,1963 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 1992,1999 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 1997,2006 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` --- 2033,2075 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac *************** *** 2020,2024 **** fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the --- 2089,2093 ---- fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the *************** *** 2029,2050 **** -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo $f;; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } --- 2098,2119 ---- -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo "$f";; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo "$f" ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo "$srcdir/$f" ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } *************** *** 2164,2171 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 2233,2240 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 2205,2214 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` --- 2274,2316 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac *************** *** 2234,2238 **** [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative path. ! ac_sub_cache_file=$ac_top_builddir$cache_file ;; esac --- 2336,2340 ---- [\\/]* | ?:[\\/]* ) ac_sub_cache_file=$cache_file ;; *) # Relative path. ! ac_sub_cache_file=$ac_top_builddir$cache_file ;; esac *************** *** 2241,2246 **** # The eval makes quoting arguments work. eval $ac_sub_configure $ac_sub_configure_args \ ! --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir || ! { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } --- 2343,2348 ---- # The eval makes quoting arguments work. eval $ac_sub_configure $ac_sub_configure_args \ ! --cache-file=$ac_sub_cache_file --srcdir=$ac_srcdir || ! { { echo "$as_me:$LINENO: error: $ac_sub_configure failed for $ac_dir" >&5 echo "$as_me: error: $ac_sub_configure failed for $ac_dir" >&2;} { (exit 1); exit 1; }; } diff -C 2 -rP gperf-3.0.1/configure.in gperf-3.0.2/configure.in *** gperf-3.0.1/configure.in Mon Jan 20 14:13:02 2003 --- gperf-3.0.2/configure.in Sun Jan 22 12:12:03 2006 *************** *** 1,5 **** dnl autoconf configuration for gperf ! dnl Copyright (C) 1998, 2002 Free Software Foundation, Inc. dnl Written by Douglas C. Schmidt dnl and Bruno Haible . --- 1,5 ---- dnl autoconf configuration for gperf ! dnl Copyright (C) 1998, 2002, 2003, 2005-2006 Free Software Foundation, Inc. dnl Written by Douglas C. Schmidt dnl and Bruno Haible . *************** *** 20,27 **** dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ AC_INIT(doc/gperf.1) AC_PROG_MAKE_SET dnl An autoconf-2.52 bug: AC_CONFIG_SUBDIRS requires AC_CONFIG_AUX_DIR_DEFAULT. --- 20,29 ---- dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. AC_INIT(doc/gperf.1) AC_PROG_MAKE_SET + AC_OBJEXT + AC_EXEEXT dnl An autoconf-2.52 bug: AC_CONFIG_SUBDIRS requires AC_CONFIG_AUX_DIR_DEFAULT. diff -C 2 -rP gperf-3.0.1/doc/Makefile.in gperf-3.0.2/doc/Makefile.in *** gperf-3.0.1/doc/Makefile.in Mon Jun 2 11:42:02 2003 --- gperf-3.0.2/doc/Makefile.in Thu Jun 29 14:57:16 2006 *************** *** 20,24 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 20,24 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #### Start of system configuration section. #### *************** *** 65,69 **** VPATH = $(srcdir) ! all : info dvi ps pdf html --- 65,69 ---- VPATH = $(srcdir) ! all : info ps pdf html diff -C 2 -rP gperf-3.0.1/doc/configure gperf-3.0.2/doc/configure *** gperf-3.0.1/doc/configure Wed May 7 11:19:29 2003 --- gperf-3.0.2/doc/configure Sun Jan 22 12:31:59 2006 *************** *** 1,8 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.57. # ! # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. --- 1,7 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.59. # ! # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. *************** *** 21,27 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 20,27 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 42,46 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 42,46 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 219,222 **** --- 219,223 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 225,232 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 226,233 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 631,635 **** # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` --- 632,636 ---- # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` *************** *** 671,678 **** ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 672,679 ---- ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 746,752 **** Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in --- 747,753 ---- Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in *************** *** 813,822 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir --- 814,856 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac cd $ac_dir *************** *** 829,833 **** $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help --- 863,867 ---- $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help *************** *** 843,848 **** cat <<\_ACEOF ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. --- 877,881 ---- cat <<\_ACEOF ! Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. *************** *** 856,860 **** It was created by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ --- 889,893 ---- It was created by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ *************** *** 933,949 **** ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" --- 966,982 ---- ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" *************** *** 979,988 **** *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1012,1021 ---- *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1013,1017 **** do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo --- 1046,1050 ---- do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo *************** *** 1032,1036 **** echo "$as_me: exit $exit_status" } >&5 ! rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status --- 1065,1069 ---- echo "$as_me: exit $exit_status" } >&5 ! rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status *************** *** 1112,1116 **** ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set --- 1145,1149 ---- ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set *************** *** 1129,1139 **** *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac --- 1162,1172 ---- *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac *************** *** 1187,1191 **** echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 --- 1220,1224 ---- echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 *************** *** 1308,1318 **** # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1341,1351 ---- # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1344,1354 **** # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi --- 1377,1387 ---- # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi *************** *** 1364,1374 **** t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g --- 1397,1407 ---- t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g *************** *** 1392,1396 **** # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" --- 1425,1429 ---- # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" *************** *** 1436,1442 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 1469,1476 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 1457,1461 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 1491,1495 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 1636,1639 **** --- 1670,1674 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 1642,1649 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 1677,1684 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 1672,1676 **** This file was extended by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 1707,1711 ---- This file was extended by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 1716,1720 **** --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: --- 1751,1755 ---- --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: *************** *** 1727,1735 **** ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." --- 1762,1769 ---- ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." *************** *** 1949,1955 **** /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` --- 1983,1989 ---- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` *************** *** 1969,1977 **** case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac --- 2003,2011 ---- case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac *************** *** 1980,1987 **** ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 2014,2021 ---- ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 1999,2006 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 2033,2040 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 2040,2049 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` --- 2074,2116 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac *************** *** 2063,2067 **** fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the --- 2130,2134 ---- fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the *************** *** 2072,2093 **** -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo $f;; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } --- 2139,2160 ---- -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo "$f";; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo "$f" ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo "$srcdir/$f" ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } diff -C 2 -rP gperf-3.0.1/doc/configure.in gperf-3.0.2/doc/configure.in *** gperf-3.0.1/doc/configure.in Tue May 6 08:18:34 2003 --- gperf-3.0.2/doc/configure.in Sat May 14 14:22:35 2005 *************** *** 20,24 **** dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ AC_INIT(gperf.1) --- 20,24 ---- dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ AC_INIT(gperf.1) diff -C 2 -rP gperf-3.0.1/doc/gperf.1 gperf-3.0.2/doc/gperf.1 *** gperf-3.0.1/doc/gperf.1 Thu Jun 12 16:34:01 2003 --- gperf-3.0.2/doc/gperf.1 Sun Jan 22 12:12:03 2006 *************** *** 1,4 **** .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. ! .TH GPERF "1" "June 2003" "GNU gperf 3.0.1" FSF .SH NAME gperf \- generate a perfect hash function from a key set --- 1,4 ---- .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.23. ! .TH GPERF "22" "January 2006" "GNU gperf 3.0.2" FSF .SH NAME gperf \- generate a perfect hash function from a key set *************** *** 110,113 **** --- 110,117 ---- \&'wordlist'. .TP + \fB\-\-length\-table\-name\fR=\fINAME\fR + Specify name of length table array. Default name is + \&'lengthtable'. + .TP \fB\-S\fR, \fB\-\-switch\fR=\fICOUNT\fR Causes the generated C code to use a switch *************** *** 195,199 **** Report bugs to . .SH COPYRIGHT ! Copyright \(co 1989-1998, 2000-2003 Free Software Foundation, Inc. .br This is free software; see the source for copying conditions. There is NO --- 199,203 ---- Report bugs to . .SH COPYRIGHT ! Copyright \(co 1989-1998, 2000-2004, 2006 Free Software Foundation, Inc. .br This is free software; see the source for copying conditions. There is NO Files gperf-3.0.1/doc/gperf.dvi and gperf-3.0.2/doc/gperf.dvi differ diff -C 2 -rP gperf-3.0.1/doc/gperf.html gperf-3.0.2/doc/gperf.html *** gperf-3.0.1/doc/gperf.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf.html Thu Jun 29 15:07:02 2006 *************** *** 1,12 **** ! Perfect Hash Function Generator !

User's Guide to gperf 3.0.1

The GNU Perfect Hash Function Generator

!

Edition 3.0.1, 12 June 2003

Douglas C. Schmidt
Bruno Haible
--- 1,13 ---- ! Perfect Hash Function Generator !

User's Guide to gperf 3.0.2

The GNU Perfect Hash Function Generator

!

Edition 3.0.2, 22 January 2006

Douglas C. Schmidt
Bruno Haible
*************** *** 21,55 ****
  • Contributors to GNU gperf Utility !
  • 1. Introduction !
  • 2. Static search structures and GNU gperf !
  • 3. High-Level Description of GNU gperf !
  • 4. Invoking gperf !
  • 5. Known Bugs and Limitations with gperf !
  • 6. Things Still Left to Do !
  • 7. Bibliography
  • Concept Index --- 22,56 ----
  • Contributors to GNU gperf Utility !
  • 1 Introduction !
  • 2 Static search structures and GNU gperf !
  • 3 High-Level Description of GNU gperf !
  • 4 Invoking gperf !
  • 5 Known Bugs and Limitations with gperf !
  • 6 Things Still Left to Do !
  • 7 Bibliography
  • Concept Index *************** *** 62,66 **** Version 2, June 1991 !
    --- 63,67 ----
      Version 2, June 1991
      
    ! 

    ***************
    *** 87,91 ****
      your programs, too.
      
    ! 
      

    When we speak of free software, we are referring to freedom, not --- 88,92 ---- your programs, too. !

    When we speak of free software, we are referring to freedom, not *************** *** 96,100 **** in new free programs; and that you know you can do these things. !

    To protect your rights, we need to make restrictions that forbid --- 97,101 ---- in new free programs; and that you know you can do these things. !

    To protect your rights, we need to make restrictions that forbid *************** *** 103,107 **** distribute copies of the software, or if you modify it. !

    For example, if you distribute copies of such a program, whether --- 104,108 ---- distribute copies of the software, or if you modify it. !

    For example, if you distribute copies of such a program, whether *************** *** 111,115 **** rights. !

    We protect your rights with two steps: (1) copyright the software, and --- 112,116 ---- rights. !

    We protect your rights with two steps: (1) copyright the software, and *************** *** 117,121 **** distribute and/or modify the software. !

    Also, for each author's protection and ours, we want to make certain --- 118,122 ---- distribute and/or modify the software. !

    Also, for each author's protection and ours, we want to make certain *************** *** 126,130 **** authors' reputations. !

    Finally, any free program is threatened constantly by software --- 127,131 ---- authors' reputations. !

    Finally, any free program is threatened constantly by software *************** *** 134,147 **** 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. !

    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION !

      --- 135,148 ---- 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. !

      TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION !

        *************** *** 412,416 **** END OF TERMS AND CONDITIONS ! --- 413,417 ---- END OF TERMS AND CONDITIONS !

        *************** *** 422,426 **** free software which everyone can redistribute and change under these terms. !

        To do so, attach the following notices to the program. It is safest --- 423,427 ---- free software which everyone can redistribute and change under these terms. !

        To do so, attach the following notices to the program. It is safest *************** *** 429,433 **** the "copyright" line and a pointer to where the full notice is found. !

        --- 430,434 ----
          the "copyright" line and a pointer to where the full notice is found.
          
        ! 

        ***************
        *** 453,462 ****
          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: !

        --- 454,463 ----
          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: !

        ***************
        *** 475,479 ****
          suits your program.
          
        ! 
          

        You should also get your employer (if you work as a programmer) or your --- 476,480 ---- suits your program. !

        You should also get your employer (if you work as a programmer) or your *************** *** 481,485 **** necessary. Here is a sample; alter the names: !

        --- 482,486 ----
          necessary.  Here is a sample; alter the names:
          
        ! 

        ***************
        *** 500,504 ****
          Public License instead of this License.
          
        ! 
          
          
        --- 501,505 ----
          Public License instead of this License.
          
        ! 

        *************** *** 537,541 **** !

        1. Introduction

        --- 538,542 ---- !

        1 Introduction

        *************** *** 550,554 **** the lookup table. !

        gperf currently generates the reserved keyword recognizer for --- 551,555 ---- the lookup table. !

        gperf currently generates the reserved keyword recognizer for *************** *** 561,572 **** or from http://www.cs.wustl.edu/~schmidt/resume.html. ! !

        2. Static search structures and GNU gperf

        !

        A static search structure is an Abstract Data Type with certain --- 562,573 ---- or from http://www.cs.wustl.edu/~schmidt/resume.html. +

        !

        2 Static search structures and GNU gperf

        !

        A static search structure is an Abstract Data Type with certain *************** *** 584,588 **** not generally modified at run-time. !

        Numerous static search structure implementations exist, e.g., --- 585,589 ---- not generally modified at run-time. !

        Numerous static search structure implementations exist, e.g., *************** *** 596,600 **** additional memory overhead and exhibit poor worst case performance. !

        --- 597,601 ---- additional memory overhead and exhibit poor worst case performance. !

        *************** *** 603,607 **** function is defined by two properties: !

          --- 604,608 ---- function is defined by two properties: !

            *************** *** 629,633 **** user control over the degree of minimality and perfection. !

            Static search sets often exhibit relative stability over time. For --- 630,634 ---- user control over the degree of minimality and perfection. !

            Static search sets often exhibit relative stability over time. For *************** *** 645,652 **** efficiently identify their respective reserved keywords. ! !

            3. High-Level Description of GNU gperf

            --- 646,653 ---- efficiently identify their respective reserved keywords. +

            !

            3 High-Level Description of GNU gperf

            *************** *** 661,665 **** below allow you to modify the input and output format to gperf. !

            By default, gperf attempts to produce time-efficient code, with --- 662,666 ---- below allow you to modify the input and output format to gperf. !

            By default, gperf attempts to produce time-efficient code, with *************** *** 673,677 **** somewhat. Actual results depend on your C compiler, of course. !

            In general, gperf assigns values to the bytes it is using --- 674,678 ---- somewhat. Actual results depend on your C compiler, of course. !

            In general, gperf assigns values to the bytes it is using *************** *** 681,688 **** Experimentation is the key to getting the most from gperf. ! !

            3.1 Input Format to gperf

            --- 682,689 ---- Experimentation is the key to getting the most from gperf. +

            !

            3.1 Input Format to gperf

            *************** *** 696,700 **** format: !

            --- 697,701 ----
              format:
              
            ! 

            ***************
            *** 711,714 ****
            --- 712,716 ----
              input format for each section.
              
            + 

            *************** *** 717,721 **** first keyword line, e.g.: !

            --- 719,723 ----
              first keyword line, e.g.:
              
            ! 

            ***************
            *** 729,733 ****
              
              
            ! 

            3.1.1 Declarations

            --- 731,735 ---- !

            3.1.1 Declarations

            *************** *** 737,744 **** struct. !

            3.1.1.1 User-supplied struct

            --- 739,747 ---- struct. +

            !

            3.1.1.1 User-supplied struct

            *************** *** 753,762 **** `%define slot-name' declaration) described below. !

            Here is a simple example, using months of the year and their attributes as input: !

            --- 756,765 ----
              `%define slot-name' declaration) described below.
              
            ! 

            Here is a simple example, using months of the year and their attributes as input: !

            ***************
            *** 784,793 ****
              lex.
              
            ! 
              

            If the struct has already been declared in an include file, it can be mentioned in an abbreviated form, like this: !

            --- 787,796 ----
              lex.
              
            ! 

            If the struct has already been declared in an include file, it can be mentioned in an abbreviated form, like this: !

            ***************
            *** 800,804 ****
              
              
            ! 

            3.1.1.2 Gperf Declarations

            --- 803,807 ---- !

            3.1.1.2 Gperf Declarations

            *************** *** 808,812 **** There are three forms of declarations: !

              --- 811,815 ---- There are three forms of declarations: !

                *************** *** 829,837 **** option, the command-line option's value prevails. !

                The following gperf declarations are available. !

                --- 832,840 ---- option, the command-line option's value prevails. !

                The following gperf declarations are available. !

                *************** *** 944,948 **** Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. --- 947,951 ---- Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. *************** *** 1025,1031 **** (or, equivalently, the `%global-table' declaration) is given. !
                `%switch=count'
                Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both --- 1028,1042 ---- (or, equivalently, the `%global-table' declaration) is given. !
                `%define length-table-name name'
                + Allows you to specify the name for the generated array containing the + length table. Default name is `lengthtable'. This option permits the + use of two length tables in the same file, even when the option `-G' + (or, equivalently, the `%global-table' declaration) is given. + +
                `%switch=count' +
                + Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both *************** *** 1040,1044 ****
                `%omit-struct-type'
                ! Prevents the transfer of the type declaration to the output file. Use this option if the type is already defined elsewhere. --- 1051,1055 ----
                `%omit-struct-type'
                ! Prevents the transfer of the type declaration to the output file. Use this option if the type is already defined elsewhere. *************** *** 1047,1055 **** !

                3.1.1.3 C Code Inclusion

                - Using a syntax similar to GNU utilities flex and bison, it is possible to directly include C source text and comments verbatim into --- 1058,1066 ---- !

                3.1.1.3 C Code Inclusion

                + Using a syntax similar to GNU utilities flex and bison, it is possible to directly include C source text and comments verbatim into *************** *** 1059,1063 **** feature: !

                --- 1070,1074 ----
                  feature:
                  
                ! 

                ***************
                *** 1077,1081 ****
                  
                  
                ! 

                3.1.2 Format for Keyword Entries

                --- 1088,1092 ---- !

                3.1.2 Format for Keyword Entries

                *************** *** 1087,1091 **** must not occur within the keywords section. !

                The first field of each non-comment line is always the keyword itself. It --- 1098,1102 ---- must not occur within the keywords section. !

                The first field of each non-comment line is always the keyword itself. It *************** *** 1099,1103 **** example taken from a partial list of C reserved words: !

                --- 1110,1114 ----
                  example taken from a partial list of C reserved words:
                  
                ! 

                ***************
                *** 1119,1123 ****
                  may be elided if the declaration section is empty.
                  
                ! 
                  

                Additional fields may optionally follow the leading keyword. Fields --- 1130,1134 ---- may be elided if the declaration section is empty. !

                Additional fields may optionally follow the leading keyword. Fields *************** *** 1130,1137 **** one contain keyword attributes. ! !

                3.1.3 Including Additional C Functions

                --- 1141,1148 ---- one contain keyword attributes. +

                !

                3.1.3 Including Additional C Functions

                *************** *** 1143,1150 **** section is valid C. ! !

                3.1.4 Where to place directives for GNU indent.

                --- 1154,1161 ---- section is valid C. +

                !

                3.1.4 Where to place directives for GNU indent.

                *************** *** 1156,1160 **** general input file structure !

                --- 1167,1171 ----
                  general input file structure
                  
                ! 

                ***************
                *** 1174,1178 ****
                  as follows:
                  
                ! 
                  
                  
                --- 1185,1189 ----
                  as follows:
                  
                ! 

                ***************
                *** 1194,1202 ****
                  
                  
                ! 

                3.2 Output Format for Generated C Code with gperf

                ! !

                Several options control how the generated C code appears on the standard --- 1205,1213 ---- !

                3.2 Output Format for Generated C Code with gperf

                ! +

                Several options control how the generated C code appears on the standard *************** *** 1207,1215 **** function prototypes are as follows: !

                Function: unsigned int hash (const char * str, unsigned int len) !
                By default, the generated hash function returns an integer value created by adding len to several user-specified str byte --- 1218,1226 ---- function prototypes are as follows: !

                Function: unsigned int hash (const char * str, unsigned int len) !
                By default, the generated hash function returns an integer value created by adding len to several user-specified str byte *************** *** 1219,1230 **** called `hash_table'. The relevant selected positions (i.e. indices into str) are specified via the `-k' option when running ! gperf, as detailed in the Options section below (see section 4. Invoking gperf).
                !

                Function: in_word_set (const char * str, unsigned int len) !
                If str is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the --- 1230,1241 ---- called `hash_table'. The relevant selected positions (i.e. indices into str) are specified via the `-k' option when running ! gperf, as detailed in the Options section below (see section 4 Invoking gperf).
                !

                Function: in_word_set (const char * str, unsigned int len) !
                If str is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the *************** *** 1234,1238 ****
                !

                If the option `-c' (or, equivalently, the `%compare-strncmp' --- 1245,1249 ----

                !

                If the option `-c' (or, equivalently, the `%compare-strncmp' *************** *** 1243,1252 **** terminated. !

                The code generated for these two functions is affected by the following options: !

                --- 1254,1263 ---- terminated. !

                The code generated for these two functions is affected by the following options: !

                *************** *** 1261,1265 ****
                `--switch=total-switch-statements'
                ! Generate 1 or more C switch statement rather than use a large, (and potentially sparse) static array. Although the exact time and --- 1272,1276 ----
                `--switch=total-switch-statements'
                ! Generate 1 or more C switch statement rather than use a large, (and potentially sparse) static array. Although the exact time and *************** *** 1279,1290 **** set characteristics. ! !

                3.3 Use of NUL bytes

                ! !

                By default, the code generated by gperf operates on zero --- 1290,1301 ---- set characteristics. +

                !

                3.3 Use of NUL bytes

                ! +

                By default, the code generated by gperf operates on zero *************** *** 1294,1298 **** must be NUL terminated and have exactly length len. !

                If option `-c' (or, equivalently, the `%compare-strncmp' --- 1305,1309 ---- must be NUL terminated and have exactly length len. !

                If option `-c' (or, equivalently, the `%compare-strncmp' *************** *** 1303,1307 **** bytes. !

                If option `-l' (or, equivalently, the `%compare-lengths' --- 1314,1318 ---- bytes. !

                If option `-l' (or, equivalently, the `%compare-lengths' *************** *** 1313,1320 **** `%compare-strncmp' declaration) is ignored. ! !

                4. Invoking gperf

                --- 1324,1331 ---- `%compare-strncmp' declaration) is ignored. +

                !

                4 Invoking gperf

                *************** *** 1324,1331 **** complete list of options. !

                4.1 Specifying the Location of the Output File

                --- 1335,1343 ---- complete list of options. +

                !

                4.1 Specifying the Location of the Output File

                *************** *** 1340,1353 **** or if it is `-'. ! !

                4.2 Options that affect Interpretation of the Input File

                These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). !

                --- 1352,1365 ---- or if it is `-'. +

                !

                4.2 Options that affect Interpretation of the Input File

                These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). +

                *************** *** 1356,1360 ****
                `--delimiters=keyword-delimiter-list'
                ! Allows you to provide a string containing delimiters used to separate keywords from their attributes. The default is ",". This --- 1368,1372 ----
                `--delimiters=keyword-delimiter-list'
                ! Allows you to provide a string containing delimiters used to separate keywords from their attributes. The default is ",". This *************** *** 1389,1399 **** !

                4.3 Options to specify the Language for the Output Code

                These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). !

                --- 1401,1411 ---- !

                4.3 Options to specify the Language for the Output Code

                These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). +

                *************** *** 1443,1453 **** !

                4.4 Options for fine tuning Details in the Output Code

                Most of these options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). !

                --- 1455,1465 ---- !

                4.4 Options for fine tuning Details in the Output Code

                Most of these options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). +

                *************** *** 1456,1460 ****
                `--slot-name=slot-name'
                ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. --- 1468,1472 ----
                `--slot-name=slot-name'
                ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. *************** *** 1468,1472 ****
                `--initializer-suffix=initializers'
                ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. --- 1480,1484 ----
                `--initializer-suffix=initializers'
                ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. *************** *** 1496,1500 ****
                `--class-name=class-name'
                ! This option is only useful when option `-L C++' (or, equivalently, the `%language=C++' declaration) has been given. It --- 1508,1512 ----
                `--class-name=class-name'
                ! This option is only useful when option `-L C++' (or, equivalently, the `%language=C++' declaration) has been given. It *************** *** 1520,1524 ****
                Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. --- 1532,1536 ----
                Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. *************** *** 1602,1606 ****
                `--word-array-name=hash-table-array-name'
                ! Allows you to specify the name for the generated array containing the hash table. Default name is `wordlist'. This option permits the --- 1614,1618 ----
                `--word-array-name=hash-table-array-name'
                ! Allows you to specify the name for the generated array containing the hash table. Default name is `wordlist'. This option permits the *************** *** 1608,1616 **** (or, equivalently, the `%global-table' declaration) is given.
                `-S total-switch-statements'
                `--switch=total-switch-statements'
                ! Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both --- 1620,1636 ---- (or, equivalently, the `%global-table' declaration) is given. +
                `--length-table-name=length-table-array-name' +
                + + Allows you to specify the name for the generated array containing the + length table. Default name is `lengthtable'. This option permits the + use of two length tables in the same file, even when the option `-G' + (or, equivalently, the `%global-table' declaration) is given. +
                `-S total-switch-statements'
                `--switch=total-switch-statements'
                ! Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both *************** *** 1638,1642 **** !

                4.5 Options for changing the Algorithms employed by gperf

                --- 1658,1662 ---- !

                4.5 Options for changing the Algorithms employed by gperf

                *************** *** 1672,1676 ****
                `--duplicates'
                ! Handle keywords whose selected byte sets hash to duplicate values. Duplicate hash values can occur if a set of keywords has the same names, but --- 1692,1696 ----
                `--duplicates'
                ! Handle keywords whose selected byte sets hash to duplicate values. Duplicate hash values can occur if a set of keywords has the same names, but *************** *** 1709,1713 ****
                `--jump=jump-value'
                ! Affects the "jump value", i.e., how far to advance the associated byte value upon collisions. Jump-value is rounded up to an --- 1729,1733 ----
                `--jump=jump-value'
                ! Affects the "jump value", i.e., how far to advance the associated byte value upon collisions. Jump-value is rounded up to an *************** *** 1763,1767 **** !

                4.6 Informative Output

                --- 1783,1787 ---- !

                4.6 Informative Output

                *************** *** 1794,1798 **** !

                5. Known Bugs and Limitations with gperf

                --- 1814,1818 ---- !

                5 Known Bugs and Limitations with gperf

                *************** *** 1800,1804 **** gperf: !

                  --- 1820,1824 ---- gperf: !

                    *************** *** 1836,1840 **** !

                    6. Things Still Left to Do

                    --- 1856,1860 ---- !

                    6 Things Still Left to Do

                    *************** *** 1844,1848 **** worthwhile improvements include: !

                      --- 1864,1868 ---- worthwhile improvements include: !

                        *************** *** 1867,1871 **** !

                        7. Bibliography

                        --- 1887,1891 ---- !

                        7 Bibliography

                        *************** *** 1873,1897 **** Hashing Functions Information Sciences 39(1986), 187-195. !

                        [2] Cichelli, Richard J. Author's Response to "On Cichelli's Minimal Perfect Hash Functions Method" Communications of the ACM, 23, 12(December 1980), 729. !

                        [3] Cichelli, Richard J. Minimal Perfect Hash Functions Made Simple Communications of the ACM, 23, 1(January 1980), 17-19. !

                        [4] Cook, C. R. and Oldehoeft, R.R. A Letter Oriented Minimal Perfect Hashing Function SIGPLAN Notices, 17, 9(September 1982), 18-27. !

                        [5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M. Practical Perfect Hashing Computer Journal, 28, 1(January 1985), 54-58. !

                        [6] Jaeschke, G. Reciprocal Hashing: A Method for Generating Minimal --- 1893,1917 ---- Hashing Functions Information Sciences 39(1986), 187-195. !

                        [2] Cichelli, Richard J. Author's Response to "On Cichelli's Minimal Perfect Hash Functions Method" Communications of the ACM, 23, 12(December 1980), 729. !

                        [3] Cichelli, Richard J. Minimal Perfect Hash Functions Made Simple Communications of the ACM, 23, 1(January 1980), 17-19. !

                        [4] Cook, C. R. and Oldehoeft, R.R. A Letter Oriented Minimal Perfect Hashing Function SIGPLAN Notices, 17, 9(September 1982), 18-27. !

                        [5] Cormack, G. V. and Horspool, R. N. S. and Kaiserwerth, M. Practical Perfect Hashing Computer Journal, 28, 1(January 1985), 54-58. !

                        [6] Jaeschke, G. Reciprocal Hashing: A Method for Generating Minimal *************** *** 1899,1903 **** 1981), 829-833. !

                        [7] Jaeschke, G. and Osterburg, G. On Cichelli's Minimal Perfect --- 1919,1923 ---- 1981), 829-833. !

                        [7] Jaeschke, G. and Osterburg, G. On Cichelli's Minimal Perfect *************** *** 1905,1929 **** 728-729. !

                        [8] Sager, Thomas J. A Polynomial Time Generator for Minimal Perfect Hash Functions Communications of the ACM, 28, 5(December 1985), 523-532 !

                        [9] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator Second USENIX C++ Conference Proceedings, April 1990. !

                        [10] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator C++ Report, SIGS 10 10 (November/December 1998). !

                        [11] Sebesta, R.W. and Taylor, M.A. Minimal Perfect Hash Functions for Reserved Word Lists SIGPLAN Notices, 20, 12(September 1985), 47-53. !

                        [12] Sprugnoli, R. Perfect Hashing Functions: A Single Probe --- 1925,1949 ---- 728-729. !

                        [8] Sager, Thomas J. A Polynomial Time Generator for Minimal Perfect Hash Functions Communications of the ACM, 28, 5(December 1985), 523-532 !

                        [9] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator Second USENIX C++ Conference Proceedings, April 1990. !

                        [10] Schmidt, Douglas C. GPERF: A Perfect Hash Function Generator C++ Report, SIGS 10 10 (November/December 1998). !

                        [11] Sebesta, R.W. and Taylor, M.A. Minimal Perfect Hash Functions for Reserved Word Lists SIGPLAN Notices, 20, 12(September 1985), 47-53. !

                        [12] Sprugnoli, R. Perfect Hashing Functions: A Single Probe *************** *** 1931,1949 **** 11(November 1977), 841-850. !

                        [13] Stallman, Richard M. Using and Porting GNU CC Free Software Foundation, 1988. !

                        [14] Stroustrup, Bjarne The C++ Programming Language. Addison-Wesley, 1986. !

                        [15] Tiemann, Michael D. User's Guide to GNU C++ Free Software Foundation, 1989. ! --- 1951,1969 ---- 11(November 1977), 841-850. !

                        [13] Stallman, Richard M. Using and Porting GNU CC Free Software Foundation, 1988. !

                        [14] Stroustrup, Bjarne The C++ Programming Language. Addison-Wesley, 1986. !

                        [15] Tiemann, Michael D. User's Guide to GNU C++ Free Software Foundation, 1989. !

                        *************** *** 1987,1990 **** --- 2007,2011 ----
                      • `%define hash-function-name'
                      • `%define initializer-suffix' +
                      • `%define length-table-name'
                      • `%define lookup-function-name'
                      • `%define slot-name' *************** *** 1998,2012 ****
                      • `%language'
                      • `%null-strings' !
                      • `%omit-struct-type'
                      • `%pic'
                      • `%readonly-tables'
                      • `%struct-type' !
                      • `%switch' !
                      • `%{' !
                      • `%}'

                        a

                        !
                      • Array name
                      • b

                        --- 2019,2033 ----
                      • `%language'
                      • `%null-strings' !
                      • `%omit-struct-type'
                      • `%pic'
                      • `%readonly-tables'
                      • `%struct-type' !
                      • `%switch' !
                      • `%{' !
                      • `%}'

                        a

                        !
                      • Array name, Array name
                      • b

                        *************** *** 2016,2026 ****

                        c

                        !
                      • Class name
                      • d

                      • Declaration section !
                      • Delimiters !
                      • Duplicates
                      • f

                        --- 2037,2047 ----

                        c

                        !
                      • Class name
                      • d

                      • Declaration section !
                      • Delimiters !
                      • Duplicates
                      • f

                        *************** *** 2031,2045 ****

                        h

                        !
                      • hash !
                      • hash table
                      • i

                        !
                      • in_word_set !
                      • Initializers
                      • j

                        !
                      • Jump value
                      • k

                        --- 2052,2066 ----

                        h

                        !
                      • hash !
                      • hash table
                      • i

                        !
                      • in_word_set !
                      • Initializers
                      • j

                        !
                      • Jump value
                      • k

                        *************** *** 2053,2069 ****

                        n

                        !
                      • NUL
                      • s

                        !
                      • Slot name
                      • Static search structure !
                      • switch, switch
                      • !


                        ! This document was generated on 12 June 2003 using ! texi2html 1.56k. --- 2074,2091 ----

                        n

                        !
                      • NUL
                      • s

                        !
                      • Slot name
                      • Static search structure !
                      • switch, switch
                      • !


                        ! This document was generated on 29 June 2006 using the ! texi2html ! translator version 1.52.

                        diff -C 2 -rP gperf-3.0.1/doc/gperf.info gperf-3.0.2/doc/gperf.info *** gperf-3.0.1/doc/gperf.info Thu Jun 12 16:33:53 2003 --- gperf-3.0.2/doc/gperf.info Sun Jan 22 12:37:56 2006 *************** *** 1,4 **** ! Dies ist gperf.info, hergestellt von Makeinfo Version 4.3 aus ! gperf.texi. INFO-DIR-SECTION Programming Tools --- 1,3 ---- ! This is gperf.info, produced by makeinfo version 4.8 from gperf.texi. INFO-DIR-SECTION Programming Tools *************** *** 8,14 **** This file documents the features of the GNU Perfect Hash Function ! Generator 3.0.1. ! Copyright (C) 1989-2003 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this --- 7,13 ---- This file documents the features of the GNU Perfect Hash Function ! Generator 3.0.2. ! Copyright (C) 1989-2006 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this *************** *** 35,39 **** ************ ! This manual documents the GNU `gperf' perfect hash function generator utility, focusing on its features and how to use them, and how to report bugs. --- 34,38 ---- ************ ! This manual documents the GNU `gperf' perfect hash function generator utility, focusing on its features and how to use them, and how to report bugs. *************** *** 89,95 **** 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. --- 88,95 ---- 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. *************** *** 98,104 **** ======== ! 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 --- 98,104 ---- ======== ! 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 *************** *** 353,357 **** NO WARRANTY - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE --- 353,356 ---- *************** *** 377,385 **** END OF TERMS AND CONDITIONS - 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 --- 376,383 ---- END OF TERMS AND CONDITIONS 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 *************** *** 393,407 **** ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES. Copyright (C) YEAR NAME OF AUTHOR ! 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 --- 391,405 ---- ONE LINE TO GIVE THE PROGRAM'S NAME AND AN IDEA OF WHAT IT DOES. Copyright (C) YEAR NAME OF AUTHOR ! 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 *************** *** 434,438 **** (which makes passes at compilers) written by James Hacker. ! SIGNATURE OF TY COON, 1 April 1989 Ty Coon, President of Vice --- 432,436 ---- (which makes passes at compilers) written by James Hacker. ! SIGNATURE OF TY COON, 1 April 1989 Ty Coon, President of Vice *************** *** 474,481 **** File: gperf.info, Node: Motivation, Next: Search Structures, Prev: Contributors, Up: Top ! Introduction ! ************ ! `gperf' is a perfect hash function generator written in C++. It transforms an N element user-specified keyword set W into a perfect hash function F. F uniquely maps keywords in W onto the range 0..K, --- 472,479 ---- File: gperf.info, Node: Motivation, Next: Search Structures, Prev: Contributors, Up: Top ! 1 Introduction ! ************** ! `gperf' is a perfect hash function generator written in C++. It transforms an N element user-specified keyword set W into a perfect hash function F. F uniquely maps keywords in W onto the range 0..K, *************** *** 497,504 **** File: gperf.info, Node: Search Structures, Next: Description, Prev: Motivation, Up: Top ! Static search structures and GNU `gperf' ! **************************************** ! A "static search structure" is an Abstract Data Type with certain fundamental operations, e.g., _initialize_, _insert_, and _retrieve_. Conceptually, all insertions occur before any retrievals. In practice, --- 495,502 ---- File: gperf.info, Node: Search Structures, Next: Description, Prev: Motivation, Up: Top ! 2 Static search structures and GNU `gperf' ! ****************************************** ! A "static search structure" is an Abstract Data Type with certain fundamental operations, e.g., _initialize_, _insert_, and _retrieve_. Conceptually, all insertions occur before any retrievals. In practice, *************** *** 563,568 **** File: gperf.info, Node: Description, Next: Options, Prev: Search Structures, Up: Top ! High-Level Description of GNU `gperf' ! ************************************* * Menu: --- 561,566 ---- File: gperf.info, Node: Description, Next: Options, Prev: Search Structures, Up: Top ! 3 High-Level Description of GNU `gperf' ! *************************************** * Menu: *************** *** 601,608 **** File: gperf.info, Node: Input Format, Next: Output Format, Prev: Description, Up: Description ! Input Format to `gperf' ! ======================= ! You can control the input file format by varying certain command-line arguments, in particular the `-t' option. The input's appearance is similar to GNU utilities `flex' and `bison' (or UNIX utilities `lex' --- 599,606 ---- File: gperf.info, Node: Input Format, Next: Output Format, Prev: Description, Up: Description ! 3.1 Input Format to `gperf' ! =========================== ! You can control the input file format by varying certain command-line arguments, in particular the `-t' option. The input's appearance is similar to GNU utilities `flex' and `bison' (or UNIX utilities `lex' *************** *** 639,646 **** File: gperf.info, Node: Declarations, Next: Keywords, Prev: Input Format, Up: Input Format ! Declarations ! ------------ ! The keyword input file optionally contains a section for including arbitrary C declarations and definitions, `gperf' declarations that act like command-line options, as well as for providing a user-supplied --- 637,644 ---- File: gperf.info, Node: Declarations, Next: Keywords, Prev: Input Format, Up: Input Format ! 3.1.1 Declarations ! ------------------ ! The keyword input file optionally contains a section for including arbitrary C declarations and definitions, `gperf' declarations that act like command-line options, as well as for providing a user-supplied *************** *** 656,663 **** File: gperf.info, Node: User-supplied Struct, Next: Gperf Declarations, Prev: Declarations, Up: Declarations ! User-supplied `struct' ! ...................... ! If the `-t' option (or, equivalently, the `%struct-type' declaration) _is_ enabled, you _must_ provide a C `struct' as the last component in the declaration section from the input file. The first field in this --- 654,661 ---- File: gperf.info, Node: User-supplied Struct, Next: Gperf Declarations, Prev: Declarations, Up: Declarations ! 3.1.1.1 User-supplied `struct' ! .............................. ! If the `-t' option (or, equivalently, the `%struct-type' declaration) _is_ enabled, you _must_ provide a C `struct' as the last component in the declaration section from the input file. The first field in this *************** *** 701,708 **** File: gperf.info, Node: Gperf Declarations, Next: C Code Inclusion, Prev: User-supplied Struct, Up: Declarations ! Gperf Declarations ! .................. ! The declaration section can contain `gperf' declarations. They influence the way `gperf' works, like command line options do. In fact, every such declaration is equivalent to a command line option. --- 699,706 ---- File: gperf.info, Node: Gperf Declarations, Next: C Code Inclusion, Prev: User-supplied Struct, Up: Declarations ! 3.1.1.2 Gperf Declarations ! .......................... ! The declaration section can contain `gperf' declarations. They influence the way `gperf' works, like command line options do. In fact, every such declaration is equivalent to a command line option. *************** *** 870,873 **** --- 868,878 ---- `-G' (or, equivalently, the `%global-table' declaration) is given. + `%define length-table-name NAME' + Allows you to specify the name for the generated array containing + the length table. Default name is `lengthtable'. This option + permits the use of two length tables in the same file, even when + the option `-G' (or, equivalently, the `%global-table' + declaration) is given. + `%switch=COUNT' Causes the generated C code to use a `switch' statement scheme, *************** *** 889,896 **** File: gperf.info, Node: C Code Inclusion, Prev: Gperf Declarations, Up: Declarations ! C Code Inclusion ! ................ ! Using a syntax similar to GNU utilities `flex' and `bison', it is possible to directly include C source text and comments verbatim into the generated output file. This is accomplished by enclosing the region --- 894,901 ---- File: gperf.info, Node: C Code Inclusion, Prev: Gperf Declarations, Up: Declarations ! 3.1.1.3 C Code Inclusion ! ........................ ! Using a syntax similar to GNU utilities `flex' and `bison', it is possible to directly include C source text and comments verbatim into the generated output file. This is accomplished by enclosing the region *************** *** 913,923 **** File: gperf.info, Node: Keywords, Next: Functions, Prev: Declarations, Up: Input Format ! Format for Keyword Entries ! -------------------------- ! The second input file format section contains lines of keywords and ! any associated attributes you might supply. A line beginning with `#' ! in the first column is considered a comment. Everything following the ! `#' is ignored, up to and including the following newline. A line beginning with `%' in the first column is an option declaration and must not occur within the keywords section. --- 918,928 ---- File: gperf.info, Node: Keywords, Next: Functions, Prev: Declarations, Up: Input Format ! 3.1.2 Format for Keyword Entries ! -------------------------------- ! The second input file format section contains lines of keywords and any ! associated attributes you might supply. A line beginning with `#' in ! the first column is considered a comment. Everything following the `#' ! is ignored, up to and including the following newline. A line beginning with `%' in the first column is an option declaration and must not occur within the keywords section. *************** *** 960,967 **** File: gperf.info, Node: Functions, Next: Controls for GNU indent, Prev: Keywords, Up: Input Format ! Including Additional C Functions ! -------------------------------- ! The optional third section also corresponds closely with conventions found in `flex' and `bison'. All text in this section, starting at the final `%%' and extending to the end of the input file, is included --- 965,972 ---- File: gperf.info, Node: Functions, Next: Controls for GNU indent, Prev: Keywords, Up: Input Format ! 3.1.3 Including Additional C Functions ! -------------------------------------- ! The optional third section also corresponds closely with conventions found in `flex' and `bison'. All text in this section, starting at the final `%%' and extending to the end of the input file, is included *************** *** 973,980 **** File: gperf.info, Node: Controls for GNU indent, Prev: Functions, Up: Input Format ! Where to place directives for GNU `indent'. ! ------------------------------------------- ! If you want to invoke GNU `indent' on a `gperf' input file, you will see that GNU `indent' doesn't understand the `%%', `%{' and `%}' directives that control `gperf''s interpretation of the input file. --- 978,985 ---- File: gperf.info, Node: Controls for GNU indent, Prev: Functions, Up: Input Format ! 3.1.4 Where to place directives for GNU `indent'. ! ------------------------------------------------- ! If you want to invoke GNU `indent' on a `gperf' input file, you will see that GNU `indent' doesn't understand the `%%', `%{' and `%}' directives that control `gperf''s interpretation of the input file. *************** *** 1011,1025 **** File: gperf.info, Node: Output Format, Next: Binary Strings, Prev: Input Format, Up: Description ! Output Format for Generated C Code with `gperf' ! =============================================== ! Several options control how the generated C code appears on the ! standard output. Two C function are generated. They are called `hash' ! and `in_word_set', although you may modify their names with a ! command-line option. Both functions require two arguments, a string, ! `char *' STR, and a length parameter, `int' LEN. Their default ! function prototypes are as follows: ! - Funktion: unsigned int hash (const char * STR, unsigned int LEN) By default, the generated `hash' function returns an integer value created by adding LEN to several user-specified STR byte positions --- 1016,1030 ---- File: gperf.info, Node: Output Format, Next: Binary Strings, Prev: Input Format, Up: Description ! 3.2 Output Format for Generated C Code with `gperf' ! =================================================== ! Several options control how the generated C code appears on the standard ! output. Two C function are generated. They are called `hash' and ! `in_word_set', although you may modify their names with a command-line ! option. Both functions require two arguments, a string, `char *' STR, ! and a length parameter, `int' LEN. Their default function prototypes ! are as follows: ! -- Function: unsigned int hash (const char * STR, unsigned int LEN) By default, the generated `hash' function returns an integer value created by adding LEN to several user-specified STR byte positions *************** *** 1031,1035 **** detailed in the _Options_ section below (*note Options::). ! - Funktion: in_word_set (const char * STR, unsigned int LEN) If STR is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the --- 1036,1040 ---- detailed in the _Options_ section below (*note Options::). ! -- Function: in_word_set (const char * STR, unsigned int LEN) If STR is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the *************** *** 1069,1080 **** File: gperf.info, Node: Binary Strings, Prev: Output Format, Up: Description ! Use of NUL bytes ! ================ ! By default, the code generated by `gperf' operates on zero ! terminated strings, the usual representation of strings in C. This ! means that the keywords in the input file must not contain NUL bytes, ! and the STR argument passed to `hash' or `in_word_set' must be NUL ! terminated and have exactly length LEN. If option `-c' (or, equivalently, the `%compare-strncmp' --- 1074,1085 ---- File: gperf.info, Node: Binary Strings, Prev: Output Format, Up: Description ! 3.3 Use of NUL bytes ! ==================== ! By default, the code generated by `gperf' operates on zero terminated ! strings, the usual representation of strings in C. This means that the ! keywords in the input file must not contain NUL bytes, and the STR ! argument passed to `hash' or `in_word_set' must be NUL terminated and ! have exactly length LEN. If option `-c' (or, equivalently, the `%compare-strncmp' *************** *** 1094,1101 **** File: gperf.info, Node: Options, Next: Bugs, Prev: Description, Up: Top ! Invoking `gperf' ! **************** ! There are _many_ options to `gperf'. They were added to make the program more convenient for use with real applications. "On-line" help is readily available via the `--help' option. Here is the complete --- 1099,1106 ---- File: gperf.info, Node: Options, Next: Bugs, Prev: Description, Up: Top ! 4 Invoking `gperf' ! ****************** ! There are _many_ options to `gperf'. They were added to make the program more convenient for use with real applications. "On-line" help is readily available via the `--help' option. Here is the complete *************** *** 1114,1119 **** File: gperf.info, Node: Output File, Next: Input Details, Prev: Options, Up: Options ! Specifying the Location of the Output File ! ========================================== `--output-file=FILE' --- 1119,1124 ---- File: gperf.info, Node: Output File, Next: Input Details, Prev: Options, Up: Options ! 4.1 Specifying the Location of the Output File ! ============================================== `--output-file=FILE' *************** *** 1127,1134 **** File: gperf.info, Node: Input Details, Next: Output Language, Prev: Output File, Up: Options ! Options that affect Interpretation of the Input File ! ==================================================== ! These options are also available as declarations in the input file (*note Gperf Declarations::). --- 1132,1139 ---- File: gperf.info, Node: Input Details, Next: Output Language, Prev: Output File, Up: Options ! 4.2 Options that affect Interpretation of the Input File ! ======================================================== ! These options are also available as declarations in the input file (*note Gperf Declarations::). *************** *** 1166,1173 **** File: gperf.info, Node: Output Language, Next: Output Details, Prev: Input Details, Up: Options ! Options to specify the Language for the Output Code ! =================================================== ! These options are also available as declarations in the input file (*note Gperf Declarations::). --- 1171,1178 ---- File: gperf.info, Node: Output Language, Next: Output Details, Prev: Input Details, Up: Options ! 4.3 Options to specify the Language for the Output Code ! ======================================================= ! These options are also available as declarations in the input file (*note Gperf Declarations::). *************** *** 1208,1216 **** File: gperf.info, Node: Output Details, Next: Algorithmic Details, Prev: Output Language, Up: Options ! Options for fine tuning Details in the Output Code ! ================================================== ! Most of these options are also available as declarations in the ! input file (*note Gperf Declarations::). `-K SLOT-NAME' --- 1213,1221 ---- File: gperf.info, Node: Output Details, Next: Algorithmic Details, Prev: Output Language, Up: Options ! 4.4 Options for fine tuning Details in the Output Code ! ====================================================== ! Most of these options are also available as declarations in the input ! file (*note Gperf Declarations::). `-K SLOT-NAME' *************** *** 1339,1342 **** --- 1344,1354 ---- `-G' (or, equivalently, the `%global-table' declaration) is given. + `--length-table-name=LENGTH-TABLE-ARRAY-NAME' + Allows you to specify the name for the generated array containing + the length table. Default name is `lengthtable'. This option + permits the use of two length tables in the same file, even when + the option `-G' (or, equivalently, the `%global-table' + declaration) is given. + `-S TOTAL-SWITCH-STATEMENTS' `--switch=TOTAL-SWITCH-STATEMENTS' *************** *** 1364,1369 **** File: gperf.info, Node: Algorithmic Details, Next: Verbosity, Prev: Output Details, Up: Options ! Options for changing the Algorithms employed by `gperf' ! ======================================================= `-k SELECTED-BYTE-POSITIONS' --- 1376,1381 ---- File: gperf.info, Node: Algorithmic Details, Next: Verbosity, Prev: Output Details, Up: Options ! 4.5 Options for changing the Algorithms employed by `gperf' ! =========================================================== `-k SELECTED-BYTE-POSITIONS' *************** *** 1473,1478 **** File: gperf.info, Node: Verbosity, Prev: Algorithmic Details, Up: Options ! Informative Output ! ================== `-h' --- 1485,1490 ---- File: gperf.info, Node: Verbosity, Prev: Algorithmic Details, Up: Options ! 4.6 Informative Output ! ====================== `-h' *************** *** 1497,1505 **** File: gperf.info, Node: Bugs, Next: Projects, Prev: Options, Up: Top ! Known Bugs and Limitations with `gperf' ! *************************************** ! The following are some limitations with the current release of ! `gperf': * The `gperf' utility is tuned to execute quickly, and works quickly --- 1509,1516 ---- File: gperf.info, Node: Bugs, Next: Projects, Prev: Options, Up: Top ! 5 Known Bugs and Limitations with `gperf' ! ***************************************** ! The following are some limitations with the current release of `gperf': * The `gperf' utility is tuned to execute quickly, and works quickly *************** *** 1530,1537 **** File: gperf.info, Node: Projects, Next: Bibliography, Prev: Bugs, Up: Top ! Things Still Left to Do ! *********************** ! It should be "relatively" easy to replace the current perfect hash function algorithm with a more exhaustive approach; the perfect hash module is essential independent from other program modules. Additional --- 1541,1548 ---- File: gperf.info, Node: Projects, Next: Bibliography, Prev: Bugs, Up: Top ! 6 Things Still Left to Do ! ************************* ! It should be "relatively" easy to replace the current perfect hash function algorithm with a more exhaustive approach; the perfect hash module is essential independent from other program modules. Additional *************** *** 1555,1562 **** File: gperf.info, Node: Bibliography, Next: Concept Index, Prev: Projects, Up: Top ! Bibliography ! ************ ! [1] Chang, C.C.: A Scheme for Constructing Ordered Minimal Perfect Hashing Functions Information Sciences 39(1986), 187-195. --- 1566,1573 ---- File: gperf.info, Node: Bibliography, Next: Concept Index, Prev: Projects, Up: Top ! 7 Bibliography ! ************** ! [1] Chang, C.C.: A Scheme for Constructing Ordered Minimal Perfect Hashing Functions Information Sciences 39(1986), 187-195. *************** *** 1613,1694 **** ************* * Menu: * %%: User-supplied Struct. ! * %7bit: Gperf Declarations. ! * %compare-lengths: Gperf Declarations. ! * %compare-strncmp: Gperf Declarations. ! * %define class-name: Gperf Declarations. ! * %define hash-function-name: Gperf Declarations. ! * %define initializer-suffix: Gperf Declarations. ! * %define lookup-function-name: Gperf Declarations. ! * %define slot-name: Gperf Declarations. ! * %define string-pool-name: Gperf Declarations. ! * %define word-array-name: Gperf Declarations. ! * %delimiters: Gperf Declarations. ! * %enum: Gperf Declarations. ! * %global-table: Gperf Declarations. ! * %ignore-case: Gperf Declarations. ! * %includes: Gperf Declarations. ! * %language: Gperf Declarations. ! * %null-strings: Gperf Declarations. ! * %omit-struct-type: Gperf Declarations. ! * %pic: Gperf Declarations. ! * %readonly-tables: Gperf Declarations. ! * %struct-type: Gperf Declarations. ! * %switch: Gperf Declarations. ! * %{: C Code Inclusion. ! * %}: C Code Inclusion. ! * Array name: Output Details. ! * Bugs: Contributors. ! * Class name: Output Details. ! * Declaration section: Input Format. ! * Delimiters: Input Details. ! * Duplicates: Algorithmic Details. ! * Format: Input Format. ! * Functions section: Input Format. ! * hash: Output Format. ! * hash table: Output Format. ! * in_word_set: Output Format. ! * Initializers: Output Details. ! * Jump value: Algorithmic Details. ! * Keywords section: Input Format. ! * Minimal perfect hash functions: Search Structures. ! * NUL: Binary Strings. ! * Slot name: Output Details. ! * Static search structure: Search Structures. ! * switch <1>: Output Details. ! * switch: Output Format.  Tag Table: ! Node: Top1240 ! Node: Copying3324 ! Node: Contributors22513 ! Node: Motivation23706 ! Node: Search Structures24834 ! Node: Description28389 ! Node: Input Format30282 ! Node: Declarations31419 ! Node: User-supplied Struct31995 ! Node: Gperf Declarations33594 ! Node: C Code Inclusion42004 ! Node: Keywords42831 ! Node: Functions44767 ! Node: Controls for GNU indent45293 ! Node: Output Format46232 ! Node: Binary Strings49016 ! Node: Options50159 ! Node: Output File50944 ! Node: Input Details51328 ! Node: Output Language53159 ! Node: Output Details54570 ! Node: Algorithmic Details61485 ! Node: Verbosity66734 ! Node: Bugs67437 ! Node: Projects69029 ! Node: Bibliography70157 ! Node: Concept Index72213  End Tag Table --- 1624,1708 ---- ************* + [index] * Menu: * %%: User-supplied Struct. ! (line 33) ! * %7bit: Gperf Declarations. (line 95) ! * %compare-lengths: Gperf Declarations. (line 103) ! * %compare-strncmp: Gperf Declarations. (line 115) ! * %define class-name: Gperf Declarations. (line 89) ! * %define hash-function-name: Gperf Declarations. (line 79) ! * %define initializer-suffix: Gperf Declarations. (line 71) ! * %define length-table-name: Gperf Declarations. (line 173) ! * %define lookup-function-name: Gperf Declarations. (line 84) ! * %define slot-name: Gperf Declarations. (line 63) ! * %define string-pool-name: Gperf Declarations. (line 152) ! * %define word-array-name: Gperf Declarations. (line 167) ! * %delimiters: Gperf Declarations. (line 24) ! * %enum: Gperf Declarations. (line 124) ! * %global-table: Gperf Declarations. (line 135) ! * %ignore-case: Gperf Declarations. (line 34) ! * %includes: Gperf Declarations. (line 130) ! * %language: Gperf Declarations. (line 39) ! * %null-strings: Gperf Declarations. (line 160) ! * %omit-struct-type: Gperf Declarations. (line 192) ! * %pic: Gperf Declarations. (line 140) ! * %readonly-tables: Gperf Declarations. (line 119) ! * %struct-type: Gperf Declarations. (line 30) ! * %switch: Gperf Declarations. (line 180) ! * %{: C Code Inclusion. (line 6) ! * %}: C Code Inclusion. (line 6) ! * Array name: Output Details. (line 129) ! * Bugs: Contributors. (line 6) ! * Class name: Output Details. (line 41) ! * Declaration section: Input Format. (line 6) ! * Delimiters: Input Details. (line 11) ! * Duplicates: Algorithmic Details. (line 32) ! * Format: Input Format. (line 6) ! * Functions section: Input Format. (line 6) ! * hash: Output Format. (line 14) ! * hash table: Output Format. (line 6) ! * in_word_set: Output Format. (line 24) ! * Initializers: Output Details. (line 20) ! * Jump value: Algorithmic Details. (line 63) ! * Keywords section: Input Format. (line 6) ! * Minimal perfect hash functions: Search Structures. (line 30) ! * NUL: Binary Strings. (line 6) ! * Slot name: Output Details. (line 11) ! * Static search structure: Search Structures. (line 6) ! * switch <1>: Output Details. (line 143) ! * switch: Output Format. (line 44)  Tag Table: ! Node: Top1236 ! Node: Copying3317 ! Node: Contributors22474 ! Node: Motivation23667 ! Node: Search Structures24796 ! Node: Description28352 ! Node: Input Format30249 ! Node: Declarations31391 ! Node: User-supplied Struct31976 ! Node: Gperf Declarations33588 ! Node: C Code Inclusion42342 ! Node: Keywords43182 ! Node: Functions45127 ! Node: Controls for GNU indent45662 ! Node: Output Format46610 ! Node: Binary Strings49401 ! Node: Options50549 ! Node: Output File51335 ! Node: Input Details51727 ! Node: Output Language53563 ! Node: Output Details54979 ! Node: Algorithmic Details62243 ! Node: Verbosity67500 ! Node: Bugs68211 ! Node: Projects69804 ! Node: Bibliography70933 ! Node: Concept Index72990  End Tag Table Files gperf-3.0.1/doc/gperf.pdf and gperf-3.0.2/doc/gperf.pdf differ diff -C 2 -rP gperf-3.0.1/doc/gperf.ps gperf-3.0.2/doc/gperf.ps *** gperf-3.0.1/doc/gperf.ps Thu Jun 12 16:33:54 2003 --- gperf-3.0.2/doc/gperf.ps Sun Jan 22 12:40:35 2006 *************** *** 1,16 **** %!PS-Adobe-2.0 ! %%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software ! %%Title: ./gperf.dvi %%Pages: 32 %%PageOrder: Ascend ! %%BoundingBox: 0 0 596 842 %%DocumentFonts: CMBX12 CMTT12 CMR10 CMSY10 CMSL10 CMTT10 CMTI10 CMBX10 ! %%+ CMSS10 CMB10 CMR9 CMTT9 CMTI9 CMBXTI10 %%EndComments %DVIPSWebPage: (www.radicaleye.com) ! %DVIPSCommandLine: dvips -D600 -o gperf.ps ./gperf.dvi ! %DVIPSParameters: dpi=600, compressed ! %DVIPSSource: TeX output 2003.06.12:1833 ! %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S --- 1,18 ---- %!PS-Adobe-2.0 ! %%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software ! %%Title: ../../cvs/doc/gperf.dvi %%Pages: 32 %%PageOrder: Ascend ! %%BoundingBox: 0 0 595 842 %%DocumentFonts: CMBX12 CMTT12 CMR10 CMSY10 CMSL10 CMTT10 CMTI10 CMBX10 ! %%+ CMSS10 CMB10 CMR9 CMBXTI10 ! %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) ! %DVIPSCommandLine: dvips -D600 -o ../../cvs/doc/gperf.ps ! %+ ../../cvs/doc/gperf.dvi ! %DVIPSParameters: dpi=600 ! %DVIPSSource: TeX output 2006.01.22:1238 ! %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S *************** *** 31,50 **** }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr ! 1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 ! 1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx ! 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx ! sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ ! rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp ! gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B ! /chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ ! /cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ ! A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy ! get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} ! ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp ! fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 ! {2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add ! chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ ! 1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} ! forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ --- 33,40 ---- }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr ! 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S ! /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy ! setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask ! restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ *************** *** 70,232 **** %%EndProcSet ! %%BeginProcSet: f7b6d320.enc ! % Thomas Esser, Dec 2002. public domain ! % ! % Encoding for: ! % cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10 ! % cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8 ! % cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10 ! % cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10 ! % ! /TeXf7b6d320Encoding [ ! /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega ! /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve ! /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash ! /suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand ! /quoteright /parenleft /parenright /asterisk /plus /comma /hyphen ! /period /slash /zero /one /two /three /four /five /six /seven /eight ! /nine /colon /semicolon /exclamdown /equal /questiondown /question /at ! /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X ! /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent ! /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u ! /v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space ! /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef ! /.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute ! /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE ! /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! ] def ! ! %%EndProcSet ! %%BeginProcSet: 09fbbfac.enc ! % Thomas Esser, Dec 2002. public domain ! % ! % Encoding for: ! % cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9 ! /TeX09fbbfacEncoding [ ! /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi ! /Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown ! /dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla ! /germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam ! /quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft ! /parenright /asterisk /plus /comma /hyphen /period /slash /zero /one ! /two /three /four /five /six /seven /eight /nine /colon /semicolon /less ! /equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N ! /O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright ! /asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l ! /m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright ! /asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi ! /Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown ! /quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute ! /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE ! /OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! ] def ! ! %%EndProcSet ! %%BeginProcSet: bbad153f.enc ! % Thomas Esser, Dec 2002. public domain ! % ! % Encoding for: ! % cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9 ! % ! /TeXbbad153fEncoding [ ! /minus /periodcentered /multiply /asteriskmath /divide /diamondmath ! /plusminus /minusplus /circleplus /circleminus /circlemultiply ! /circledivide /circledot /circlecopyrt /openbullet /bullet ! /equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal ! /greaterequal /precedesequal /followsequal /similar /approxequal ! /propersubset /propersuperset /lessmuch /greatermuch /precedes /follows ! /arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast ! /arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup ! /arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional ! /prime /infinity /element /owner /triangle /triangleinv /negationslash ! /mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur ! /latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K ! /L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection ! /unionmulti /logicaland /logicalor /turnstileleft /turnstileright ! /floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright ! /angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv ! /backslash /wreathproduct /radical /coproduct /nabla /integral ! /unionsq /intersectionsq /subsetsqequal /supersetsqequal /section ! /dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /minus /periodcentered /multiply /asteriskmath /divide /diamondmath ! /plusminus /minusplus /circleplus /circleminus /.notdef /.notdef ! /circlemultiply /circledivide /circledot /circlecopyrt /openbullet ! /bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset ! /lessequal /greaterequal /precedesequal /followsequal /similar ! /approxequal /propersubset /propersuperset /lessmuch /greatermuch ! /precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! ] def ! ! %%EndProcSet ! %%BeginProcSet: 74afc74c.enc ! % Thomas Esser, Dec 2002. public domain ! % ! % Encoding for: ! % cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10 ! % ! /TeX74afc74cEncoding [ ! /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega ! /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve ! /macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash ! /suppress /exclam /quotedblright /numbersign /sterling /percent ! /ampersand /quoteright /parenleft /parenright /asterisk /plus /comma ! /hyphen /period /slash /zero /one /two /three /four /five /six /seven ! /eight /nine /colon /semicolon /exclamdown /equal /questiondown /question ! /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W ! /X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent ! /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u ! /v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space ! /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef ! /.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute ! /caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE ! /OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef ! ] def ! ! %%EndProcSet ! %%BeginProcSet: texps.pro %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 --- 60,64 ---- %%EndProcSet ! %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 *************** *** 265,272 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-29 -250 1274 754}readonly def - /UniqueID 5000771 def currentdict end currentfile eexec --- 97,103 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 46 /period put readonly def /FontBBox{-29 -250 1274 754}readonly def currentdict end currentfile eexec *************** *** 312,579 **** cleartomark %%EndFont - %%BeginFont: CMTI9 - %!PS-AdobeFont-1.1: CMTI9 1.0 - %%CreationDate: 1991 Aug 18 21:08:07 - % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - 11 dict begin - /FontInfo 7 dict dup begin - /version (1.0) readonly def - /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def - /FullName (CMTI9) readonly def - /FamilyName (Computer Modern) readonly def - /Weight (Medium) readonly def - /ItalicAngle -14.04 def - /isFixedPitch false def - end readonly def - /FontName /CMTI9 def - /PaintType 0 def - /FontType 1 def - /FontMatrix [0.001 0 0 0.001 0 0] readonly def - /Encoding 256 array - 0 1 255 {1 index exch /.notdef put} for - dup 0 /.notdef put - readonly def - /FontBBox{-35 -250 1148 750}readonly def - /UniqueID 5000827 def - currentdict end - currentfile eexec - D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE - 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B - 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 - B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B - 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE - D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 - 9E3948FFB3DF7BFF10C9BDA4EFE5F68A8CB1526990D1357AE6D2F7C2D2EF8496 - 4E47B39E6712EB8908A3265E5FAB40567E866C244814449F1E993AAB422C3F1D - DFA8C7118584F2E5197FD4BFA3A8AE9E953C6CD4672C0FF51E41C3A919749C1A - F06650DF4C5E17492164BDBCDF22609A74BFA7F69960A64B9F949FFC2A807458 - 8579366C4F41BDE1FDFBCC4845FA19BBB6963D65EE8532549274BAEBDFF24FA6 - 03235D1BE37C06B1938AF369DA75BF38DDBC87A1FF445EAA16E1895ABE9506B9 - 211955753E447865D33CEF007391D2666A046277A30A49804FFCED3FEA5EB2C3 - E52EE14A9F75241EA10C91974CDA6236EB840FD44D6DDE4D9B3266C3B99BD38B - D835BCA8CB819C073480FB972CC028D218F6A1D344CE1B63F4FBF2C826F412E1 - 6E0B05A26125865A14FD7B7030B478BB8BC6BC395335C3BA940E1C348267F4F9 - 0AF97BBEE253511940F1048E175D3569F7D05A28851B6F50765FEB6C9654FEDC - 1BF52F535DB5BB90C1BD5D2EBF75E0AEBE82B20507F3C28A03746781018D4EB2 - 298E4F2C27ACF73FA73EBE43F014BB575AAD516C0407B29E1653375135ECB74D - C91372F06FA8EF37C31AF3FA48AE65318EAA6C34830A5377ABB2DFA5DA53A574 - 433484BA1466709A4B186761655C8E482833B697673E847C691079E7F1DCB8D6 - 1AD91101D757B83E2090337D525AEECB028FB3C9F6A6E6AD2F322CFDC5A833E6 - 1CE4EDBF41FD34FD61630581D222F854A76C2EA9FD72796A7C9CC1F6C2FCCD16 - E95CA05826A4ECFADA6A5FB83C41A7131E52BA6585DD6DD78515D8F7327DFC6F - 9404F89293D6ACB433CD0802C43F0E74C6C4766A23A6AE3788FE6CAE82E1A104 - BAEC8BEFDEFE4F292F625E60362F3886F602CE4121BF0AAD93526314BCBB5971 - 40091A7BBF7EFB3BA355B88C897D9C70C841DE41309348751EDFFA8675215988 - 49CB1599834A01EC6CD4FD813AFF97A614F56975775D5F48E9C1A9CE532FAEB1 - 4EBE20C3FA87CFE03664C428BFC5C894668E507950005BD8C2BCA8998C1FB92C - 4E6B791BA05B79F332EB8AF5B0F851B8B7EE372EC0861B09C007CDF43F82D0B7 - 35446F682A0DA7F4112CDABE4F922EACFCB7B8C88BF550B60957E7 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - cleartomark - %%EndFont - %%BeginFont: CMTT9 - %!PS-AdobeFont-1.1: CMTT9 1.0 - %%CreationDate: 1991 Aug 20 16:46:24 - % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. - 11 dict begin - /FontInfo 7 dict dup begin - /version (1.0) readonly def - /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def - /FullName (CMTT9) readonly def - /FamilyName (Computer Modern) readonly def - /Weight (Medium) readonly def - /ItalicAngle 0 def - /isFixedPitch true def - end readonly def - /FontName /CMTT9 def - /PaintType 0 def - /FontType 1 def - /FontMatrix [0.001 0 0 0.001 0 0] readonly def - /Encoding 256 array - 0 1 255 {1 index exch /.notdef put} for - dup 0 /.notdef put - readonly def - /FontBBox{-6 -233 542 698}readonly def - /UniqueID 5000831 def - currentdict end - currentfile eexec - D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 - 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 - 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F - D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 - 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 - 2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D1E - 2931CE5F5D18C658602059F07BE66E6EFC9239D7AB2FB8A4CBD41675B8ECF279 - 650C29E53B14AC0E392A664848C1844B1CECBB2D5CFB72D0916B675C9A9A1E35 - F12696A6F628473C604A95376468E06E295AD6F76CEB939D94113532050B9D5A - D2F41A9EFB9424D986612313B89EFE9C8A71313340B248F6853B1EDBF02B7F9E - F447220FE131D7D54CFB8AA1281DBAEA73E665BACB1F164552CC0CEDB63BD4B1 - 4A9AE8AC6FA02242DBE8DA46B64B6BFC11762F0784F216FC8B9120D688D1705A - 438B14F5E5DEAF2A98408B3B64620DE3732A4DAE6D08D5D97E34C75DAE19EABD - BA0796165C1151BCBFB1DF8D29A63A8300DBDB9E3323CB82D0337598B83F4F2B - A97CF5196D4D1CEC1EDB8966E548C0D9C194C932319610FB43EA1B86322FE641 - AB48770FF13BD475A7267E142388563D1A400419C585B22A9886074687BEDF74 - D905BE8EE440BA2ABF28EAB673399B7F129B9729DD5564C681954621903B84BB - CAF89AC5ADB2932472DF29ADA2BDBDB4D05F65F28F5F4C529613D61858E0074A - 082A852710A62A147C966F2B85B51B0BE85F11D2057C66FDD61F6C5755367980 - 9F4DE680601D4DA41B46F8D2148450000413C27AA39B586B74B977B25F0FD3C0 - 4BA1EBFAFDBEC531EA13DFBD6700E53818CE04D23886B8AE75DCC36BCD3189B1 - 0D55FAE27D0D126E82AEF31D7B5DF27E58C30BB0867D6D7AC1DA9EFB8A2DF095 - B5B934A68EE122DA0A83B36C952431586B957990206194E89339048AA6EE4C53 - 703763505ED57C494DD907D0EEA04F6B1D4C8F3BA778F4E7AA832AAB4D75F024 - 61E91C6D25FD6823CB24FC863AA50B9B6CBA06BE11814BE6DF2ECBC59614A061 - 67311E64620BA968BAC5A4AFBB51194E1EC2A8A6460E85C23C146388B0A16BAD - B9405D3A50CBF9F2060A32C8F37340EE51E6E7208F705B41AE2C78707EDC4C1C - AC4BA95875F0634C6D5BE1C5DD4BA35086F660154CB1D3E176518D634B551319 - E8F8C5EE80251323C86C9DAD0FF8F360F4A2930AD3266999811333EA73405FA9 - 55B447DC8EB07A0C64CF2404BE8C6C7E6D263E799B1156E68AF1361ECAD79F9A - 182A71A49040A9960826E74B88307F4C0061046C0F9DBFD25A642E9FA82A691D - FBF60D03D2BB92FC09D4C814CFC0DAC28690CBEE9D9E73FA943FF9C68285C683 - C4E1AA05DD669D24AA5EABA214FFA994E61669821F0FDE4AA2BBA18FF4A11397 - 515996FE402DD98FE032C6171DA1E40D4F870BA08FCB5D093525EB366E825445 - E58CD3E6FB72291DF9288707B8C2D1F96D0895CB316B74585745CD1F636936DE - 9572C75BD823D3869E264E452B1F2554C20DA7A0A38F3E80646D1727C836FEF5 - 85C22382271615B6F994C34A5DAB5031F1FD58DACE3EEA8DEC66B6E683B68925 - DBB3820FD525D0C07F82528B06E34A5AF65F3BB11DAD02ABB66C8A0670545071 - 97EE01859BCB8179731230D9A8BC52A47656A84BBC7D1AC118D497F14937A1E4 - C5A2F171412185D365B7D476C872132CF8E49F87C8EEAE6EA4AA5979EED7831C - 061384E91AD71AE04E80917B07F85F12B4B88D46BADDB6D9B56C4BD028FBEF25 - 432A07B83E81A23B3025DC6D2AAC38F40F5091CA6275E22388093E9C46B97774 - 0B091D60F2F85CE5B38A64B4EAD179C5EFB72A6DCB31BF080E62EDA70BC27FF6 - 70F1E6B7AA9B60BF19F52116D919FECE991946C8890766CA834C9EF887EE05B3 - 7870F0905663F66B483BA94829EF58BB076166A40809474ABB9EAD15FD21DAAE - DFD13192EBF5CE5F13441BF33910DBE1F03F24F692D229623974FC0545609E1D - 04774A010546D9DD7DC565BA9118C9162C4EBDE79684398D055BE9817D5323E2 - 62F47521C9E9B45123A1A9519258FB0DDB1068D7F92F38FC65F38D3479E00B70 - 4193F003F92F1C80CA0B4607DC1A60C1D342E9298969B23BA9247936279F8D98 - D953AD865D937F7B9FF3424B4263290802A53C3F1ACB5BE00F4DB01D8ECCA322 - BC02E1A1E025CF85C960D6DD73D4C53474544B17EF73DBADAB9FDAAA93B627D8 - 7263110ABA54DF1D3C1F83724DA049DB977F630706988FE0192FB53F3FD9417B - C24BC1B3CC184DAF52B07F2B4461190E0BB06EC6B4AA0A9417C66AA20DD96F5A - 8C7DB7BF022830873F5DF031C9CA661B1ADB1EE2F7B08DA3B3DF127D52CB0B88 - E01E4593AEBE23FF5177B1EED76EDCF84C6272C677D6B221A35B420D93252183 - 6B6536F0477E7540636C30B02BBB7E4C33CED1C4EB6462FE2FF03FA3451F952A - E1BE1ADCC347E3B4BF0F551CFAED1D123F30493E4DD71883B8FFC6BB4A855D02 - 5C10248ACFC1AD3600D7A504D043BA4026BF29357D11489F6E2534111552D79D - C1892AE149061E5D86C01D82C52427B4486F88AF9733EEDC2A27C59053189136 - 14BA6AAD04DA9C35B8377E339BB1678C533A8800AAD7736C4F2C99C979F1FC11 - 65F2605F4D77A0F524E259C75F7B5C319229BF4E006F106D2E53057537E646E2 - 3E04FF414E52AD68BE9480B3FBEF472C446BBD928758558F299AADE32E3A947B - DAE1A1563E506753D5DCC8692D9315729404956DB585209C512C1843F11B1B68 - 9662B6F7FE8C288C0D4E514979D3BF3FEFAFB4694D8969DC6D238D4310141BDD - 48812F4E2EC6FF9B30A19E7DF6176643E8BFB9E5FB5FF44269696A120E4629AD - AC47AFC0E43C9048552F47096F6030C87AE08B6969882EAE4A63C8EED064943C - 2DED79E266545B8807739CFDAD5AFCBEC84CD577DB0956B7D3E573FD4D150683 - C03F339502B0B7FF14B05F8063BFF72272AE941313A2A87833B266B29CB4768D - A5561D5E0D385CA96B0D42390F7F8C8D0938557CD4AC52571E340F7E9DC7BD6C - 063CE5B9F584D60790CACFDDCBF46408DD37B8D2D77F4FAE3F3579BD601A6508 - F62883BBE55CC900D4FEC66C95D04CC0FCB7F9D5FD0AFF3CD8A8041FC2A7DCF7 - 923720EA109E2447287D4DA7B390DDEADA6001948FC5D7516BC41D9F9045BD6D - 44AC9FC7953A1B19C48F938DC7DEFCBB895F29609438B0735BEE9FE2350EC3A5 - D07572A3DEE070F22139209F577E0F2635A2F081ACDD60F1DB00E8547E0F2043 - A372C73063C50FC37662588138538BF02670D88E98CC6BA37A7854754896E36D - 9660D1B57E8561F7646763B47DDABE791A22795EA0052A5D5A1215575DB845F6 - 72812840395A3FD09FB64C49E1FB301F894B81641D5F4E118E51376133FFB60C - C0D7E53AD245747100747C1CF79E43074FF660FD9CFDEBD27C314B33909993AD - C6F74320515DC8662C18D130B573866A425A71208BBDAC74B9856435F0BC8743 - 8B7B0A961EC6A50BD7C28A37D1B498E201C669DF18DFF254B46E1F826ACBEFA9 - 63F784B55FDEB25C47344D51C229576ACAE0B5668854BFD2F3C4317B9B8DB678 - D7070B27D4F58AE5285EAE9112CB06B91B3B7EDD674A7C1CDBDFE0E908918DDA - 070AD7F1AC630485BD63CC060AB809D959D8351EC0D0B16C5928B04A96FC5F43 - E16AB4A92FFB345217429544BAD0290BB0301B39A461CB1112D666BCE90BF37D - 46314951443D48B66F87C300F59553745A5218DAE7FF319EC6A3E54A08E2BD78 - 87DEF58A90F21E2EE89337287C672F039B99C21288A3893118B11BE6192B359A - 743E7F2AF63D9595C6F0BF8E925A4611F5C9EE53216EAA6EF28F76CA97D8C608 - 668D4F2B9F4758443899761858C7FED1DEC31C7063D52A54BBC52408AF7599E7 - B00A06EEDEF1C6B89CD64D83878CA3509365ABCB953BE258703304FD475B5423 - 6AC41B9A01FFC163D00CB39A714CD4C4EE44BD3B72B836FC6FCDC5B4807BE0EB - 105F308F6F0BE0026ADFD15C7FDE8125F26FF0464F77BAA01417940EB4921F84 - 642BFFEFEB1B260D6D5DBF4FE8E4B27B735538C00E1A1E113C3DAD716BC5FB2D - 4CBFA14D80494869D98F2FCD284A6FB0C21EAB1E9C39B2AD13ADB3F1ED11462B - 6AF1D508F725D720F13E05F9DD829B6A4E85F2875FEABE6E08AE8AAC5E3E3CF8 - 20252F986C06659C956A91DE1A55F4562F69083693A506EAE83D9D3BDF3EBAA4 - 929190CC32FFD3110C91C45B8EA7244EB90AB715F25651276AC763DE439FC1E1 - D329C8858131F5B9AD33EBB54DE30BB896605EB41F6D1A82AFA2F67BBC0CBFAE - 65F2CC7BD43480E72FC9A320A8DB76F4C5BCB1AAFF01FE05F2473D109B72B367 - 91E8304E2D56516A2A0D36E9FFB237696EC8159D8A8132E8FFCCC52788A34C94 - DA762D34516E07D639C7E2C92BF9855745E603F30E756197F77AEBED83C52A85 - 02D6922B39AD6F223D0EDC2B9355212D32770AB4E2E5D42D10CF3ED77A321A19 - 5BE4566EFD21DDAF65C9CF4961033D298E0A4CB01885C53E92104E816E261DAF - 00A6CE7C501CB2282BCA60C641B298C8A5553F9CFCE711C6B677EF94039BA4A6 - 8A29B04C69D6B0C586A3DCF1D323B611E87741353101D201B1A51C58C5653808 - A88DFF583970916F252F79BC09989A7526C6C004205396A6AEB5D5F893AD2BD5 - 21A7C70CDC4441826B31DDD7CDF72AC95954258EF01EA58BEE077E7496541955 - 98901F9DF5C3D9871C2D73D5BD55081FBF2903AB2D666B062EB59271D5DE2979 - B6B7D9E6F98CC2BD25E93B963F8069FA557DD229EB689579194DD23552D44B76 - CDBB0393E7495139C765A901796B27B4E1BDA58879E335DC1094419537150FA5 - 9F3C8B24BBD04CFF6EDEFA0EF0675831D473D08C563607F8B8FDC779A888CA90 - 59B91CA9455F49B75D01AE83E29B525DFAA3EE8AB6921C98A08C9863EAD03FA9 - A06CCE0D2E4F5AE3B58E874962521BB632F40AC0253EFCA8080F388AE87930BA - 2E6F251053FE3FACC9B8F5EE35C7E11C527BE04A313B15056DB5A2BA9179D38D - 65567D7BFB41E864C5A628D92FA9CE07DCBD3F61FE5716DB80B0C4BCA5547E0E - 5FD095421ECEE9F3AB0BAC5282D6848B592334CA0553776944FF72F033697BFB - E341F5F006FFE5E1C3794289CC7E5BEE9049F11DC4F4FF6CADF6D2FBDD87A66D - 33916034A78D3F8B13E30DB2D5876405C8C4E533003DECC6839988E716B54CDA - 8220EFCF0BD284F26CFD5CFAC1A680420DEA1C9D925BAFDC063414D6E9B3C67C - EA61C4348DEBDD601C47517288D2869E815FE104291BD26B4CB623FB24525981 - 3401580E6E6C84914AB9CD91B3B541F9AF742119DDE659146A4BBD4A3F532DDE - EDC29E58F4C2AD9B78F1B6B4C7DBE74288E9900EFE276A22E74B82D20F231789 - 79D72B1AAE398B8981D33E6EB27AA29530E169EA294A1A76AE941F7BD33F1333 - 59EE7F2448E0A2DE3CEAA02DA052B941718DB7288CBDFB0EBECAB5473F3A1E6C - 6E2B3A823E92F9BEAB5E704CC717B170FBAA1F6021478D676EBA2DD8C1FDFCF1 - EFCB0502845A1CA22C344A9C309B450E7C6D1970F12E5F21C1016C64373EC731 - 3E5D4EF7C86285ABFBF6CC8A7372E0A2269E44F8DAB78863B26B1C13F38684A1 - 746BDEAB3C4707D0E1D519357925041A9A34D39ED75056CFB3F80B428FC318BC - 8D61F7B0B560CEB296163FFA87579C15978A6F85DF244597A2D69D1C952A9062 - 76B045F6DA725A0C50EE54087F2659E783F7C184C5F5A6429A7B5FE905C100D3 - DB6106A1F5946314CBBE013462A62B9F4F2B053B14B6228D8903604E7058D1A6 - 22BF06E2148918CFF2CB8B7A5023D59457A3E4D719E4E21234D29A2B62BF58EF - DF5719C6976AEBF9FE7BFA627466E421EFD90E7EBCFDC0ED82AE79DB249BACC8 - 24194544826B53932F0D6C16B97D322D2F546E00E63E27B3C44FC2C1CD2865C9 - BC3DAB3EE336724A1A345970B38E806B56C9E810C4FF6DD701FD61581F9A8467 - EFE2A2C0A57DA04CE84281E8F2EA799428C46D9F08BB07AF3E4E293EB87A675B - C74F461086C1DE798DADCC23739195DF2479E6DCEE0E582AD55E8C496BBC47E5 - 403003F83C523D37DEBE106EB00CBD0E9E84BBD73CC823ED2F3AA3BA824E2C53 - B2B1FC67C4FCE94A1CA568ABA7AB4950782644A47D3C040FBBA833EC0D00DE03 - 392EDE905C67DABCF6F0BA9771A953A29D3A02EBE2447D3AAF484BC461FC4EA5 - A3EB4985F5FEA614785F962CABA273B5952F73B4048EF771A78126D022471276 - C4C3C9DD5C8B2A7C89D4C4804357131E30F5734C93205D8C98D1152B7C2F3D5D - 8E1DFF1731595F17AB58A761A56BD1A336C4EC203BDC7732FD99DEF3CCA1C2C9 - 0DBE11653610D192D0AA776A6AA0B493E5C2ADBD3D03598398251898FC879533 - 154162AE4A5BC9690F00F8976C3FA4C506325DB5E744642DDBE32FDBA38058BF - 492C8FFF777D58F0D5C46C224C56FBC86908C8E0F7759ADE27D8BC5FD2752924 - 12EDEEFA51707577B91C86613D4A69FFB236E615D74F49455E31F2C5FC9F003C - DB70FA20D5CAF86CBC7F0F0413FDD4CEDD99741BD89DDD66778DE46DD98D6AE3 - EF40473E16AC2A6DBC60F475132FC96348ED87E28DCB1074FC52D0EE81BDCE62 - 40869C9CB2B91B111B445B445A17782E194EE36F4BC5412788BF69D06801BB3B - 224066F35E04CEE0B3B81894724C084A813683B405124171861802DF38D44151 - F2A7FAA59DFDA16A881B920B20F3A5FDCB95330F0D57475738B0108ED4C476A0 - 40803FCDBCC23B284286A483D3AC86E98F77245F25E649AC4B6F8CC9E06D6F6F - E29E993CE6F34D76C6C8E7615350D47EF57823100F1E8101CEA89BFB0FCBF05E - FFBBBCFFF87F6A0D20E56B9BEB0D4807C856A82FDAEBDF6E756A82C7D480F128 - 3BCA96BC773D8899A9166EB6982B5566F262D0D4442D752D25DA750E9F7B2E26 - 8451CB3CB6978C022BFE32F4FC829F52CF7E856A2FD27E5C29E69290BF7CECD5 - 953F8CFDEDEA316F5BB0BBFE532E688793A86D21B17753B5585042EA0398800C - 3840803202FC945E4BF72C8CAC140FE6412187142484B7EEFA080419A1BBAEBF - C77BC72CAC7E668B3217B1B9775E585BDDB10F4ED705A92FFEBF6C4DFB6F8C84 - 8383D9DAE4CE854304F0E84D777B0EEB9AB5DFD573AA2556A1B0721D2C31858A - B6F3432BC2706920 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - cleartomark - %%EndFont %%BeginFont: CMR9 %!PS-AdobeFont-1.1: CMR9 1.0 --- 143,146 ---- *************** *** 596,603 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-39 -250 1036 750}readonly def - /UniqueID 5000792 def currentdict end currentfile eexec --- 163,179 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 40 /parenleft put ! dup 41 /parenright put ! dup 73 /I put ! dup 100 /d put ! dup 101 /e put ! dup 105 /i put ! dup 110 /n put ! dup 111 /o put ! dup 115 /s put ! dup 116 /t put ! dup 120 /x put readonly def /FontBBox{-39 -250 1036 750}readonly def currentdict end currentfile eexec *************** *** 626,864 **** 109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 ! C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7A66D8E9C810 ! 49CCC0D35AE00D3669EC7D8ED957EEB2105BDCF7408E0B04A325495D38BCE845 ! E96329244411EAAC14D3ABDD2BECAD7D391ADFFE3F7565B14FD29737EAAED3C0 ! 7F3981DDBE07D4AC09F6C1A32369BB88852CCE980C1E950E27EF3CF8A840B393 ! 9792FC1A510BCB4A2976BB640EE4510EA2BA3C7B5FE02F5F0F845B6B00F617FD ! EB4655CED34B0097F22329071DE7738CA994BD0F983C5C4599AB9161F3776023 ! 9AB724F231D9C38A76FC8F6A2DD4E6C9FD2B8061CDC814442CC69E94D437AC78 ! B2DB204A99A3240E1123E0568F6EDFE11586FD1056FD547B7CC477CDBA05F4E8 ! 267F1174136F0A6F1DDF36774E8C58C3819ACBD9082D6F8D32787199B991C539 ! 66ED8AE31E98A78F906B67ED87FC30D3E9FC8786D38A1DA49EC9D1075CFD4B23 ! CF86014DD39A0875E64A40A1EAA6BB9B2D5BBE9F5DA15A93FA14027AD2CDEE21 ! F3CD937930BB35F12FDBCC15AAA27B26FD9A3965CD3DC6EC8981BE0B1D1B54A8 ! EAD03882DB414C55E69F022DCD972D2509CF438F5A8A3D005D6C4840FA11C09A ! D80E4E7A2A9D5D35C9F90E74B6879428B3DBD6A9F65988921495F5932718BADF ! 6A1D0BCA5C28D95C77DB91FED97E631BE91F12FA8B822F17C19A40432BB51FB1 ! 32456106CA12387835F299D2C835A6015DA041BB8EFC89A05B9E14B431EA49F9 ! 663EE20B464A0D899E959809FD8CB94DF654FD60CE3DBF43B68513B73D370DC4 ! A1D6EDDA5A97E4FA33F076A46798F08BBC9A8B881FC98A6FC75D6DC35F11B006 ! 1CAF7B4C1EB3D842AFFD7543E0684C08B9066580AA87DA60063917085B15574F ! 89A66AE6142B501DDA88AFB6CA54715FE9C322FCA314B24A1EFAB4540D29D4BB ! 5D9DEB2AF0D3EDAF249C7CF44E9AADB07378AA79856A8547723981F63B34616A ! A2CE9FE46E701270235FA81568A236A614278FDD2178DCED2E89C67F73B17241 ! EE3963A20FEFD28D57A5EDBE9038EBD14F2B4522FD33E87FA15346E5650AA523 ! 90B3C06C1F5C58C3A724E492E37D39B2247264DA02E5429062798387AE75D344 ! B2A49017D786F5CD038F47BADED863CA9B0AF8DA68D7633997432A8289FBADDA ! 5C0CB9DE70AD5C358A34D05719104C5320810984B09B6DF65D8D55F515704E6A ! 85DB3EB4D3E1174450D67D5B9BA65575697EBDE700EA6A7ED78BF125B86C2EB7 ! 4F8A3FF408A4330A1F7DD21BD4D991A864F75E203F53A1BC423F071BFCBBD398 ! B6F473789C02DEFC495FCB176636A5FF6C1097F2B262FA55283560FDA41BD09B ! 1BF15AF3D55CA3B8EBE99822F2B0602CAA02DD7CD9C06FEC22020088B328DB5A ! 72C1B42A7EB70B9D3CD7186AF316B9C769CCE07C7EAE3CE6C0C297031C21DF01 ! 50934FF9983295554BA5250B84F48E8A53C12874628AF7CE155C400045F836B3 ! 9A9FD9C6DE9A85556AFAA011619597D023B229B24DF27DC30C280C2DCA6BFBCD ! DDBD73738D049A34EEC427B15463A22C989AEEEB870BA80D2A161EB19EF3B07D ! 47381CB799907C723BCEBBC23591FE23EDC4B5526AA62AB69915A29E204EAA4E ! 5CC6F50ACBA322C147BCDAB2037942FAC0BF085ACD727037939DA6D679A67BA7 ! 3C6F125FB7E95C37BD9E69F12936506E2591B7570D0D06C5EE1226966DBE3281 ! D72D682E570029A49A5B566F2A34F3C4D1B74A845D7C4ECDD5FF077326FFD7D5 ! 2D67EBF1FB9B8219B6FDDBFD93D204B5054B8DC0B59264F944F6C434D73958FF ! 942CC33C4EA712E73547F15EDFB1D4F7E9F48330ED24D61CBFE4F1435345EB52 ! 2654BFC97CDCB80219941377C9F08E37DF676CBF8F1FEAB31B93CFC356A854E7 ! 2D44997DE52B3B61140EA94FF249DA41AFBAE054248BCF618B171B28885EEFC9 ! 183C4BBCAD4F7D2A230CE4490DB184D4E123309718E5353970D4AC9FBF38549B ! 2211875F79D431340D5CB6A0B9CEED0EA26179121D155BA81B5FDF99C5E8D177 ! 3B0B10814B81E4FA26B9B5875FBE7E2623B17AB3C04419DD250F0DC422CA6F8E ! 1677E46BEA2596BB7D52917E49A8B175C5A45B53DFE99CA1A1787BBC65E9B335 ! 6BFFCEA2D8CA21E457AF27A83B192BA9011143B82E7ED7754C85677024104E9E ! 961D89ACAF6EF14E51A027EA3E4BEDE07899542ED05AEBB63C93A73707B33E29 ! 39F159F1E4C042BBE672C661E8CFFB9E2D99A21DD37C67DE76ECAFB1D86A25A3 ! A35A5644653C5571B5B7AF8317A12C65C9D0701197BD6981DA6491AE466730A4 ! 317FCED66FAF5B548D00B28D8FC9FA581206582A43BC8AC1C25A6AE28DB6F993 ! 2C4EA8372A77DADB48E84F2BF0B13212782210593DA8843CE20F480189A6B1FE ! F25628DFB0E80EF6246278A977779771ED41C18D149AD5B9029A350BA27B2DE0 ! B4BBD5846279AA5A7EF490E93D7A29A638C6D8300E4DC86BF13EB1B86861879A ! 3B040982E4B1E3644BC982B7F6F3EB5E0E68E4ABEC782B0A5D4A118344510C5B ! 5C713028D1055D3FE8F4021F34D6633100642360E78818624DADACE86C8959D8 ! FD3D17A6C3C68BC57D4DBF3C2C1DDB48E485477F8642FAB9CE972642CBFA1E55 ! E8A49F277958C2C5BCF94927BD4BD1BDE65CB7881DD58A19DCD4520AB550170F ! 75F2DB0F762D0E299B5E9ECD77D2DAD70A3D669FA0A35258501111F87004D8F0 ! 1176446116A6947D9A9EDDBDBC8970E467C0C297FF782FBC792D67F6670F04D7 ! E144383D0FA67DAAA72320881BBD99AA2D5FE15FC39875C76CB51358942D5972 ! 255788796AD094FEDB21A62649C2776D06DDE5845BE618BA586039114287BABD ! 2497E94EEC93B5BE6CF26EAD350C3054BE1BCAE4C7BC8BA00D790987A4B22427 ! 5113579591E22C858E9BC334D521C79687E727C500A49D64A04D184202A8CE6E ! 2B3E061D9782A105E70E41299F921DED673BAC72D68E7571DEFB6BBC74F85A1A ! 459F0E3E25D6D7537A03599DAD46C0D5E2A16FDA46A6AF0FE03BD8C83B6A98B3 ! 859D90557D1E57EEEDD7F294367EAB4A974F4B335919D82FCB10CFA5198C53B3 ! F2A1E716E911039BCE3518A2313586D7AFF353A7922B93177A09161161E9D762 ! A7821D0BC443C593D9E2E1DFF06A886FB5AD8138488C7697BA30582D762163BE ! 6C7B8DA2E878BECB58C6AEF6E7A79B3086ADDCD8A788C6B7500D8B0388C5644E ! A671BC9DD7E42F0CFABC401CDBA0118747E575E990A12DEF28458DF96784D22A ! 3953A07E8BD0B635F2D9FB6146B68042639154044C4E904C64E9D5B724963566 ! FA3B60FD276E3D7EB2F59659CC36C45A1E8B66FA47AB87A3A0F0DED9A1E807A3 ! BDA72D96D45E4D6040E1E6D4445B0B6D8ECDEEFA947DFDF7CA1F366E662CA7FB ! AD8A48B1A25733D5DA1BFD5716A4C6A1CECAF845563D29C49462C18A4272152A ! 135A7345C554D43ADCE45CF5F4CE4EE177FBA9140CE90435E332B19047A066B8 ! 3760C148FD48FE375D44577CDA59D232DFA57A258CCB4BBBAE50BFFA27050804 ! B70B2C0D66056D468C70F9116969501CCE52C064CE41A23E295C141FD21472E5 ! CE1A175353A04922126CEDD02B726E9880F012A2210F703C2D99AED3FDA32470 ! A2CD735DFB9EFDD5BFD261676C56930815FFC44C106D87E68BF83B373C25C8DA ! C58BE6F13EAD93E4670F7A710019DB68AE250E3E86AF9743E9F3F426C93A160C ! 7753B901F2E4865BEDA045C302CEF439138702DDA7B9EB6D29292D2490BEF110 ! 9FAEDE14011BE77647D67B2FD62AD29925B2108EB90095CE8972497D6E308144 ! 14AE95D21FE28DA652E891A4424A9815E2AD0D45B0AB9A3BD7FCE59499EF239E ! 769A99A01EC56884717CB544F3FD82CFBFE20E7D8E24FA60C7DCCA9F83DB8859 ! 9D110F2EDC2207AE6C991456DD7D07575144DA2E1B4D84943CE2EB32748E3D2E ! 9BA1D3D4B9D42C0AD31D623C15B5A5541425D4E35941DD0FE91239922A57DA70 ! FCE714D44CE73BD7D3EE55D6F67DFCF6D118F6DEB09427B64481A45DDFD96AB8 ! 9E7B290DDBD974AAE4168BC92976A3883E866B4304F02C1DC2BE9BA04DA2A961 ! BB08924737FCAB324692C884493A6C6B268B9DBAF97553F6FF0FB3E2FDE53E25 ! 3CEC75F31975F086F44D0021E96A8925BA2AACDD20D934500578C22F79E373A8 ! 11FEA8B4E2A058FC807C4E3E5A12A12E82A5B052443448DE3F7570EEBEABAFFF ! 8686C2893706D6147BA676BD8CDAB292D4A337837325185A50C6B3F6BAAACC1E ! 07D7D1BF91905D97D8DC8A6863C0D82E117ECCD3AC0372CE50F94506CAC86252 ! 2FD9344C6B884681C6D7EF29B7AC644D1138D215B05323F48ACF617A6F6D4330 ! 1EB5FD493F8C97F1A1CC587C5F0C878EE0CB8CA5C4CCCB8FDEE298AD78AD44A3 ! 6F3D2FF5D74E552B0F9C7C3CBCABEDEFADD33AD7001B32A01F27166EC902D2CD ! 3516A21A2E68293F366EBE62E3497922A8CBD719CB713072347FA539483AAAFD ! 0361287956057976D74A1BF9CB1508455DF701E8234CBD321C5C62970AADB965 ! 632CA077601F5D9B28BDDED00CA92F42A04776CED187489A87D1D20C10DE8A2B ! 8758039FD6A76EFA51DAD0523BC90AE299000B8476DFDE7CE733956441EB532A ! 3B386F0643EBAF6344E05F0830489B6B9494B5CF37A614AA7BC0F2F69972B23B ! FC7636B0AFEF9A2ECB537501D133D57C7AC74F223A12EFFAD2B1EF109090CA2A ! 822378FA460CFA4F4E390F9750D60378FF2E521341FD75DC106D74A248F03F5B ! 5D60D3030564858474A088A6DBF1C96A98A0D3BC065518CEB57E042E79A6A0E1 ! E069C4A28E7436AAF169F6A0BF0A94CFDCE7AC1BC3DBA674ED652F8D2FD8649C ! 1BA555BCF0412D748202C12AAFD91FF70BF207AC9BA95ADE26AA443B1B6EC6E6 ! BAAF8F2E17ACC5E97B0D772CC68F1D2775DE4E27B16695EA3D70746C3D8329D2 ! CB874028A2F951FED9D01415615D489CA4F5892BD072A67E7405C1CDBA3DE9CF ! 22BEC8272BB3B2971DBC17640C2B7A2C4539857A57362BD678F2F2079FB32181 ! F51B4D6228F9D53967054B7C79499D72B871FD6491DF30A95692F0592FC8892F ! 1FDA2B08F53FA14019E9650F9B64E7CAE6EDF147FD661369B2C4F154E9FCDDC8 ! DF328201A0A73AEA0A705C305E3E687611E23869CA944CA1B40CDBEAB8C9EDC9 ! 57B24D254169D03869CEE2D43CD2D4E7B403706E051C6A942E38315B2E8FFFEB ! CD925B5808D918662E6817DBA96E114CA34FBF6E8232AB907AA4A6A77128F60B ! A179EE8A411C3210D6C96C6051A03914F5BA48D199CD95D262A80A7D78110084 ! CE48FAE4FF53352B053B93A237DF43F5505D2DDDE99B2145D4D808F7DE5A27ED ! B7E9B71BE7643199D2F1ECDC6C54C93A669B822EEC7452E17302C06B604FEB42 ! 13C0345656D0CE2DC41F70D74565D3319C2B16D5184CF56201A39642D45B8ED5 ! D46B8FAC9E873EC294B61E986CF5546A5163492758270B62E2E7ADECC784F4DE ! 0CFAB393E485E747AED400CF70CE33DBEBA26F19EF8AC8AE9230E5CFCE9AC67C ! 9D0B935CA103CC51152ACD8DFC60B97FE6C6F271459494443114E8324033C12F ! 2158852A7298557814DF1CF48D849FA682AC77FC50D42A6F4B079CA5A4B4161C ! 8054BA4B4F7FF46968CF3DDB53D47CB38DE649674DEF4C701A8316D354E6D782 ! 4D500184D5FAD3395D36F178A086096779F01A481951C98870A03BA9FE981574 ! F2A2B7050DA9060BEAB05C79983249EE111B09D462930ED2AC789F74DC3D6685 ! E930F00AEFC1B0C473810F8BD708D4502E1E666F4C4EDFA0DF9FCC226E369BBE ! AC3F23AAEBC703447410FF4308979FAD9A1FE1313AA7B2D0AE56A35E8FAEE85F ! A213342B1E98A4F60AD5B13274A4FBD38B00EE3FAAF0D4A0C5883DB5F9D7A707 ! 6F9DB82B74578FBD7C3330FAD6E000CC7037AAB326F0BEB5EDFBB7C9CC70C293 ! 073178C1F9E3B3D67B6643B2A6B7F2675FFB82E40D5DEC782B972DF6532CAB48 ! 7405E306CDFA37FB41647ECBCB48AA86BEAB6E896951E507B31E0B142241793A ! F0D4A635FDDDAD032E575ABC3067A8F70EE180D3AC9ED4DAFFE9572C2E928184 ! 40B603C2A8020F6B6E43D947DEE073A9AC5DF24433B6670D197E8B1B03C89F0B ! 88DBBB87957B146C85A53161DDE7F7C78C452836A83A27B942C7EB5F1F07300A ! B012763D821E8EF79C35B3C7D2B9AB06447F9B13D3A5379EF44C7461EF7A104D ! 93864FC316AFB4327BDB9B29067AD156B82CB20762E7C1CC3050FCBB6F68356D ! 6B549F1AB7FDBBEF324CBE679203C6EF1C846930CF4CB6BBA96573D72197F72D ! 69D2AEE92F80B69791A8C83815F549513ED88E20D276446EC42E852146F04A16 ! BF3C72FB7ABA60CFA1A4B92DEBDA41B788C849223491B06662B7A6FBD847EB8D ! 2E468B11ADC958B00526758B9A523990D87D0F980FBA34136CC9092673C1A01B ! F6E6FE3A58A4004F6049DE0EF539F0A94BC924F48123B65B18B04D7A1810C501 ! E815E95ACCB74A1CF1F643B190DAC7AB10188E7453D446FD754B58658BC7FF9C ! 7F7C244E5D01FDA9780B9B335063BCA1063F5C89B118999AB277C59C91B2E74A ! 0AD9239CECD909064E857761FCAD1E6B5C841A992734B2FC5F0EC7E572FD4BFD ! C95E79DB9AAA1A3371A215AC0C55291ED037CFBEC4176612C84A5B92B4755035 ! 640BC951F2025C717C220F28E47AD7A77B3B93CC066E87C2D76B4B1825CB78D0 ! C136A9487EF6F2C0D71AC600545D69A15ECD94B447222A17814BF07492BB9849 ! AF415B2C20BCC9CD5AA2E1732416F0CBC810945999CCEDC83798AE4761D0C662 ! 8CD0E935FB5AB2C72D5AE22F9659872514D36210CF3CFCAAFCDBE1B289FEA6FE ! E2550C9730B5986D06DDD04E71C6025DB6CAA676A8C3D1A83B144803E18FD387 ! E114A18EF2A0787189BBF5DBB4C2F47F84AA174B665BE180F6CE50D9AD45ADC8 ! ED3D7DDD9D336BBC90CA936F1CD1F6BAB75D501B2482A3D5A97FDC784C4A78EF ! 59B657D4AFB421A6354941D870F794EE047BCB789D94AA465ACD0D37DF8EDF3C ! A2129895138266D17276DAED2882AF4E73DB65EBB40D8DF96C5E55A0D892B48A ! 60B6F6E509F6A86A3A895CA9574C4D53BB7AA0C695BBD3A39F0FF2A9E1AF55BE ! 1980D6D70AEEA0C241712FD028F48FEADA42AEA6967E614E69B73E5AE7BD739D ! 78090D4DDD52C238FE5875514CF66BBCD969F0049BD5C35C507C6C1175A82727 ! 19AD6C0C0A93692238C445D73D2597DB595B6E2E868E8A66646002FBA7812EEF ! 1953987B87CF18A1B9795ABE0395E521FBC7911B9E4FB2207DAB1D454DBAE1A2 ! CB9E3022837D26560C4EDBEA1801D5B27E1D41D33C4966FE8070EB37577ACED1 ! F6D21F7AF729887262781F64B6359F78D59EBEC209E236BD25C02266B5D1A8FA ! EA312733B0AEF25FEAC98FBDF295DB8233BF983B74158D95DD4287F1E2613793 ! 259409271EF6831BC0921196190CA5042113CB62443168D34B5DC1EC48CDA92B ! 8BC333BDA34DDCAD3220437E41BB684BECAD7A188F275430478D006AA476B9F5 ! ACA215E1CAADDFF97FE84A37E9A8920F3C35B90AF3A7A260C200DECA8931EB87 ! E804028C991C3AAD291B2B5EA2C607B7261206B2978768E649E5F05E951BC121 ! 39F45AD98DEB4A0903950BEE15E1F39B1DAB307D0906B139B85C89A138C30BC9 ! D02A8F912FB5A73F6685E13D2062162F6789F861E5018C041D81A66502947F39 ! BEED14D2812F07C339B9B46899CBC9C5A76C1133A252F0026886F72133E4D293 ! 49C2E9AFDE7446BB7A8A9C560177C9CA6769D59A6BE4BF88B7AA61C98AF3DC6F ! 1DDA9CA4D29ABD72473DC1EAE6753B51F3DDF447A9B7063AFB78186CF670F19D ! 896731872320FF3A8027A17016D3CC050591EFF22A531F04C95F916C83397A08 ! C38419612488D809245CB96B0E76B5A70FEDFCEF1C468FAA1B2BFEB93DCFD621 ! E6425CA324B4C51220358A85C883562E1418C8103C7DA57C8E9590D928A98881 ! 22CC9458E6F84997DBEBA7EF3D679D12A4AF8F87D8895B59F05191F30860D672 ! F0F0FBBE2F4A6407B996A5E502D3A9A7434326F4E3DBA6337B06D9CF52FC90C5 ! 08F80B5377ACC6A6F59366236C1BB1159CD8B9383AB41D1142F7873CE1F165EC ! 132E6178385B3B0FE3ABD7BF7F2A07FE78428E54A900AB65B251E65703B4D210 ! 08A9D44445C7E1C53577F797F9CD716CF16711E973B5D1D013F00476BC06E10E ! EF9BCB9B4B66F589037F5CFDFE35DB6FC281268F258C2096F330E885044B220F ! 58B01CA33EE4BD88927B7664C1A33C712B58459AA6773E7A970630F2C31287C2 ! FF3C08070B13F5E322B99CCBEB66A7A7823D0A4B1932A35AC492F432DA5CB49A ! 1AD508A098463A32372E771A83DC6C5AD1756B108FB0B7FC757DB7B85894718E ! A812EA84412B0216CBC20609B361F29E986E2183B47B111946433CFD7119C15A ! 2D26374F286C365F90C8C16E1A9B4F4A3D6B8E96577F14AC55A3A521533483BA ! DECA4C09FF50430938EA6034426C6DDEE847507F61D37A07A5A03499B1DE7434 ! 876F7C1F79B0F5F147EFDB27B9D4A81ADB6DFEDB310E26C66D35EBCB289CC737 ! DDB161A6DED02194FEA213AAE3030DA2109BACDA8F6547618DA935940AA83984 ! 69AD53028F628C59473D857F514FEFE0D56FF8C26F8A2BCE3F739BFFFB6D4036 ! F30E2802B58CB1254B7955E26661EC9D41759F590E10EE04470163A0AC208995 ! 4BC63E753EFA7E27486D5296244BBC357AF2D5F1FE476FC2FEA428C956C9EC97 ! 7386DEB211C49FE7AF57191EDD5F4CD536FCC02F61FB5395703EEF53003CAA08 ! 75154D2BCACECD3E904C50B8C651C59D2C0BC6BE1C366B8228D4D81D9B476924 ! 9C82D0AA057D91F8B2F0103E66AB447A7485F1F72ABB2DE2271900A9AFBA7133 ! 72211C4F3D71918D0E2E4148ADC07632B700CEA221C8FFBAE159B9D6ECA16A66 ! BB276C844C69BE41018FDB2201D7831D91791ACAEA364827FA3CDAFA2C53CEFC ! EA47D10297CDA9C0990ADEE984627CE96B04EF2AF157A098651D431D147E65D6 ! 8DAB5AB6717748F68128E20D8C5AC697949381B0955B15FD34C4878C23AC2E7D ! 0309575CA8109DEC52D6834146966ECA8CE04E7614FCF38190F6960D87038AC7 ! 7721849793C3B7D1FCE5C6D361FC0B1D14F84FBD6806ACDCCCE4E0EC332BFBC7 ! 265BD96656959B5CB17BD3B8885DA2FF13A3B72046BF6B99BC2CEEAEB85FEFC2 ! 5412C5CA88C48D0A646E259F8F897E205CDDB001B9CCB948B450E4B83456A75B ! 9753A4CE15191EF6213FA9408C8F0B986575F7D5440EBDB4F9093F70ADBB515E ! F78A292BD54A0A9184D49C2695D720503EE8B4BF07A31B15922F7D8A1C220076 ! C494DB683E3090F0A51BB614614B4847CADB2DFB6710D84D0C2437E39A2D1AEC ! 88DA93E0C0D89269E8C5AB9975F0A335BDE7033CC0D4F76C65CBA07B4F78B720 ! FF13A5F3B7BA996C742D347BE05E42333B8C9B84ABAE24D2BD983D53FFEE85F5 ! E7D1A77454F119DF49A69332C497C776B57ABC050E170DCE1D3ECAC9E09F0643 ! 92AB34FBFB28F9D26DBE95C5A0B9ACAE61B0AEB79A3B9624176564034908651E ! 3F6BE627529238717CE6F0B435E064512C7B9D78B29CE86BE4F5ABD809A43383 ! CF0B5DF21540D37D1BB8FCF32C7B2C4173D3C8B3DE45E8E4B7A405A529653D48 ! 62F5DE1829BD3832C606954E2BE01B3AF7157832244B2E7757A03D74B4E3A05A ! 2CC87A9B13F37B72ECB6B4717665580EC4032DA405C2E7D8FE0B5468AAD66379 ! 2FD5ACB16A3F36261B11FD7D4E8D4D2A820FB73045A9CE8595C5305AE24A7098 ! 78A75959F32879CE5846BC1C2192AED9A935454E552B432B48B5C3A9FFCA2D5D ! BE4A360BCF2B99ABC8477C697D802D0335A8692111E4724FC51B19C31704837D ! A8D1BC8808D08D9F2EBFD7D706DF325D2AA8ED94F6773BAE63A836D88E87F3CD ! 680DCF2BC7DF8C7E06389D6C986BDBBD06229041414D7267D9AC9E8EFF2710BF ! 65CDCC222EE6735413368584117A274004EA0B415BE5D92EC61A267A3455D65C ! 6CDCF80FC2E64397FF395E7002FB3B0813F98F3ADB1557E46F644E0C7E0FDB70 ! 533122C1838D195BDBBA28BD7868FBE02DB437CD22B72401C79FCA2259714348 ! DAF6B321BE3308190B4BE630821419673F101B539BD788B1755146554EFDE136 ! 52430998CB5835960772DA8470CDD894AE8810A2AB7D0EDA22C374E95EDC671C ! 1BB5BCB69D7C4EA065F784DB46208C66D92C2C6037D0573E63F1B66B754A4D3E ! A7C0CBEBC1A7086756CAC6736B9296BDED874E61D7357ACCB4421E5A617F59A8 ! 9BAB85064CBB175596A223122D7C858597009D1D3C02749C88AB2694AE37250D ! 91E5B9CB0AB0ECE7A0F9006E63E230668221C3E704C44F8D67C9D7F677A4B41B ! 032E931BA43D59AFC289A08AAE721F15BD0DAF38D062F39CCE2AEADBB6358A37 ! A21F3E26CBEBF6CBA354A4AF264C338B1F99A05C95B3B93F6F0F137DEE72691E ! 6D81140161E2FDE25BDFB5B9E729ED71575944279ECAE16ADC257C7CC812D1BE ! 1BE58ED6A842FF6BA11ACE3FA83F17B8E3363C859553F33847CA40E6301FE515 ! 489FB5650FF995E22054EC5DE4AC290A18393D9F791E70D15D81C1AA9950803E ! 15253C573E219B3FE27406A5E8A1FC87D3E1B14B7A4FA9A79EAD46D6280E91A5 ! 64190847F355AF837293C6BC979C65F8F6B4E846545D10D3A1F8B1536B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 --- 202,263 ---- 109E6C6CEC7B866F2FC7ADF646BF492E520319F3B949AB5D84AE990B33344A40 3971F58DFDF8D8D67FA0B8F2A0D884F8C09A5A721319B911DBA0A35903877343 ! C37BC36C5EB32353272D1E6ED5FCA611BE319A7E1E842CB7576E7F5458CFC59B ! 079E0D4D871D2A7D81326B7416856475D76205EAEEC9F3D52327C5B62994CE55 ! 1B930DFFBC741F40F64C00013B59589381551142DA0571D7219B034FE96E2029 ! 3F5A62E3CD07308E303E616DDF322799FDAC2B6B306679295314E08E76644438 ! 6E4BA84059F7CA54E1993211BAD90DD3A51CA589139A75717A5FC3B497DBA3B8 ! F3629E43414B3522E80742E32BCA188C22779D748C7AA6B46B64B3F85604D799 ! 5C6C5A44FDB20FD4F5637E62AD65F244E8AD62A9B1091B558174854DB42B8BA3 ! 2BB48247AB1F8F9C7735AC08F7F3D4946C4C92815745A64A0B2C9E9836A4691B ! C5D3833C22EFE5FC9F3261789CAC68B83C8350C3CA3326FB17DE179CF7707358 ! 07E7B48A010E6A558CFDEB454B91A07BF032E852D09C9491DC4A4DD47AF86968 ! 2D402A79B6770156D4AE6461DB26261E41B72C03F0BE35E5B7094615BE5BD8CA ! 13D011FD4A241E1BF7F08B4E1ED6367974130E95428CE40E0FFB940521A834D7 ! 13BE1B34B80E1AADC8EB7357B84BDA70506FF89867FC4DD9F829EAEB43DCF7D4 ! F9D81ADE02EDB4FF128C7B6822533E2386D6110E0A8AD99D02F129D6D3B7BCCC ! 8E0B4F6BD1357ED5727EA27A4751AA271616C29E2092E2E9AC33C864750941B6 ! 9D9D0EBC991F38832D3A9884CAA06BDF5A3EFE212187F01ABD22D90861DA504F ! 8E03D4A75E6A84FED5AD1260FD1B5504A5EB660B40EBBC1711B625FAB2E43596 ! 74F2DC1C7E1622F5A9643782E90AD9E03CE154486E3F3202701274B67BD4A823 ! 4206A10BEC6659C6CCFE63B2FA0C581CA42DD7E73023BB4692E9BC4E82125E45 ! F4530E0BA7E2AEB69F758C93681029D1C4F2D385593C21E9780BB439BCCB924D ! 6AB1675FFE5B6BD734201EB119E6C66AE2B9781493E99A3545438FA9A395EFEC ! D83120B7700CEF5CE34C18F215D28E4936DF84FF7C8E6C1752588762F1626B67 ! 178C501070D7DB2EBAC316AC27F5F802CD796BDD927409E3899D361170D4FAD1 ! DE63682751881ACBEDBDEA073C0AF5C0509573E9A8AC0A0A71EA52FD5666D09A ! 36990458CF0F9E8D8ECAA96809EF41F6374BD7E8959D5656ADD23943DF12F496 ! D4703DAE21C31E787C9CF791E666D35A6F542AF6E5B8124B886474FCF1062873 ! 3F707ECD55F184AAA4A41D3EF08320C5825B912FCD1E07A21BB8661524D71C4B ! 8E924E047E93B02D13604E630464788A1FAE903EFC8B58B832B5E808EC305998 ! C792B109B2D200D507C88BB28DF966AF9ED6F6C82776BCBD9AB0636DE09A2F20 ! 90B3645AFFF2A1CFE1BE1778B637391469F82543C6AF4A970084E2D60ADFDD9E ! 04036DB57FF14118D7669394B808FAA3ABA10BBD19BCB532D73407CDE6E16C2A ! 6E4801698B00C90073C7A00988D9483D52D13816113602789DB0B2201FDBC5E9 ! B13A83919E062BCF886008149354F5024465F346EC345F8D549E791030ED3E38 ! 7B34FE9E76C665DE93A2D03210F940D88BC0772934F148EC86CFFBF58E3BC3E3 ! D4668E55E0B2AA88BB1563B7D18B7AAC911EE728544878CD6B19F37B643F36E5 ! 2929E164D285978F3666881C560ED0E1ECF74CBEC725D469C43B73EB8DB62DB7 ! 7E1DF2E43361C94B763F4DC7885C0BC1937B7E359585913F9F9331862583D9E0 ! 4FABDD346E68DEF044712D26F8E71D8F0E3F1AACC74D024CF2D206624FBA8B40 ! F8319FE8727248169A48A0045CFB89CCD988F88A2C9DB8C2AED12AAE8FD27F12 ! 7BC63BD88681D3C1C7977A474176C30376B6B8B9C6F3B73E349D202622CB821D ! 457597241FEFEA76CCB5E76A107E29C5E92221253ACF242BE65DBAA4C762637E ! 2F2EBA40E01CB70A22BD0190C2C114194159A032E57C39C424565BB11D463C66 ! 9D30AD565CACC1439F95AF8996F22F5812B5E59ED8BD562CA03D383CF6AE1B97 ! 26F8DFFB8DE8DC9F12FBF06D3D4DCAD71439DC1A6A1D5E1C99577BCA37CFB4B7 ! 399BB847AB19787779A7EB9DADC092A5CE6031E7453366C12AB1E542D4781CB0 ! 23FE39F7464954A4BBB423EA3E23D0435C3EF99F575A786BF43CD7588C0C7247 ! 962F148D7389B38D5A3020CDE884FDA3C47BFF161061001BA9A1B2AE6706E80C ! 3AD68000BBE4835FD86AC30286CB3CFBE4856F1E25D8C0F4082A6F076B459D70 ! 2570C078E8E0F6F08EE108C7AED1ABA955EECBD57EC76FCA0F34C106CFA4E60A ! 109951865AF71B44B92B9D8A46DFE9C4F516B4EA0F2EC69B5FAB85D834DF374D ! 504126B9829FE2CFD3A09DF6BC078BCFD29119FF6A2403A9CB1843D9FA8126F9 ! B3AD679D37B43AE2C56E8A5895A8C71684C870015A9C609728C5A43C9D8E8B41 ! FE37B0DF82FC4425E9867FEC1AB3177E0BCDDA39FB0B1352AFF87F9631E13D54 ! 113766388AB6D20A516D5BEBF9A8F1707F5152EBF5069F37BDC82A4EF856E6CC ! 9AE69A3DD107B85C896651AC9AA6DF71D91176197C473F2187DF09534DD3C7AF ! A7A5BB5D2F89E2E52860537DF81FE8F026CD8D878D365F98DFB7F18B51B59503 ! A2C1C0ED445F62A77D9A81428E938B83B0DB94E381E088FF7CF1B8A10E1FA040 ! 7F3BE64BF61F6366F1430F 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 *************** *** 891,898 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-62 -250 1011 750}readonly def - /UniqueID 5000761 def currentdict end currentfile eexec --- 290,297 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 97 /a put ! dup 108 /l put readonly def /FontBBox{-62 -250 1011 750}readonly def currentdict end currentfile eexec *************** *** 965,972 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-61 -250 999 759}readonly def - /UniqueID 5000803 def currentdict end currentfile eexec --- 364,371 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 40 /parenleft put ! dup 41 /parenright put readonly def /FontBBox{-61 -250 999 759}readonly def currentdict end currentfile eexec *************** *** 1038,1045 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-301 -250 1164 946}readonly def - /UniqueID 5000768 def currentdict end currentfile eexec --- 437,453 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 97 /a put ! dup 100 /d put ! dup 101 /e put ! dup 104 /h put ! dup 105 /i put ! dup 110 /n put ! dup 111 /o put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 119 /w put readonly def /FontBBox{-301 -250 1164 946}readonly def currentdict end currentfile eexec *************** *** 1182,1189 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-4 -235 731 800}readonly def - /UniqueID 5000832 def currentdict end currentfile eexec --- 590,681 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 34 /quotedbl put ! dup 35 /numbersign put ! dup 36 /dollar put ! dup 37 /percent put ! dup 38 /ampersand put ! dup 39 /quoteright put ! dup 40 /parenleft put ! dup 41 /parenright put ! dup 42 /asterisk put ! dup 43 /plus put ! dup 44 /comma put ! dup 45 /hyphen put ! dup 46 /period put ! dup 47 /slash put ! dup 48 /zero put ! dup 49 /one put ! dup 50 /two put ! dup 51 /three put ! dup 52 /four put ! dup 53 /five put ! dup 54 /six put ! dup 55 /seven put ! dup 56 /eight put ! dup 57 /nine put ! dup 58 /colon put ! dup 59 /semicolon put ! dup 60 /less put ! dup 61 /equal put ! dup 62 /greater put ! dup 64 /at put ! dup 65 /A put ! dup 66 /B put ! dup 67 /C put ! dup 68 /D put ! dup 69 /E put ! dup 70 /F put ! dup 71 /G put ! dup 72 /H put ! dup 73 /I put ! dup 74 /J put ! dup 75 /K put ! dup 76 /L put ! dup 77 /M put ! dup 78 /N put ! dup 79 /O put ! dup 80 /P put ! dup 81 /Q put ! dup 82 /R put ! dup 83 /S put ! dup 84 /T put ! dup 85 /U put ! dup 86 /V put ! dup 87 /W put ! dup 89 /Y put ! dup 90 /Z put ! dup 92 /backslash put ! dup 95 /underscore put ! dup 96 /quoteleft put ! dup 97 /a put ! dup 98 /b put ! dup 99 /c put ! dup 100 /d put ! dup 101 /e put ! dup 102 /f put ! dup 103 /g put ! dup 104 /h put ! dup 105 /i put ! dup 106 /j put ! dup 107 /k put ! dup 108 /l put ! dup 109 /m put ! dup 110 /n put ! dup 111 /o put ! dup 112 /p put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 117 /u put ! dup 118 /v put ! dup 119 /w put ! dup 120 /x put ! dup 121 /y put ! dup 122 /z put ! dup 123 /braceleft put ! dup 125 /braceright put ! dup 126 /asciitilde put readonly def /FontBBox{-4 -235 731 800}readonly def currentdict end currentfile eexec *************** *** 1664,1671 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-1 -234 524 695}readonly def - /UniqueID 5000833 def currentdict end currentfile eexec --- 1156,1173 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 99 /c put ! dup 100 /d put ! dup 101 /e put ! dup 102 /f put ! dup 103 /g put ! dup 105 /i put ! dup 110 /n put ! dup 112 /p put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 117 /u put readonly def /FontBBox{-1 -234 524 695}readonly def currentdict end currentfile eexec *************** *** 1786,1793 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-53 -251 1139 750}readonly def - /UniqueID 5000769 def currentdict end currentfile eexec --- 1288,1353 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 11 /ff put ! dup 12 /fi put ! dup 39 /quoteright put ! dup 44 /comma put ! dup 45 /hyphen put ! dup 46 /period put ! dup 48 /zero put ! dup 49 /one put ! dup 50 /two put ! dup 51 /three put ! dup 52 /four put ! dup 53 /five put ! dup 54 /six put ! dup 55 /seven put ! dup 56 /eight put ! dup 57 /nine put ! dup 65 /A put ! dup 66 /B put ! dup 67 /C put ! dup 68 /D put ! dup 69 /E put ! dup 70 /F put ! dup 71 /G put ! dup 72 /H put ! dup 73 /I put ! dup 75 /K put ! dup 76 /L put ! dup 77 /M put ! dup 78 /N put ! dup 79 /O put ! dup 80 /P put ! dup 82 /R put ! dup 83 /S put ! dup 84 /T put ! dup 85 /U put ! dup 87 /W put ! dup 89 /Y put ! dup 97 /a put ! dup 98 /b put ! dup 99 /c put ! dup 100 /d put ! dup 101 /e put ! dup 102 /f put ! dup 103 /g put ! dup 104 /h put ! dup 105 /i put ! dup 107 /k put ! dup 108 /l put ! dup 109 /m put ! dup 110 /n put ! dup 111 /o put ! dup 112 /p put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 117 /u put ! dup 118 /v put ! dup 119 /w put ! dup 120 /x put ! dup 121 /y put readonly def /FontBBox{-53 -251 1139 750}readonly def currentdict end currentfile eexec *************** *** 1818,2121 **** 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 ! 30F2AD56EA22D77BA06F2F0A466830FEF19E343311E3EBB8A5CC4A176B791D9E ! F82BD32F64C39C814379E8BCAC05C1FC19B2D49B4016C4E4625FBDF0F842CC15 ! 7A3B3FACF36C12CF87558FD4207335BA87796761C06535B3659123487E2B573E ! 8130BBB39A337725D90C83C4F96EA64AC8CA7588BA6958C08919B5B14EE68AC2 ! 4192D6EEB13E174589C35CBE00A961DBBDCF4597DF2F4821DB73BC21517F293B ! 8290D6FCE00579F118219F9E831B9BBDDF930053685B80BA9D9CC81E44A9F73E ! 8B4F751EDF6480A9BB5C0ED669DA82BCBE1DDBA44F26EA4482FDBC0A4ACCD749 ! 88E48FB46C1186FA557711B0264667A2D278B5C98E0F95951A95F541AD3979D2 ! D4A6839DE475D9EB07E9C6B572B6C8655D8E0F15B2F130C72573F8522DF30857 ! DD8FE25841B87C42BC7ACCBF96BC56C4A93F0F0E2AB990B9A16DC59544A359C0 ! 1053EB807CEDD81FAE05ECEB21A6CD0D68EC99FC69EA97B121FA189CB72AB522 ! 2BC463D5274A5260E208A66E6D5AE14ECCA328E3F888A6883368107249E8BFE9 ! 511D504A50488CAE2988BD34C694CA490EA0A0B71B565995BA19AFDC9C332C9C ! 4C0437B5AEFE5043AFA8796B64BB80572E9A658F47A46ADBA0A53C3F5263E80F ! C0FD55067247A8BBD7A24D7FE0681F82678186957467B3AE7DD69A1B7071BA30 ! A019C8A623D870511231C9BD91DF0444C126A3CFB3772E0973BF41FEF1DD96D4 ! 837AC41F35F1435F7DF971FF2571AFE0D8FFDE1DF2F1B25C7B366F94665DAB2C ! 719BDF3EECB6CEFE02F8CE16B2AB553A755FA500E15216313B0BF06385C25528 ! 7CFB7D9EC4A83016FB8075941261F7A0FBA01E6AAA5DEF1EDCA0037756E4FF0D ! 909A6321D1F0EA32A70AEA089647DF89121A373148F9982A926AFA4880AFD2B5 ! C5E946BCF0CBC661DF6DE06A60E0680CBC9A6A856F119E57C9DE7B708B57C111 ! 4348040C914BCC3C88A986FBE2C7C77B7F2C1B039CD2518CC7218F0E68B52565 ! 47ED4BB997539E35A01E310306095E89A34E36629F57C6021AAD085BF5FD2BD2 ! 7CB4B9433139FCA7FEF5CE54BCE312B1ABCCADD14B8849B8FBC5EF6408A2743B ! CCD12BDCAA46859992DF6570EAE001A7C547EB8B56E7ECD9129DC0FDA0FE8D1C ! F25DF1565627FE33B9E8267F22B716A7441177964983F013093444BC07250E53 ! 6FDF5AE45FA0F43A48A5EB0A5AB25EAEC58D49B9049A26C94A024FBA51BD54BB ! E5107C9BF98543D2E659FCAC3F3C77BE77FE7BF9A9E4920A890F05B68B136257 ! 31C2A63231DA1A2F37EAFB8E429EABBCDF443D9740054D17E6C4C2A1DEB40E22 ! 612BC6773C291F60394CE50709FBAAA2BB433008D096B820157E5A90BE248C32 ! DA05C2D63F8F7B8F855B2FC5A6780D10238E43246ACEF6494EB2D782351C322B ! 422547CCF149F6438711B03001EEC2E2AFF843731E7C8B9A11248529485F861B ! 5B438F4CAEC933B798141DDF608BF7BACA7D47D81D9A686F31AE208851867ED1 ! E46981D3F4DBDEF5ACB0AA591DE4731F85F3B35BDEC868F54264E28B4C703CE4 ! 68F96D02CD9C66BA640F60CA9EDB4B3E853F9EB5ED8A9CFCFC95D904E9FF1E03 ! 20168B675206C15D6D99633BC15420271E1D0A16CA0DF900A2439C5275656893 ! 713B773D96EFD7B2A723E09A1D4CFD3151B93FD04919B0A9A5E56E1A7DB05819 ! C972B98D565961710D9F0CF85A2753EEF25100D22ABACC983A9A6C11D0793C77 ! 7C51208DE9DC478BD0F191FAE21DEEF2B47085604D2C239460EF1940F5B6B240 ! AD022B4BAB72D407671AC5D4A163A2B00CCB2F297F52A7DF633A79996BBB15D1 ! F480CA95A00861A0F5CCB947824B77D8EC1BA9261B99EB2C3A8D6EB39CDE6F5D ! 98AC095E31508B7260ACCC3F771C9424B0FEEB69B020B1C72B406C682E4E9B5A ! AE70BE2D455B0DDB83BA412AEB478CFF3749E9E4CA79202B282969FA7435FFA9 ! CC67C4C42123DB9B65991F5D858AB4A67B53ED2D83CD4EB3E5BBFC14D402DF36 ! 8F85B77A90E5543608D6B0B5D496BC9EF2D5011A6EF57C962604438BB6B7C5A7 ! AAA59BAAC719D12A7CEF3ECC264DCECB29E45DC291FCFB83E6BEC0AF11801421 ! 9CD3744C24067F824C77FFBDE35435E16ADD36308270066FF494886A13DC05B0 ! F325E8A2C55B9A36963732519286FE3A00E5D59C05551CC7E38C97594C94E83C ! 0A3F5D807E01BFB4BF37135BABF865225AFEB23E47D75834BDC22642678AD6FF ! 3BC38BB3F33F0AE2EA9BE668B7D8A705EACF48059D2108255922C34661E867DA ! 3747A99C7C765C0F88D0D6C7AF84750D04FA29AD801B34DCB798F181C7C34980 ! 478A8103A64394BEEFE49D2EA73E037EB2B09880E24E603FF6188DF37C43A306 ! 9006B33C0711C336BDD587326A3BB5C5D29D09FD9724D4073D595EF5AABFC06E ! DCB16F8E9FE165E2A603231EF503C8BC3F2535722FF1FDBB1BFA160225FB865D ! AA73E5B51DE27D61F26BF735C9BE6AE8EAED4356B9556FF31006719CCF5AA58A ! 91A2CF7E71369E335DBBA261C186A92C3C219A4B899DB1078B06B96EA4D0C444 ! 48B2B64E8F939007E6ABA7821B925E9A3A5A04BE33B36C546205A4B86BAFD4DA ! 86B635E6BBE0E09782D6BA5173906F8759FEB28DD5E00043BB62EAE4DB96DFFC ! 3FA20BC81686D43AC82FC4A1E418B24E8308D40D87489108D2641E6948269B10 ! BCF9619D4069A027B7E09EC4D05F202E64C3C1327588168A4011DE869D1E6780 ! DA5C10FB83B424BC6CDE0652FE542BD081ABC30C8D294A04D410D997FFBA02A0 ! E150BC3CC8413E381B256E926D2956607D05EB1282791736233DFDE7BFEB98AF ! 18FA9EC712326F30A4BD0BCF3BE3D73C751FFACBE58431B44A53E5922EDE7A1B ! 03F8E2C3F71A70DA5579A6C79FE22DD3CBD9FDD0F26E75C7912C3912B1B19DF7 ! 93FEA62A929736E723E7C525CB01FEF37A5008B665B9932FA2D26E1047872090 ! 535A8962B423C0D3A7C6AF41503572C06DFC0637C600B12D8B23F93C9777DEBF ! 6FCBFFE8430A709E93626D5A7394102963669F3AD718A505E9B9A556FEA6962C ! CE41D69F5E017AFE2A41EA8974D6778AFFAD895CAD7C292FDBCDDE4504E152FA ! D0E315AA4E31EEBF9B6572138061DB77175F1DC0AFDA5837372A5EA42426D697 ! 84C9F986A34D05A68341C308E7875D4D1806ACB149C00AB86463AEF0934E9441 ! 606A0650DBCC8D794E33C368DA42F1BD337193DB17D279F06C1A375483847744 ! E6C2782018F687F634777134A8E68859AE3A61888BC146BE26E9EAC8083E9D7F ! EC591DF2847C1CE6B466DB5A05ABF048235E0B1D7906C2960FAFCBF704358BD4 ! F4856525DAB9C58FA5348F6E85580ED76F440715E25D872F6C0363612DEAF591 ! 6A8BC8AC44378B6549659B73B0BAD49A1BF4FA04DAF375F7311B9788946ED020 ! 8B246212B3668DABC759166459885F04C3A59D68B80EDA109BDB2D1523B18D94 ! B5E2044ADD046A1CDE38673997823E79CA7414F126372549CE9F9CD47B5DBDCA ! DD897524B18033AF0CB04E21BAF952E7D9BA5DE9F3DE041D444C08F845AABDB4 ! 2D4A42DA4F29874DD9B2ECE6A7812AD01ACCC5C245DEEAF47B9D33F3E8B05C68 ! A51E21B1F2A5746601CC69200F7C1CBDEF08036B0D392AC93A9D339A8B311728 ! B2E37C7A7F098252E892ED698AA3E679AAC7FB4F8BD6A052B30B1AC12BB9AC96 ! B6AA796C79C28155E70ABB018ECE7170D018B1AEBFB3E3E1F915C5176153E882 ! 784AF399AF15439A3E52F7751A33B0C840C32B711A736E4614807E7E386857E1 ! 87D227E2A3BBED127DB2CF6A84A3496BE2C2D2A40357FBF5B72028D708726260 ! ECD5418264C0009ECC80472B0E28218C13EE65B533774D601A86108242A14F8A ! 2B3B011F032EC9618DBAE721497035A60DE12887C57FBEA197B36AD94E03C948 ! CC229AB85C200D785496F4B38C36EA8560F83783C6633F15D4668FC4362D7FBA ! A61A4E14C5B60DABF087C389AAFA41053B98736DF675D1CE2D1369B56EA8EE8F ! 12044122E522FE9A489D6251E26E38B28D445E5827A20CF3C5AEC07A4BF40302 ! 3A1D9106EA76088D30EB921EB90D9B3FBBA18ED6FF6923B903A32BDAC5128387 ! 258220918EE014C4A2379C060205BC7D45722B6A21D820E6CFE458C5303F0796 ! 36EC7309F711990C1BC0EA0C0FC511B8561BFA74CD0F5AC9BA153EDAD2531581 ! F3325C59FD9C73CAB132882EE147D830292220837AEC13C864B44CB79BC943B9 ! A58BCE34CAB70922B38959001F9A1851427A174576FE9BA944D2BD56ADE4B0FA ! 80E311C321DF356A88A9A401F3F6F1957F73A10726F8473AFA9C28C81A7CF382 ! 9FC8336812DE5ED38D2366BC58301669F5CFA7AE99F7912E06A4343383B5F4E9 ! 706F519C6D65FCBB66F5A1BD0C36D523A42F9E28B7C3B4BFBA9918A66C12CABC ! 786EC9BC73F82F141FBD837E8F9D9E1C4E083E6E00E57786E13128747183F5DA ! A049C73396DB206D2CB2DFD593C37FCFC563F3479CAFDF1F57B012DB596793A8 ! 73BC08607620077991F13B7BD66DD573A86F605CBE308EDB0E23A9175CF03359 ! 0E3946E1FADEACC1141D71A0C9F9E0C093EABE2F55C3422C259B2646D6A20300 ! 03A9380B54C533346C14AA7564414983409DD9E76E1D6BA04A18CDE5E4DF79BD ! 03BF5EB4ACF4B60081F8ECBD049A402E4935B7390F0C33EAD610CC84F155B1AB ! 69D9DF881AAAF17997029B34E0E9453B952C43F6B6744D9ED373F79CFC2D5250 ! C3CE02C5E490600966AA9CD8D6787D6F0493D9A16DE94C34DEEEE2E634D5AAF2 ! 3E8080B9F347D0D40D112906A3DF0B4223A4348F58736462CEEB76EE1D678C28 ! ADAF46AE0ED2D4F3D5599398E6E3DF792475FCFA4A751E398D4DB71CAFB39C59 ! 0A38C2952483D00454EFBADB2725CC71DB513FC1C067840C6CCBE1A5416E6836 ! 09557C0435084E9F5E0A316185251A7948E67706140496F730B3CEB37A0B96A4 ! 39B9D62E2A1BC32516D26DC3C45D00E7553B8F8F3ACB2F03B60381B60F2DAA2A ! 3D512897CB5A4FD0A59C45E32AD6503A99D5A75CFA90D4E786ED9102170530A7 ! 781F75429AE774418F78E0D6629AE9E6148D99F71115AEDAFC6C9FCC590B956C ! 562F4A1337344A5E0D7ACA076BAA008E389A9D281A3C9738F49394F3E23A6BA8 ! BC62D7B0566D2C24A367E7D3C1AEBEF5014D8050BF1950865071E2E1403CB972 ! 3BE007D6F7CA30F04E57834AA19E1E967C6E770881CE27EA48B171E651E75DA7 ! 628B68BCA031EA13AA31E08ADFC33CAC7D1A270599B5F5CC00702D510F4DADF9 ! F89D57F1366BC7D85313FA73C89228C75E50AC2397986C33646F61F2548302D8 ! 6337F84E957D01013431576CD9C6C5D2F082CD971CFF2EFD7872F35FAB90BD14 ! EE4CC0B1A749EEBF09A34F860CA3C86B6B70BE35F2618EBC832A68016C9CD282 ! CE74117531E8FAD950C8C7E1504D83E90A5A95E50994959620A6AA5A489F3854 ! 117323F2DDEB30B54C0390A13BC026575296E6FE94FB4508C2776FCF7B77DB22 ! BB753A440A3670463EE87DD0427A4B3D2E2FAC95B99DB90DA35A6C2B585E6F40 ! 41E2094A07B40B29F16A9662C7FD3575A8E9BB5DD5D2C23BCC45FD8B75F5BC28 ! 9BE8457BA91D06174D9F7C116816851F86A50500DBAA7383019C9C5A52DD7714 ! 9AAD3B92385F884BC057977EAE8DE2329888B245330B9FDE301CA4F09C06465F ! 677A7DE41712E376694BC097360D2F635CED53145AF9569605B959092FD976F1 ! 6B0147DD63F13EC750B93DD35E5C6A9DB94D4375EBA0C642B73879566D7A6537 ! AFD9A31635724B8FB58AB20762432F428EA1E4DEC18461DE313663CDC969426C ! 35EDCA2658924918E721E9AFE04EEA210AA7D0FB3A2DCB38F224BEE6F0639373 ! D4D69396E90C076E0B812171CE37B1BE7BE7818E1A910AF8609AF49EB2650673 ! 6C25FB6E3E86868E833FAFDACD2A97765E395D6F1E252CA311A16A1509B3E84A ! ABF4AA15DA4158D971E0D4DF3FAB415B03092A98F7C07B5FBC45499644BEFADD ! 2EAA13C18685F4E4EF3D3D43C92AB9B42D2870C339ABC6CBA3C27ABA38C5D135 ! DEF3B16CA1E75A3B9573D7067DD390CAB3F9DA7C2E67833325DC57D39B1DCD44 ! 8DFF73C0E89281077F529884A9A256B78DF1F8E0871A5EC1FFE2A5DE7BFCB468 ! 9D6C5E48620EA68CA19C5D18901C3032ABC42B8B3A301F8DD314512CF904F479 ! EDFF66D5904D0068E43933C6C46FDD05B2B984496E8E53BC6A96AD60C6CC21DC ! BE657CB2AE8839DEE243E7946A368665FC6EB84262B41815C1908B78C0589C8D ! D34759D4EA392F2B94AC20259BE1298500550B6C74547FDA814DC31722DEF159 ! 650C13BDCA71E908182BAD4FF83443668EDAD752CE0C4E244300F1A897D9DF45 ! 8DB4FB909C1036B8FA7AA98626732F69F024E0D96E7F40B19AA55E339C15DA8E ! D7053F237207D0639C2877254C59814E884E08E667EA3FA9EACE080454761E73 ! F70ACBE3700699F6802088D73E73C485EAE9E64B58BC4D6A8E881DBA71E00191 ! F3AA92053588E73C9084746CE792C0AF8CE34B24825AC8976AC3BD12460520BD ! EDCF4F2A8DB299E94992967FCF870128AA9A2E7747A42299CBED9D3E8817A6DF ! 4CB839643999FB2B8C3CDA64C1B25CB64CAD99361B8EDDFC68FC83EDC5CA82EE ! 0BDF48E4D33BC139CC43DCD04B2B2642ACACCB99E7A44724D6C804BBCC0CB2B5 ! 381AE4D122E243BC29D3A8F1681D5EB106A4DA37F650BB761CA7FC7BF5B47B62 ! F2C8E2347F0ADEE421B64B5ADB4BE6D80F1C582BCD18B92A79C2ED805EF83D9D ! C9ED83166117B9552A061433BA10F87C39AE2ACC945C1BC8BF24762F9F2C7D83 ! 7A367489D75E0F6AC4F59F8C867E36F488FDE8DE50660156F26FD013BA3C90A5 ! 76EC94F0FE765090E78C13CE984BCB2C5245F44E9149400DC6AAAAB3E320680D ! 1C934A07436D45E591722FF154BD143ED9F074CC8D244530D1BCDBF77A708DF5 ! A42907A3EBBF807D03AEC70B39F47B55F91870C5978E21658520E8BD3A2CF6D9 ! 030A32493F390BE775B4B6B6122F774286BC20D7C6A5C9EAA6B197B7F7C0E9F8 ! A4A4BFDFE26BADE0C342DCBC9FCDADB64B565A50FBC8583D3A6E55993CB3DAF7 ! 3AAB1E30B48DC16472BFE4D7960659526B3CBDB3EB4DE3EAA8D84438B38CBC70 ! 2898F3B043E97C5BA639E38C5DE3C94946AF6CA31BE291A4333A6C1B7AE6924E ! 123FEC09B9624040126C54157B4A255CBD2314518E3A40709449851B79B82CCB ! A2E6811922CF7EC6F6A9C1D2EC2F23E8F1E2F85B6F886139459554FF0609E2DD ! 419BAAAAB1EDB9BBBDB1A6387F40260C6D3A72EC49D9706585996317BCD845F3 ! 09F0CD17B82EBD7EFE1150C45437689A276C5F31B537A70FE42C1F35B4879280 ! A06841FDFFD2056300331E5BDC2DCF285883247A5ED6376FEBF879CC3A8228BE ! 2AB9ED6EB579CB54FDE0116A68889D37B0DE18F3EFC83B0ECE49CC63BFE00BBF ! 7E1088318F4D429CCC6212B6D6C43EB151D35FB8D4898DDF7C07465D45237817 ! FB7185D719298F94D9E547ACD938095CB2BDB9247EBD57DD2E86D04744E760AE ! 25BFC68141C64C7D23C5A9BF99791B71B9A2FDF3C0884F4AFE3CED51DDF04FB3 ! EC9D8DCB4944A7791E40BF0FEBE2E1D80BA85569F4239EC337C013592FFEA905 ! 10E429746B2106108FDBF48C407C82D66D5D87886520F1538A9CFCCD7083F6A6 ! D1F86588814E0707291AD77BBFC281C7B65A0CF008864BEDA5F11718C43ED544 ! C767142BE54C640E2040BEC5D7367E8FF22FA9D839BC807001BF73528ECB7FA3 ! 3CB2207F127206FED87645803D9BAC5E8ECA8E8BC452586F8EC22168DEE55BF8 ! E7CB5AEC4085B3E25C46138E3E8A98552752ABD6B4F8544E80067B5970565681 ! A0F39BBEF5E3DFD3B79C052C6436586A9683FDA79DEC1491ED109517E3881FCD ! FED3B5010F685C24DBE34E0CB63372E16907D843A794F445D5579517A64CB508 ! B01B2C2DE005E05B4D01E46357F5A405B441DD492DBF7A959933932518F26DDC ! 62AC159B40C6B8E840146676138308A8D67683278C19FAFC7ABD1B9EF85DD21B ! 40AE84A583BBF306AE3AC4BDE1985CF1E8EB58F037F2BED81C8CAEAE51FBD20F ! 9251DDF379A40883A1C82CB8FAE99A3E18C471CF9A7C4BF127ED1B417842057F ! 7647123712ADF67936F19A01FC648D69E2817422FE5890D13ACA1B7A22CE84AC ! FAD664800CF12AABFD3A891075C60B8602091298B42A5DE5C8BAFBCAD0B04762 ! 2F7D22A591AD4FDCE0B3B70C10AEA586511955989F55FC26961E6D1E2CA8CBD0 ! 278CECD6F7719B835F12E8AE27C7EA54BD83F367F5C20614FEAAB3BCF416B273 ! 4EA6F437442CCE904A40144981A55CA8EF59453CA378EB5161CFC1994A742BB7 ! 5E1CA866BA9EB123C3D4BBB76713A9A6B93611A233CAAA321E426D98E481C29F ! 589E51833C6278451EBF621B7F981B96164BCBE69C47B2D5D7EC4141E62F61FA ! EF6669278B430A9AEEA910F8FEFD454178D63C9BEC694A79CFC94E413947986E ! E03A7A290A4FA3515539F8C14A5DEABE164D28BF5500AE9A6DD84AC56F87B024 ! CF83FC1299F514A6A879E5B7FB45CD52F6390F888B5CBA28BA3A14CED46C1062 ! 8BC5E05BD9A1117720211165EDA80F48267E8D1E5775E09772041B5F052DE32C ! 8FFBEB70CD8DBF01E9CBA4DAFD2AF4E44EF05E8DF2EDFC1B920FB83BCB147526 ! 1CEBF3B3D75AF9BDCDFF081CED6541D9DC32246E24945D724DC1F6F8C1113FCE ! 29999903098B4F84DEC6C4F882DCC5BE44F6A9A077A84CCD2A6A2E0D290A571A ! 16A61CEBF9D64CCA429D7D6604B3EE3FBE01A3C1BE841F4AFAF63DBC7E26A67B ! 8C8C6549D6FEB8E45CF8904341B7C279B9B8E4E683B7076BF925998A123A1440 ! 2A8071214BC24699040624EEC902F55BA0BE2B2C99962A765AFC51D29575351E ! 8BD44A480E95112DA49F8BD405967FC8C12352F766498A847560582CEF4DE75D ! BA4F8C1F4B42D1BC32D6CDAC8B596DC7C5A8BDAF7B74412EF2DAC7721A9F6352 ! 83AA212C6522B0F4F25D51FE4B2FB032ECA88CAC112C115FC19C5765C1115CB0 ! 9262BA4C55F760AAF4A11F12EAA146470A4DB6C79CE56E80098738A6D9F892E6 ! 0A91B30F1801A86D537B7B5D061029E62F08E93EEBC0B56BC1BBAEDBD78F0614 ! FD4825A43276D223BD493CF558FDC6207B36A39648E68E6B17251767892A542C ! B39DEC514D12CB8CF895DDABB829256AA29C5AF02B96348959944D6C97BE5BAA ! 5F3620B514A6BD5A310476D9D3BF80F361CD531A7972FE0CAFF59FEA45D517DC ! 0E46FDE22860CE37F8A9C13EBA2C093A40DD4F86EE760AA43A500194EA5AAA9D ! D0549F2D3071CEBAD7EB9D2112CC910586DC022342D0B8858AAFEAAD82C6DC36 ! F2D6F78A8F1B0C360239C586ED511BB5301C074B27F94651521976CCE9E1CA83 ! 3903752BC8195047DFA846259325A9629E5630B3200D16A259789E184BC91FC0 ! F2ACBB673A7F0420EB58A04DD4EDD1E8070E442A59C383D9E7689820319242E1 ! 1B92456B6AC03C89B8EFF42E7E7870D48F1A733F95CE3E604F65630EE016AE88 ! 3D39859EE3B869B53D8DBE0A9093EF247D53A7B7EC5D35334681F357056EDCC4 ! 62BE002A49367F2CA351942363493891220B00713C38D31CD9A974D2F08F3F22 ! 410D4BD87B79E20D6AC667832EA25E410DC594EA91B0BFF912BF6268DC7F4625 ! 2337E04D29D90F1A8EB0AD7FD00B9C3D242A73072DAF4844A53EE698C367AC52 ! B8274F9B95A48FC52988F9D5F3243507C1BF3863385FEDA1BC97CEDA7B9B6521 ! D9BCF64CA2B88CC697601F1B5898DF5D07BF064012207B5EF5C349637FF0618F ! B97FE94990E42CA0D75CE9670E8C467B49ED55A329B95A14D79012E46746EE42 ! AE646F3B99CD57E7996737D502D1064BEBF1F1AA1DD726162E32EF1B48AF03C1 ! 17D6C86B4D1457ADA3759EDDBA0E78EEF0324976CF8D31D0DC68C4DC69DF5888 ! BA6C6E7B37218596825F013ADA779158999F8C8FEF9B828C3074E412CDBC4F55 ! 8B3B18ECBCBAA9DCC0A2FF8ABC86D2D84EC138986A37D4767FC1DA395A775220 ! 8D27042583CD3A6885A07E2D8CD14603A53B1A21B27C331AE63957A559A66D69 ! CA94CD5BCAB722ED44DA9412FAF5F6F112CD6F5D8B50FE80025787D9E324822E ! 541D485498271A1F082F0D35F3D9492839298DE8B922CCDCD2D3ED1574A0DA23 ! 0FCA83FB62BA4617639929A43234876B7E50D658AE61B0FD15F6F4B789252BA6 ! 47CA59784F1C6E225AE4CBAB87C871CD72BF1CB830A39956FEC9FFA4908028A3 ! 2069B43A35672917070C98F4AD43A62DE79301A035205237C1E0E9F8CBB9BC7A ! F57013EBF816EF9DDCC0C9DA49508195925FBEC09A4A7964672E7524BB503DDF ! FC734B8BA116B1BE25BAF5290A8819DD2AB2FA94BFA0D9463B2FCEFE2F9CC2C3 ! 362B2A738070B39ECD6AB0FD299E6B64BFE25054904BBCE3015D70532836A6B0 ! ECDE5F04DF46AE1399A2F4B506EA029C0F0BCBF366C1928DE388A8DEC79C4E21 ! 31845F4A75F706C0BD4BB929A2600BAFA08BCD6734A73C59DA145A66797A2404 ! 7626CCD5E8B287B1F6D5629E3B3BFF320F91403BCA38FC73BBA882D94B30284F ! 694A2DF5BC3C7762842DA0D072C4EAA4EA2EAF4F29B4EB59E473789552FD9A29 ! 637029E849322884CDB3F50EE84F33BDA5CF8D940445A6E8605AAD0A46C5406A ! 04C4FDD7133997266921F3EE980161841337090D127DF03F34AF77B9BF60010A ! 129C9760B71E55F8A1C09C55A01A154969EA3A7641C8F73EC48003DA57758E6C ! F81FA2808A49BC10AC66818EC2321AA8CB39A49E44F891BA9A06153FD4649095 ! ECA8ACD3E692977B94105AFE083FC090E610E3DC57AEB7C5944FDCA7756BFB7D ! 34877C72D38ED5015000220D81686D3287AB89BBA64B007DC25CB4A6D6A75862 ! 28D3FEA9E6B95D54B2ED1AB3568111C84CBBEFD45CC0DE8E86A2CAC84AC066F9 ! B619BEB0BC881BF51D2E3E63B9AC95010FEE166D815B3D4A9832A7891E56C2F7 ! 34F459081D07B2FF7DD537A724B9B29D37725D94CDF7FB8C0CF83409F29D7DC1 ! 7345E7B5A66C2D41FB242E2F37E7FB1433298EBF6283914C908AC2BA6F124608 ! 7D67B247A38EAEE3FA5C80AB78E9E234F0FDFF082F3CF3CEFD4A638022F3675A ! BDEBF1FB7E1182CBDDB02BE26F81935268E9F7FB5B445ECC31DDAC5D7615D3F0 ! F7A67FDA2DC741C2B0BEA47086C9F3384FB5B6B5DB4407DF6C0B639025EB7DE7 ! 9EB85A13AF12B8D1F85932FFC87C70052CA0E2D0A916333232F0C570A048E318 ! C2E59CD67E649E451EDB62DD4D5763B22581D43DF50DA72D6374B96F06D4B5FB ! A2BF3EF609F8C9A74E37E65C38E398B1768AD59F5DC67C91E9C4DF618C201F71 ! E1302D238E99D3C511EE52F9FAE664F984AF22CEF9F3ADF13D36FB1218C6D384 ! 296E7AFDFC0BB6ACFA0AF5B3572328192E82797681A10DE036501EF80BA166CB ! 244D312D042F32F12D8A849AEEBC1E4B6026851E1C2B9F4081BCCF5445B6660B ! 8E66A47214D3E39C68DE0FA26B6D5656716967A9A3646B6E2916647985199AC3 ! 9727B581E8B1B313D36F5A237030965A4129743DAEE19509A557118212026937 ! 45646A77F6E2CD6E2EEE0832F056DE348FE0888AD47ED0FF91E6B7E43958B440 ! 8217FF563C28AF954F2669EF3CC630C4F4BF782F3EBE4BE174A2D14C5EB57CC9 ! 9776628BB77A213D36D96696E6BA5FEAB8455F36BDAE26EA2B5F341A309A8166 ! 095A826D8E788CB44B7688F4CD2D86278D130B9250CA25F25B60BC1E5E6A4449 ! F718DC6F4316EC61E863C2D69810ECC143B134929B21BFD5CD718EA28658661F ! 1823E20BB65653CE5678B8A44E66A6D75DE1EA612D492F52CB1DB757CD8504C0 ! 04899BC85E53BE683FF8BE68EB1458CB45E71339BE3C569C01675E13627E8E1B ! 498D6EFB5EABDCAAB2B6A4298FBBE7C4F33887B1B17E9243E386B4F51257C584 ! 6800EB53B7D324A6B06E3ADFCFA315C1DD509730DA5CB68CD4DAFCFF51F401DB ! 9E8CE303B3707D635AAC3BB630F8CDF2AE8F9868DBA9CEEF483F2BF9FD2582A2 ! 4902F90A1C5B92E30F507E2B34E760D2E2D6C500B2CA6FC6F8A1F70C69641295 ! 0C4AE3E39F585AC52727C62480C7F8538C7E5793809D4DAA2375ADC2B523C5FD ! 6C0A20CAF26FC974CBFAA310F7094B4EA5DB158C17C1D116DE562D42CCA8AE85 ! 553F65D6EE166EB08A30F1D86AAA7FCD86F37FE98B1FD86D42DCBA22D5AE708E ! D3D2D120C0A30820752AAB84018FC498F67A493019E0BB9301B04B403A370B02 ! 4D1061B0451D3B5A6E4C8AE111E07A6C5802255F0C716FC7BEA55EDBEE20AEBA ! 6FD7250847E18AAAF41E0B7008C01C7721A7AD6F739AE1A79D1105D3DFEC7711 ! A5CF05D7BFC28AA27FFD1EDFEFB706CAF476463B3776424B1F7F8E0A9C9E71AF ! A7C08C94636D74BFFE5CEA7AAF219DBE41DFFC3188983B9263A8AE1ED2B07F99 ! 5482A6C02577535863D2E9632EA2729ADBD4D5B6F26E300EB093E20CC341AEF4 ! 134AB90BEB7E6EE96BE51B2B369F57F26E05260626504CC5D124137EC8EFFE68 ! 4EB3BDD8E5612B35B4AB36D1C5D351D4EB505289DB20F3CF5DE9ADA6E248CA0F ! ED03ED6DAE1F87D72F2A12E709DDE5DD5BE463C6D37293E7757D310887AEF858 ! C77B640E0AED544F8AAABC3DB13A53E1733935BDAE204F4D5DA0B78A5E1F095D ! 0142F8A7B733E2810B35078BAD71CB81C38FA4AA55FD5ADFB75DCB8028074C0B ! 9908387ACED66DB0E276A3DF185C9767DE2EF1416C06A18473F364EA8EA95379 ! 504522446EFA99061121BB82284A19A86A25BF9EE137EFBC6860A3A0E742793D ! 3354890CE8E27287D376E0741FD56F9E1D267FB1BF4529EA7C741C07CBA7CB10 ! E579C1FF0C6C79998E878C1D77005D3CAD64BB44D2A569B6263C047FA4C5E6FD ! A8F5DE9C7789813726B4B4CDFF1BB42E3D170639C25DCB87A51394B4BF980C18 ! CBE6FBE545B60E648C9CC123C76CF0747DF0608DB71A896203D46746511FE16E ! 6A9992318489A53521D0C39E13B161CE7CF1CDC0B4F496298C87CB2236BE32BA ! 37D7A7BBF573AD8A58111F53990F8D894AF5DF8D3DA1CBAE0D5FCC1D3DE945A2 ! D1B66BF07B6D07CADB63646479E790B667C063FDAB3FAEBBAE91352357AAA4EA ! 71AF012052ECBE5012A889A8E87CFFDFE91B144948EA0692F389B40880F52072 ! 6EBBD95DD71439F0B20E6539AB27F19FDDC2EE9C2FBF2F343E4B3BBB55326878 ! EF4551B426DCEDFA238AD4D9F217EF242C801466F7CC109F44189719ABE37170 ! DC219172DC422EB3ACD828F381437D1E521B2CC5C208C4E1806671912B198DC4 ! 2B6BD090C443420EDB377A04E95AE613DBF39608CB0EB1FCD9FFC310AC33B46A ! 101C44AFBB5AD7E393CDBF13C02894EB1999E25390EF0834FFD74395ADC9DE47 ! 55C2962AE9B64B227777A76CE7223E56F70AAB580474EC1480A80F4488F1EDD4 ! E88E48F963563D00E650C8FAD93F0B322467863982DA3FC340C0665EAB586975 ! 70604B7D14C85A3F9D4A9E35CC1B064C93B63B52E73F18EAAA30CEA0F5BA0588 ! 934BB8402DA346C060C2CD5D1F9CF86F531C519BE17CAAAC99E70122E5D7FD42 ! 9D18B92C82894112786DB1C19EF81411EF852B9F6C2957705A18 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 --- 1378,1669 ---- 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 ! 30F0D05285D6CCEF1C6CFF8FFE81F0E5C4D224E4DC6102F6A1BD5C2B6D3C8869 ! 667B2B2879127AF21B390B902894D3513791F49EC4CEC8DDD653648B5EF4C262 ! 8232A1B80899EB578E098AED393A9FF39A19CFF30F61026A552FB61F4403F6A8 ! 5D92496F5C099FE4CDA386EA76573213702F9BB8A7B039ECD80223396BCCC8F1 ! 98713A48A89D951C13DDDE965E5034E27B0679CE30D50309E9410A3BAC7C4927 ! D3CD5D40DAADD9FE246BF6237A7DD9EAE3C381935D1F472F8B6ABF161FE53961 ! 64FC3A5AB258E3897AE1A00F45628125AE5C2698517BD38B18F1166774B376D3 ! 0546998F1C6A8DA01FCB2E1C8D173E1A2A5134AE4283C62993BE45AEFB04FBDC ! 5BC8286538485B6F0082E9157CDB615A4353A565557B6EE8F219D5B31F61CC2A ! 10A43AB189DE20834586005EE6C2430AB287AB0D4463E2B5F5617A16C8E0D922 ! 8A0DDAF4F77E01AD9746D510ECC7811A20CF6C98F9C7A8B8C50A94E973BA8EF2 ! 75A52B678B8E5E059C70CC6336A9680915C5A386DDB2DC69B719C13238905182 ! D24B2AFD8B006583DDD6BFE44EFF261AABB13004EDB5DFB63E8E5BFA4A982360 ! CA92D65BF31D2B5FDE6C651FC361B8F7BB18946DEB087814E4CE3E9B94A84D2C ! 681DAD2939F661AE0FC27211E0049E3AB1DC3C7638A217E2ED5E76A0BB223BB0 ! F32738B078472899C502FC6B5468990FDA78BF8B4C9A14CAAB6D62FCD2B70515 ! E96578939BBFC1C18699060B6763F52FF10CB98C1F25783ECD92FC90DB893CBB ! 25CA4621564EF80CC7156DEFFD3C83D94BB237D4314D5457FC6A618A8752427D ! 146FCEAFE8E8A1C2A08347E406DCECC9C69D2BC5CFBFF1DE9512FA3352139E6B ! 51A13610A4EA061D5EC51B112880CE87D938AB70BBAF5EB0FFB2AE497241D52C ! 0908CED690784DE26C2C10C4693ABA644D4DE34DC7FD54A952909FE988C909FF ! 4721707AB8DBE2FECD0B987AA73C207EF1B77A563B5577BAC80FC1473F4B1DBF ! 8CB6CF99DC770B386C67D783F3877948A8EF667272BFABBFCAF6C94656E9B850 ! 7B8726FBF4E3C1F3515FB15957B6BF1EB381863D56B421F64A5022401DE00CA8 ! 2A928D931C9D457ECB9FCCAF57EAD983AE071F568CD039274901D52A3A9B1D05 ! 12885BF6CA557AC65A3769F4B90C3C9ED7E0CC0CC8802CEF9E13170531FD2B1C ! D2A6304B880869696792C1D8A50FB4B95EF9E628581E26394C4309D51DA04835 ! 6623BB3716E64E0A2B9D46FD9AAE7E47480935A091CFC6824FCD8EF9AD6F83B9 ! F2195B624C2940D7A380E9691A3B20D2310EB59E41DC22FBAA23E9A0B695B2FC ! 238AC8B56090C3494CCF91994D580ADB71E7213CB316287001B8A2878F2F3C1B ! 6759467DEF855BB899F6365C85195B6813040D461536DA814D59501C10F64DEE ! 6F51AB8CE95094CC72AD3E1F5EC3D561816AF6A8B11BA9199933B76F76DCDD8A ! C1899ED67A2E650476C32A66808F9416EF5317B4F86975776F9F2C34466D886A ! 5BEAD62B5023413D24B80131165D455322B2BC8661EDD22CB7BDD50FC18C80A0 ! 946DD22EA7E76555597756FE6A172AAA2841071D41FF0B0CE92A64B79EE24EC5 ! A2A639F7AE08D8B9A8A7514A0C780580AD847D597CA66CA95B54EF64532C21EA ! 1670A8660F986CF209F7AF70049B7FAC4CC0AD7D21C47E755A8C735CED420F8F ! FA9E98C6A0E501E54370C2C7CC45D1578C20EF812E968B6BFD9196B92054612B ! 1EEE75CBBEC588F2ED8A4EEE0D378E1695116A2EF5618FADB7E1DA9B4E4A18FF ! D11471F644171EB4EAD0820703430053CFF4EE3AD78813B7C289121988240CB2 ! F48230338E5B7DD63641A9937820AD9441671BA15E94780A8E1E21B067D4A0B4 ! E25C9285C47FAA78082E5B3234217EC9099597214D764E9906CE29C4EFC7090D ! 9BB0E8911AC5109EF272FF2D0F091CA05C97F87121F685A0F9D39486B5F76301 ! A73E86D2F8A581696A0DE01E39DE172FA19F3FC26A8DC97E04B45A4A231BC282 ! 21C03D6ED9134748D2F09AE1E7A16BE288458338D951775B3EC5082DAAFFCCC3 ! 246F4E15DFF480B7232E2948CD3C5F730C508081C204649568405178BC901AFE ! A59F3DAF0E5980FF5A4E586E03F7C46C9998048375ED9F3B8AA38206F149FCA8 ! CF5EB7605906EF69F7D5F4D41F59F537ABC877A271088EC1D4CC3C7C33760EDB ! 314EF716DDE483C47AF31353210F0606FF48D8F3A2620B189C5A8ED71D56F7A5 ! 023356741A236065F59E4CAAC584A5C230C803590C4A7394AB372E95637BCA78 ! 634EF8229A4C77F1A875059810C5BDA94B9F01BCAFCD8F26D02AB64830A40A0A ! 43757AAF9E6A4220CE7F478928C37DFE4B90CE863F3FA844FEF96524BD46D254 ! 3E30FB670EE76690A35D23F5A5BF59FB4ACDAFD1673EC0464797A903187D0D6B ! 1C181D73036B93B76B9AA0E62064A05B414E6FF2C16FA9FC17CCFED02D84381F ! 1A9FEA5C5728637804B7F67E606DB3FAE4C43DA1FA18CF08744C926F631E26D6 ! 7446A1E183F83E4F25A1DE899F9BA59821E6E73355F873B9DEC876AC6C7DEF45 ! 7AC3F1892E4647C5442434056C1868AA6202C58EDBBEDFF39236AE76D8F0AC2F ! AED3039AD6885353414BBE496936E2B07EDC8583073464A9CC3469FE08E79946 ! A2253404518CFA39A9FBC58010DD369DDF6584553EBD3B1E14F17B79BED0372A ! 2CADF9494BED1EF953288F97180C207155849B6D1D9BA2931D170BF9C30B4B07 ! CB62BC4FB3E98424F9B278DB66114A0C5F76C4D9FE789C42A796D5669687AC4E ! C75B7E224C69DA6507AABED8F87B7D7F80E456D81AFD08D49F6F0A5169CE30FF ! D27D2197D922C9BCA2103D0460B92DFE05BAC7AFAC00BD486C0B1DB5379C1FAE ! 0BD3610A1DD8F3D90EA88D22C90B29EFA2F15F297DA1C4ADA3F085BC07F838B8 ! 9398992BE46EC49DAD78DB55A7D30ECA9699624C76657C0559EF59FFD6478AE9 ! 585567E6C0739A17790256DE272FD4B96C999D43E77C46430BDE8FEBBA71A76E ! A49B0516063CBD4CBFDEA2DB98012DC4FC065D858F16356BC79D3DA14C665291 ! ABB11A66D6F7C21FA8E981E67A285CED046F516010A910C18B7D678F984E359F ! 0F586D1FE0E045F4167BB76F0CD9E129EFA10FC3411DB8B4B8D3D308B563F53E ! 54D5F884FFA8BAA6643253622C35C99ED194238FDACBFDF77D01333827EE92E9 ! 2EB65A94B93080933C0CE64FAA1D5CD2BAD24147849986B02DBD6F43F9C7F96B ! E9AA76A45BE891F45C1AA29188B7367D0FE265D1E32FCAB6F0AE8E7E9E2FD7E5 ! 821642DC80537E6A103934A6107560735615686E65064A8E16C9C049C28EFFD5 ! FDDFDB20DFD9DF7BD07FA7E06AF451F54A44A2473E33BE7F6BAE6B0BB8F2835E ! A5E169189C632A96FBA71686C12A98DD976B3AEE883FCFAF2E7E6BA82FDD3095 ! 1EAD1F9D3DF7B2694BAAAAB702DD7F1A7D0589E8B5D6449F34B6917281FA3802 ! A3D998684B91DDCC78A1751D369006553F68B145C4FDD26591C66834DDD271FB ! 25F9212870BA0D10259C982D22CC04FEA69288CC2E0870329A5C55A0DC567C49 ! 395AFA2A374D32215BB130AA1571F2C57B77A67F3334427823569FC268C210D1 ! 8B56D6F3DD6B483447692E59D08C9A8473BA2A65584FE364EC6C632D6C4EF109 ! D1D9E6A84DA4E1FA0475777F21325A8B7C7A4A9EFDB5721B41A7F9FFDB2C86FB ! E70A5F483D78371EB600F6EBDE27D9E95EBB4A45E8F224B3CEC16C525E86E02D ! 58DADC2EE818F32173726A9A34F5CEDF1C3B4E0D61A6DD7BBBA19BB8547C04A4 ! A80BBF117319FEB51EB3E2577E3D2CAFCA7E3B041FD5ACE28631CE39BF72207E ! 30C0D79C490A8C45A95895EC461AAF8CD43686DBC0B1D368C6B7BA1911E6316C ! 778F6AC3423EF417BAFCBDE368C86284D265A406FFAB35DDBD4FD4328B504260 ! 4A8B096888215D49CAE6399DA38542D221579377B92F274F807440E9328F27CE ! F0E97C0F88B80BA6EEA749A3D70FFC871DB7A2F45A2351349132C4B2FD9CAA49 ! E4BE537834908A23BAF0F1AC0EC31D85F11EE7358D1EF998CD94F4E7A90D0B04 ! F9B9B16E5D1C62109E92F204E8D49A5B183CAE51F02CB29361FB3A1EFE0439B5 ! 5E362837296C122FF37A08E626D34AEB2375896A9E69BCB12C64C2B969380DF8 ! 4387386CCDAF7412BA6FA4218477212D7E3300D73C775AFD9B85D0DCAAEEE2F5 ! 50458CC08AA1EF8E1C165852BE15EB560197BBE7F17FDD72785A14219EC0DC99 ! 2B48F163FFCAC0928ACC0C7A58AF3EA525A94D937BD6327B80F00C358AA515A5 ! 9D7B7B179BA367D9174C41D17CD6EE9EF423981DEE95F27057C446F4D96D74BB ! 5903D7A68B20556E178F9273FF2FD424BAEBA22E0771AC1340D6B47744D5296F ! F01677472B3996D658C200384500556FBC0130258ADCD273098F6D624D1C244C ! 7300C7E5180D3A6DF34D0305E30AB0BC0B0DF2E84EA00FFB50BF8D22D9E916D0 ! 06A4A83222A1E509F8208838F99BEAC24C915757C8C13343BFCDEB27C83F03F1 ! 1835C9A2701CD47EC8AD7281293B1DEBB7C79C8AB575E69F8390991F97401C28 ! E01DFDF5F0343FCC5E2B370589FB2896942E796E2B5ECB339CFECE60B6AF794B ! A17C7FC24F42B7AFFE9FD8EDFA580B613E00A125FD55CFBA9BA56F68BAD581D1 ! 47BC7A2F7EAE4DBB04ECA8BEB6FB6922ECFA0685A3B8B667C8C80D8094124E6B ! 4F126E60A56878B8C6E46261330AAAD66C13FF94C0BBA40EC670C2FDDE179636 ! 5EBAA95EED3C597191B35EC29F228E22E266903A59242E89D6EA9327ACF07602 ! 58FAFB707D0C5AFD6625A49D514A9E3F811BAD80CDF210F69C45B35DFA918EFA ! 43BEFF62EE8D58A5B8EFB486A4B57401AABB3578289BE8804C10CBD55DBC51FF ! 72900B2318BB3A97E08D8EEE4DEAF03A2CEF667BDB6CAD59D1FD1274F42B55EA ! 075E2EA3B3324F23D3F8DDDF905C872C13154F49C1184D3E8B88F1A589BEE0EE ! 8213325A35BFE718011C93B4F96E47776B96C1F36040F304B503BED36794E2F2 ! 009FAEDB3EE212590CEC189A7E55EA8C28BC72C96BF822AC7C4E1B197C897992 ! EC87737263EC1167A9BD966FA18CF6F1B3268D5C23F11236150EDE4BEF78C825 ! 24760C8F2F0029405D6E1351CAE05B3CDC8EDE6FEC60FA3242EF3BCA1370F722 ! C6184A8E1AE4DD3C99D2E10151786EDB3005D8EB86237C95D9451F8BD7C0EB61 ! 260CF7F1FDE38CC87739D43139A5FC03F704C42E47E1D7D9C17AA3436FA33060 ! AE4F2368E1624DE32339361D68CFC68A3CE224C91054D2A3765B42EC2F0FB75A ! 4954854FF0CD755881A3348EECAD8DEACD7E662241C276A41AAA03EF875D8F29 ! 3294AB0CCBC6DC09355174943702F9411B1B4785770AF9A666C0A6228A4D708A ! 137D2C0FE6CA7D5BF853C504CE85C471D81BBAE73AF72E16045921F580AA4826 ! 84A2D61DCD11A149FD631360CD4954AD902B5CE385AD72E63508B6BA6EDE4D30 ! 661FC6E77CCF2D852894C509AEB93A9D135AD74509697EE3DBC9AEA0B1522975 ! 548B4A390581343E12686FDB39F1E26A4D894E98408E0171B11252C3EB03004B ! 98A695FC743B94DBAE28B1396C984D2235D3431F73C42D6F5E9F0FA1EC953113 ! 65168137774E652B5793C1DBB0C79D2E8C9FBCAB8922AC0B40475F7F19F44FC7 ! D8558EADAC39D802932C12AAF5E03C36B9F4AB2C8EF4DBC207C612448F122014 ! FAD87E63F1CA6CEC17FF8D99BB7038B80C20C77112DEE28F0025995DC62AABB0 ! C47C4020DB7D0946ADDA0E011D7141B5E000DCF1B4DA00F447351D2C8138626F ! 8AA3664BA653A9AF9846A43FC76AC9A1EAE2560EDDC4B83E95C121CDB76C0BB3 ! 346AF6D7EAE8C9DBF6843BDAD8AB42FFD060F7F5C47571FFC95E6BE1804909B7 ! 2AABC5EBBEE592709E1A2D55051837B82006BF5A037080FA395B166749062E9D ! 47ACF1BB5C1EA652284B5B48E703B52B6FD85401C281CA6E6F75E3A162B6A023 ! 39F2A5331DBDDCEB19D9D7588818034BAE3E216E1E30AC813E8D15B0794E964C ! CCB6ED09F3BE76F56797B63F3D5A7C03F66F320BA2B5F1664BD6B76C8F0FF7A5 ! 40AD7737DEB1AEEC9ECB873A0F7266863E743A6DBE0A38A10315854F6DBEF4BB ! 33AF4A9A39A4BB920DEAD5AE3C1D96B7714002FAB977B5450DFEB7AE4639D414 ! 79F88C0AB9D2FCA19854C513233C1824B48D65088FDA64F504298A025B2B6FC2 ! 7D2780968543E0B50F0ED6147D29ECF2CBB557F0331066B15BE35A94A94488A2 ! 21A66FCB70508D822AF1E092210B3CC54F21149CD2A534062EA2AC08954AAAE8 ! 09AF3500C055B15B2477D23223C1D6DB2A20AE78BCE0811F4B123EF976C0A79F ! 854E4AC7C5A2249FE4201342AF4B6EEBCEA08D01B605916B0A65F0817EE1AF76 ! ED6130C839137976DB45570E5EC1E8B18B42961F40229EC822E079605AD17483 ! 6141028AA6A70B5CA81C8625AB73597F855ABD2EFFB65959FAED8CBDA920CCB5 ! 9D12A328E216B07512A53C7F1DDFEBFDA42877744D20B0BF890C6ACE8BC3C435 ! D276C31BA87AABC50A46D1101920812525887F866EA5C17E82387841EC42650C ! 106DEA09C3D58C1D0BB9CFF3C1A776A591B0E7F791CECA268B953ECD617B8853 ! 32A89324F7D7C96BB52406A0F4E40B6B9124E774C1955A358075CD0C7C56912F ! 4070BEDFDE8B8D59DC1B26AB80A3A891D4D1536D524DEE42CA2B54C17D54E57C ! 23D9E642928ACB0547D592FB7B2A465038A20D585D2B40CA90883F46B50C3268 ! 835678A37A3AF06ACBB0EA15B1F58CB9F32EEC7DAD0F6D45EDF2DAC394054654 ! 31C213DAB180F099E9E84578FA202BD689CCFEC72D31A86FCAD751A025CD2A71 ! F437A3153D5A52E112780282902259941FCA4AA4BC9C519E3344A643A11B8A6C ! 0859544CF205380EE8D7731CB3408824152306E292A01C6598FB5952E4F12E03 ! 7A59257625EC23C38E8C8755BC85E55BD48F6E982B60D57A552E35858AC382BB ! D90353A3EA5963D08400473906798D56AEB9BB0C81A86E688A8F1B77EA854BFE ! E2CA0E3A72D48A7367AD19F83C4445BD6A449FD7B36560DA9E4F0F0DA54983E5 ! 5560E40059CAFCDE80B9DD2559F555BC39687E243BDCBA427A4B3D2E31095038 ! 795C41F6AE47AE2A3AA6F0127F97E538B210B444916FC67F76445C113DAFD0D4 ! 525AA5382A5D1958276BD523C9BB96320ACFC8B4FE733B35CEB41CC11AA066A6 ! 6908CDF57794C18119702BD993CAACBB7D9E6149F17964E96A0750D784786DD4 ! 867AD2EA8B0CD39186BC7639868DCDBA9263126F0F565C108D9B3CB2484451F1 ! 9ACF24A2727DECF228ECC9A2E10CD99B0525415FF5F4188C67BDDF6B3A82F6AF ! 5B2911AE04AB64F7853B54962812173D8CD41DD41D0776AA25CB48E989689684 ! 0AAC760219EFD126DA135D2A453161397B7ADCA897656EFD09ED29616E9EEBB8 ! 39AAA4D66E6B406574F7FC3734443235086AEF9C8AA96B1E3E7C9A3E28485E7C ! 0026FDCAD2AFBF4F8ED4BA6F9862D6A4F1F9AEFD3FFD4BCEAC5E8421432257AA ! E854E6464410C5A8B7E1C32B524D2B59186BD90B8CE0A75456ACAEAAFF95DF26 ! 41ED32B12E2815C83F3C7F17E1414A4CB204963CAA6A4BAC5AD3C5782358ED71 ! 6033C289134C84A0FF2AFFBA949863ED5BB8D886AC9309F43620578FD828D2E2 ! A1318DD20102208FAF57863C05DC85E5C33577DED67A5F70F4F46799F52A8B14 ! 83E6E51C27D93C807ECEE29850131F2ECBC4F2533EFC8460CC1FA35A610201CF ! 62ED6D564DFDBCD19E1F8BE7B38BD30286997581A124D5897B08E5E4517FD0AD ! DF14758077D26762641E1CE5C1AB8E202E91174074D3DFAEBF1A41D78A8C5329 ! 627A37C6EB6902FF585565D7E8850A60494A86A98CAED7BF7350C14907E065EA ! AE8ED9EF06EFEAB84E0AAC9E7C20FEC88D19092C52EF368B41A170145AE2BA5F ! 703470171DECCBCE4766BEC9FB055167177E72260F512F5B888E6F0E0EF876C2 ! 66AB6FB71C408A39DDE17651FFE7EC7DDE65E3AEA041CCA12D52EF695B2616DD ! AE43FDCD3932D075556D53B6AA3AAFAE7AC38EBC6AC338BF2376E227BE840A5B ! 2CA9F73B1C49916C93E58EFDF0B346BFBD218062C140E5C2B76A412661D7742F ! 732205A47DE085341A1A7F38ABD660CD24086CB548D1000B017A77268CF61098 ! CC7FA46BEFBB95C25766B8CC9A1A94D296C1FF74255C4558624E56E52555A2FE ! 49D6B49D3FB5F414464E7DC285BC5D9EC9F922F2B706141878C7FEAB26C4374D ! 6EA351E6558192A6B72E2519777C27C93DE66E637CD4956B795AF45B811A1A22 ! 4C150F3EE21DEF0F174710D04A95BE893D1E579649C04C07FE0068C3D889AEB1 ! 011BB0A48FB90F005BB543CA5893D1E63E7BBDF9E99F4916065B6653F9386857 ! 318E0AC2D713C149B6DFB5A64DA05B41148E26C7D341407E6DCBC30EE4A92428 ! 0654CB2E255901EE9D5BD67357086996C75D0215F2E64885F9611193C0173CCE ! 792BB823146D3B63CEEF2F8715A7DDD69ABB00CEB4043D66A2250B1CA165A61F ! 18804E397D54DD0E63A91A65C30F0653F6F1632151360BF030AB7638F65A17A9 ! 6A80B363BF5AF695620EB2244C805C674E0516835ADA3F01E1616B871C389606 ! 1EF6260C298D90191FBEEB184C4682BB86280B96791B9B6868536EB88BBC8AB7 ! A01B1981FC010EA9089CAE1AC63FB7CAAC04AFAFAF27DE55CA86B06D024DC06D ! FEF38710DA39B88E102F48C7CE4F81F36E85A0C6053542F765965D09E6D529F3 ! BCE013785CB5F245F306D69570977D51AE4FF32D00ED855332FC74538A1F9E1D ! 26AA89C22CA7F7B9977CC273453AA807EFC1A31D313A4708F77F774746C2A6DD ! 04D5ABE95985B52CACF634983390E13FA60517CDD09B811D8455025FD8A7C6B5 ! 7AF678246CABC6E648B23BF73CF4C2A9D5E18B87BD5F32BCA4E69494F0C55796 ! E7C126968E4729B4234EF735DE0194E28732758D7E816E3D12C241A17D19A3F6 ! 8639011EC17D6E3A45ECA3E8DC975E12661336692D4524C0C9556845CFB7589B ! E4992FE805C03E3DE1D81628810B19CEC2A692A487B3453EADE640788711FA7A ! 87B11C36723879D3B2971B5DD6C6524CA5DC49192837635C22256AF60B8DA4C7 ! C69DE48C4C897F9A8F22F8B6B310E7382D5CA82426A1E943ACE8B539F4FE77D3 ! 68696AD07521B018CCF9C5D1C07B5DCC16784D3130295D35AE46BE7B47681624 ! 7AE8B7C4131B9CAC5F5193B04124B7DE261E3D360C1347024C061AD63934BC92 ! 744B468D17DE9DD44E3BA975F7956B7BEF0AE5B58DADEE576C102F6DADC2415A ! D14F5290D61CB30761C250E4628C10391DB7DB977A53263D4AF5A96BB06FF240 ! EABA625BC68D28A8459101A2BAF0C79D69DFF79116D039D6275720FDA9C445DD ! FE2A3F9FE667490B4570D13679E36B3AED8C8FEFA3B9324DA8D27F88EC275BCC ! EB5E5B0FE84D033717651BF40C073438C49D410892E608CFD7032DC8D28A6AEA ! F854C4026326F67127C6335834A09A734F0418D0C1DD190DC656E04B8F58D0C9 ! 16F0FD15DC2614CC769A01C635AD00CBA37BA198089C3E6CFD677FDF9571FE08 ! 50746CA3DA5E8BA7E8444A0E8BABCA3630031F365D56DA5D57861594074E7F7C ! 2B38909917B32B866E9E61F09143FED52C6764A1EB3F6FE72A17953F495E914C ! AAFCB853DD4A6C71731C3387637EB6E6A0332AAF846986284AA119A5A30C2CA9 ! 07096ABEB9C042B6AA9FCA512B0D87B90AC4EF8B30C884EB6C7C56E67E333C81 ! BA112525504476738192381248A908F0C25E57942EB72A684E051D94119CE36B ! 1B683A94BEDC34910821BBF9A94E92D09CB9EE7582CED4783E0CF31BADE2413E ! 4B6D79918EEF2AFB2781E2B3E9EFDD4F0E159861682573F1FBE52957F61DEEDF ! 1EEDEE1B8577B8AFF085930A65E1B3F9CA089D92BE2F035A74D184E2806BCFC1 ! 7E41C4DCAE62A2550B57B527B513E3BFC0480C3ED389557E6C59D87C2767299B ! C4AAE0DA7E2C75E16924324578A89F5FA14F19EF4924140B4306A371133333EF ! 0AE6D38BAD7E0D31A8047828E0834FCE6E721391F265C62FE6BEA454AB5A9E59 ! 02598D59C690216CC52C12EEDBFFF618048EEA67B867B459080A07184F6B8E7F ! F102C364913A11F9C05024A79F5C907DBD494CE8F85113050C62E71C51C8B62F ! 8510EBE508BA685AD04F5ABF69CBCE3A94EE6A70CF29CFC4B07D163C42A07BEA ! 24B4C77CAC9D0102C4AA29986BF76AAC5039E9F15D9F515E77227B1300E5F5E7 ! F760D28D959ED550D9372A31BCBDE3732B28312DFBC7DC643A9FBB3130E8D903 ! C14D17FEA00600C42C30D01B562FF3C85EF4550E28234038B9E1D197F26C6822 ! A0A9F4E80A66E7391BE1D14D8611066A7A57B42D7068FA12E5751F599BFDE140 ! 037848930E6E05E2CFD162A3C10BE1148BB690525ED3E2711C0DBB0C2D6F2B67 ! DE0441F6683160B575714495F5FEA175C2B896C740FC36CDDE8234F53284896F ! 22CDB78A258218D059B004502A6FCF6B98C1454E81EC1AD9E3B9121449832694 ! 49A19D20ACE379E110C5504CE5A713810B962ED7F4BB660CD9BBA2528806D829 ! 9C0EA1DC8D76D53BD179A62C8FE361EEE3A8D63D0CD05CB44513B8D724D81F8B ! 51D789BB83FFB30BEC37A12FE473798A514622B13269718C24FD5A136A561E51 ! FD88C412495440E748D764F82D2C88AC30D01C098226754AF49FA640FAB2F349 ! F6E60D04698BFC22FBAC18773A340274B0275EFD930F114E8999C74D72926E64 ! 07C7003DC37B3D9271528291B697D14DEA9A8E21E4FB5A70EA4DE92E6703752C ! 60EEA1C17FE96074FAF9B47B2170272B94EEA06549D2F8C64C77AE0A54938D83 ! F8A6CA045B85D30327715BBF9BB2C16F47F9568C6B03A09E982CC1BE9893B8EC ! EDADBC27BA817893FA7EF798CA707FE70877A9602A71ED725E83EAF41A817FEB ! AC08BF1DCC8325A065533A7A6DFEBBA22DDFBA4424DBF6CA6228E7AAC0914813 ! 21B921C6AA429E7D8C27A887C6345E43D63AACC1110CA0A6DA044533EB98D6DD ! CD06923BB8E1ADD2488433CF49468DD4FCFCAAD8154C19405E59DF8259878145 ! 6E7808C8E8C52C6656D44137D25BCFBBFE3C6603054A3A758E72F8131F3A9041 ! F7B1929C2C7D65935BCFC181CEA69C6A8B220BD61CABD0013F3825D1E4D31350 ! D35374BDB999362B71A74AC48E3E78FDED95104C7718B8D7DD377888ED682099 ! AD8D56B3E035DE39551E2FDA1742899DD1A696316057519BD860990662E83C48 ! 13461E3FE4D47D616F6C2E195C20B480CB5F9A0F47202D54A319F27C95347948 ! 1E59872DDA86B7959BE9AAEAEF04BC4F4567E6DAD2713388843A2285C1E419AB ! E592C0EC22E7B1C7256872F34F3A3A0D414CE96240778729052C94E7D82D4419 ! 445D1B69283F42E55EBF8B0569E9BAD401371FF2ABDA43EE38C48D2A0BDB39FD ! BD2BD5002FE5270F65D0E5BC2C15D26278DD8A76C3E844A7A1B6B9B1B32ED852 ! BA29E9E4B770ADAD6C4B597FD0797F257CA4E0883A7D8DA07FEFD02899DE325B ! 48A92233D5ADEECEF36564E6D094F9F729C9200CBC92B08FC4DB1304AFB65724 ! 53A873938791D1386729710F8CE45CCD4C8475C7761765E6661562EAF157B0FE ! E82A6FF5CA01BB1723ADFCA0F43FD3F0A26679359BD07FD255693213B611547D ! BE5FA4487C64EC46469F08491D6811841639E254B9A5CBD300F6C68263F1A4AE ! 76C742D34B1B17C2220263612966DC713F9E40AED5716736F4AAD4B532D3F95B ! F801F2D828BE0AD27ED6258F6A849440FD22991A9500E94C3A3A4C8986EC1A5B ! 0DAA7ED546AC026368AB4F1700FED36A2E9AFFBBAB7E43248F53AB2960498363 ! 8BB266C99FB765A06FD0E24D271460BC45CCF8786336C7BECE2270DD6F2A0174 ! 55724F095107D7FF537283583E8A4D8BA08ECE55D1874D78C5C1BA594336641E ! 86D28B6C79D21146CC767A4D8D5FDF29A8DAEA0C82AAAE26215B71F3064014CD ! 30F10F5E2E319325161809B62F663976BF1233ED1566C0811B1755A536CEB690 ! E0D295CE88498AE37992A879074A6E75120A2BA49FE72C261F157DA56AB895BC ! 1B98133DF63E51514847261FCDE36FB1C1DAAEEC0EB0A65B1133CDBECC62C344 ! 51C14D4947491D3B4E6DCE4565B61B6D5F1CBAB56012EA5D6AF946631A1ABE64 ! EDE858FE388BC0ABB8944FF3A7CB3FD2B9C72F72EB8FB7D23A3CEFAB7FB05C3C ! 7B456685671CCA1876E06E5E8A0A9294CB344E505E16237042D923D100204ECC ! 155D619B50645940B92B790BB7633B5C766257CF00E5527E2B055A84A3B2A173 ! 06CA596DFE482E81FD7DDE8B45E6CA79B9D5FCC713D0A0D2AFD77CD61B8EC424 ! 02FA201CC8D5816FFA5B8AB2E460DD3D744E3FCE65479ABE34FDD2F6553FABBA ! B81259F488E81545FA1507EE4E26A4B66D44777596998D023939F2CDE82B4A2D ! DE9BB15E57BD8AF8FB3526ECAD74A51D5B4B93170B9CD72433FEF961C9FA176A ! 7F777C642D9C9B3355BDD316A35AE131242C26363F5B5C9EF849C60CFB807569 ! CCFF76451AF150297BE7C6F6015780B85AF29C2535696A964AB91D0CBAD8A81F ! 73F2E2E152DB661402E7FAFCDA18B26917E52EBB6F7BFE4776F48CD7D43B49AB ! BB812B8DE5DF14070CCFB8DBB3FEAF830FBB8B78C205331E17F135DF7AB31165 ! 9844523606D0EA962E59ACEEBA267BBEA5245BAC046C5971EFAEEA5DB64098C8 ! 0AA8D1F83A13B72F998C746A45A990BDFD93AF5A1E6AB1EA41647F67D6963461 ! D9264BBB478C1456777E74C632386D018292D145B3477887CD83ED1D5C0A1F28 ! D8292292428F6A2B48028ADB71F370C2A1102EBC1EB6530D8E3B058D05693335 ! 7FED4FCB9ED98EAC76F5CA82939A285718738D2ECCF914C8B5410C8985FC4778 ! 1F192ACE143FC9FC4B04FCB2CEF1D92DDC3F22C4FB9BAE6803DB4246A135F151 ! 7B6DEE4FBD0A75276638212B81AE0DFB685801F2DACB2E695C0E84CE6D71E6A4 ! 92418DABDCCFA7E8D491CB0BCA4747CABF8EB57CEADF2860DD31D3C555BA94F7 ! 1F796D1BC78F87FFE65312EAB0F23BEAE5AB2F87287D80B6EE6A9B2205352824 ! B444F0027815F2927475934F68EC8335E3DCCBBB1E89E7C8C205 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 *************** *** 2148,2155 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-163 -250 1146 969}readonly def - /UniqueID 5000828 def currentdict end currentfile eexec --- 1696,1746 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 34 /quotedblright put ! dup 39 /quoteright put ! dup 45 /hyphen put ! dup 46 /period put ! dup 58 /colon put ! dup 65 /A put ! dup 67 /C put ! dup 69 /E put ! dup 70 /F put ! dup 71 /G put ! dup 72 /H put ! dup 76 /L put ! dup 77 /M put ! dup 78 /N put ! dup 79 /O put ! dup 80 /P put ! dup 82 /R put ! dup 83 /S put ! dup 84 /T put ! dup 85 /U put ! dup 87 /W put ! dup 92 /quotedblleft put ! dup 97 /a put ! dup 98 /b put ! dup 99 /c put ! dup 100 /d put ! dup 101 /e put ! dup 102 /f put ! dup 103 /g put ! dup 104 /h put ! dup 105 /i put ! dup 107 /k put ! dup 108 /l put ! dup 109 /m put ! dup 110 /n put ! dup 111 /o put ! dup 112 /p put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 117 /u put ! dup 118 /v put ! dup 120 /x put ! dup 121 /y put ! dup 122 /z put readonly def /FontBBox{-163 -250 1146 969}readonly def currentdict end currentfile eexec *************** *** 2505,2512 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-62 -250 1123 750}readonly def - /UniqueID 5000798 def currentdict end currentfile eexec --- 2096,2136 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 12 /fi put ! dup 39 /quoteright put ! dup 45 /hyphen put ! dup 46 /period put ! dup 49 /one put ! dup 67 /C put ! dup 70 /F put ! dup 74 /J put ! dup 83 /S put ! dup 84 /T put ! dup 87 /W put ! dup 97 /a put ! dup 98 /b put ! dup 99 /c put ! dup 100 /d put ! dup 101 /e put ! dup 102 /f put ! dup 103 /g put ! dup 104 /h put ! dup 105 /i put ! dup 106 /j put ! dup 107 /k put ! dup 108 /l put ! dup 109 /m put ! dup 110 /n put ! dup 111 /o put ! dup 112 /p put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 117 /u put ! dup 118 /v put ! dup 119 /w put ! dup 121 /y put ! dup 122 /z put readonly def /FontBBox{-62 -250 1123 750}readonly def currentdict end currentfile eexec *************** *** 2766,2773 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-29 -960 1116 775}readonly def - /UniqueID 5000820 def currentdict end currentfile eexec --- 2390,2399 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 13 /circlecopyrt put ! dup 15 /bullet put ! dup 104 /angbracketleft put ! dup 105 /angbracketright put readonly def /FontBBox{-29 -960 1116 775}readonly def currentdict end currentfile eexec *************** *** 2783,2798 **** 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C ! 515DB70A8D4F6146FE068DC1E5DE8BC57036431151EC603C8BCFE359BBD953AD ! 5F3D998D8365AF76D4CF6A06FB66E1CBCFDB3A67D8880377CD677B9705EE853A ! D849F88A828E244FA5816B7D081D4D1975A56D771790C21AE05809BEE6613452 ! 953F26C39CE61F0E134BC35404FE2F0B7D244D9A6F66E4D817D1C65024013AD3 ! 5F242EDE94633B8E20EA42B07F83BA649F12B784B2AAFA542BC597C6C2C9AE9C ! 39D60FBA6CD16AADB5DFDABF22F37E244DF3987FBFA55031CFCD46ADF03650CE ! D6CDFFD87BF7407FFB63F3FE4C29FE753896101B2CEAB9007B66E29D6A5B85D3 ! FF91F888E445677157A5996FC7A3BD19BAF3A3BCF33F0719B992A0F013B1F0A1 ! 82E42DF6F651071FB407F448DFF37653E2A0569BDD8EABC3280B3582745DB98B ! 644E5B341F531B0D81ED85F815B993C2B8B34CDDC6AE97606F6B3B1C5427F174 ! 362FAB82B935087B568E6F526347058C406E878F1CC2DD05C26D35565347C5A5 ! 7575891BB4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 --- 2409,2432 ---- 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C ! 515DB70A8D4F6146FE068DC1E5DE8BC57030ACE57A0A31C99BEDB251A0ECAD78 ! 253AB320C099669BFED2878A6C4038A5BCEB5B4C28040BB8B4AC2C167BB2C999 ! ED93E2F4AE3E4B44B7B6B469C36A24080D4BEDB5523D202E920D8898DEBD5EB0 ! CAC3C5D5F01A87F7B15BD1C197B344F7D94E965CBFE73E8A65A2AA6A6F93B878 ! 03E30E60F1390C2FB671C8D36E7D6E516A20079B48CA9BE632F5A8D1250F01EE ! 6809D6C5B51AE3D1B4C244195E4AB5E68F2AF1D7556B9D03035E08B962A33B44 ! 426A3B5BEF3BA86E4BFE8C823D42816B59DAE9EBD42C115A1E75B0E6427720BF ! 773EA85158709B4DF306511D5CC19D7395BEE5940DF97513CC36EDF468B80C01 ! 476B0B89D1198F039E4A32FECF58E56F6B0A1D27E9E5FE6393AF613D11EE6185 ! 26EDAB5CD87D6B6C9838DC76423000F9E0D094046832BDDDE6AFB7549561F742 ! F0B1AE278DB3355F8867D2CCF8BCC03AB7A7A8F9E51C4B2BD121F9D3B2477803 ! 1A24BBD88C9C54A8E31B9CF66295B665495BE7ACC72E1A1F05413DFCB56D0749 ! 49539F8F4706361CCBBEB69D135FF4B63C35408A38382C739EE8AF9F378CF061 ! C9754E8C7CEDD29E63D79C8AD5518244E4BFCB827E05F4EFCF03BB47CE67F43E ! F29192EC2FA1026ACFAF2CB156124C88D860864BEBE81CBBDD60DB5C7DA2B6A7 ! B64E3DA907988FE60AF047DCEDF2D52D2D43E6C01FA7F84B598386FE03765B15 ! EE11E9DB0BA83469FC7FC5CECCA2E4D84F87D43811978975C96D9CB66BB87B02 ! 579D63949B512A59123F039A1DAE2EFB897FFE82E8C6B0A30C570015B77B8318 ! 9BB684151679A432E2E167F4E27B7E878A46C19969230B9604ADE2E6487203D0 ! DF06DF8F5E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 *************** *** 2825,2832 **** /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 0 /.notdef put readonly def /FontBBox{-251 -250 1009 969}readonly def - /UniqueID 5000793 def currentdict end currentfile eexec --- 2459,2549 ---- /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for ! dup 11 /ff put ! dup 12 /fi put ! dup 13 /fl put ! dup 14 /ffi put ! dup 34 /quotedblright put ! dup 35 /numbersign put ! dup 36 /dollar put ! dup 38 /ampersand put ! dup 39 /quoteright put ! dup 40 /parenleft put ! dup 41 /parenright put ! dup 42 /asterisk put ! dup 44 /comma put ! dup 45 /hyphen put ! dup 46 /period put ! dup 47 /slash put ! dup 48 /zero put ! dup 49 /one put ! dup 50 /two put ! dup 51 /three put ! dup 52 /four put ! dup 53 /five put ! dup 54 /six put ! dup 55 /seven put ! dup 56 /eight put ! dup 57 /nine put ! dup 58 /colon put ! dup 59 /semicolon put ! dup 61 /equal put ! dup 65 /A put ! dup 66 /B put ! dup 67 /C put ! dup 68 /D put ! dup 69 /E put ! dup 70 /F put ! dup 71 /G put ! dup 72 /H put ! dup 73 /I put ! dup 74 /J put ! dup 75 /K put ! dup 76 /L put ! dup 77 /M put ! dup 78 /N put ! dup 79 /O put ! dup 80 /P put ! dup 81 /Q put ! dup 82 /R put ! dup 83 /S put ! dup 84 /T put ! dup 85 /U put ! dup 86 /V put ! dup 87 /W put ! dup 88 /X put ! dup 89 /Y put ! dup 91 /bracketleft put ! dup 92 /quotedblleft put ! dup 93 /bracketright put ! dup 96 /quoteleft put ! dup 97 /a put ! dup 98 /b put ! dup 99 /c put ! dup 100 /d put ! dup 101 /e put ! dup 102 /f put ! dup 103 /g put ! dup 104 /h put ! dup 105 /i put ! dup 106 /j put ! dup 107 /k put ! dup 108 /l put ! dup 109 /m put ! dup 110 /n put ! dup 111 /o put ! dup 112 /p put ! dup 113 /q put ! dup 114 /r put ! dup 115 /s put ! dup 116 /t put ! dup 117 /u put ! dup 118 /v put ! dup 119 /w put ! dup 120 /x put ! dup 121 /y put ! dup 122 /z put ! dup 124 /emdash put readonly def /FontBBox{-251 -250 1009 969}readonly def currentdict end currentfile eexec *************** *** 3341,3423 **** cleartomark %%EndFont ! TeXDict begin 39158280 55380996 1000 600 600 (./gperf.dvi) ! @start /Fa 209[43 46[{ TeX74afc74cEncoding ReEncodeFont }1 ! 119.552 /CMBXTI10 rf /Fb 209[24 46[{ TeX74afc74cEncoding ReEncodeFont } ! 1 74.7198 /CMTI9 rf /Fc 130[39 1[39 39 39 39 39 1[39 ! 39 39 39 1[39 39 39 39 39 39 1[39 39 39 39 39 39 39 39 ! 39 1[39 39[39 9[39 7[39 37[{ TeX09fbbfacEncoding ReEncodeFont }29 ! 74.7198 /CMTT9 rf /Fd 133[34 41 1[55 41 43 30 30 30 1[43 ! 38 43 64 21 2[21 43 38 23 34 43 34 43 38 21 10[58 1[43 ! 4[58 70 48 60 39 28 2[50 1[59 55 54 58 7[38 38 38 1[38 ! 38 38 38 38 38 3[21 4[21 39[{ TeXf7b6d320Encoding ReEncodeFont }47 ! 74.7198 /CMR9 rf /Fe 147[25 10[44 97[{ ! TeXf7b6d320Encoding ReEncodeFont }2 90.9091 /CMB10 rf ! /Ff 214[35 35 40[{ TeXf7b6d320Encoding ReEncodeFont }2 ! 90.9091 /CMSS10 rf /Fg 136[83 2[45 45 47 2[57 64 4[32 ! 64 2[53 64 2[56 97[{ TeXf7b6d320Encoding ReEncodeFont }11 ! 99.6264 /CMBX10 rf /Fh 138[52 52 52 4[52 4[52 1[52 1[52 ! 52 100[{ TeX09fbbfacEncoding ReEncodeFont }8 99.6264 ! /CMTT10 rf /Fi 138[56 56 56 56 3[56 4[56 3[56 56 56 99[{ ! TeX09fbbfacEncoding ReEncodeFont }9 109.091 /CMTT12 ! rf /Fj 134[65 1[89 65 68 48 48 50 1[68 61 68 102 34 2[34 ! 68 61 37 56 68 55 1[60 9[127 1[94 6[96 2[96 1[46 1[96 ! 77 81 94 89 1[93 12[61 61 61 61 2[34 41 45[{ ! TeXf7b6d320Encoding ReEncodeFont }37 109.091 /CMBX12 ! rf /Fk 141[62 1[62 8[62 62 62 101[{ TeX09fbbfacEncoding ReEncodeFont }5 ! 119.552 /CMTT12 rf /Fl 133[37 44 42 1[42 49 30 37 38 ! 1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 4[47 ! 4[91 1[68 65 51 66 1[62 70 68 82 57 3[68 70 59 62 1[65 ! 1[68 6[28 11[28 33 5[28 4[47 34[{ TeX74afc74cEncoding ReEncodeFont }45 ! 90.9091 /CMTI10 rf /Fm 141[74 1[74 8[74 74 74 101[{ ! TeX09fbbfacEncoding ReEncodeFont }5 143.462 /CMTT12 ! rf /Fn 129[48 48 1[48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 2[48 1[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 ! 48 48 48 34[{ TeX09fbbfacEncoding ReEncodeFont }86 90.9091 ! /CMTT10 rf /Fo 133[40 48 1[66 48 51 35 36 36 1[51 45 ! 51 76 25 48 28 25 51 45 28 40 51 40 51 45 9[93 2[66 51 ! 8[47 3[59 2[66 17[45 2[25 30 5[25 26[51 12[{ ! TeXf7b6d320Encoding ReEncodeFont }35 90.9091 /CMSL10 ! rf /Fp 134[85 85 117 85 90 63 64 66 1[90 81 90 134 45 ! 85 1[45 90 81 49 74 90 72 90 78 11[124 112 90 120 1[110 ! 1[126 1[97 126 1[60 126 127 1[106 124 117 115 122 9[81 ! 81 81 81 81 81 81 3[54 45[{ TeXf7b6d320Encoding ReEncodeFont }47 ! 143.462 /CMBX12 rf /Fq 240[45 1[91 13[{ ! TeXbbad153fEncoding ReEncodeFont }2 90.9091 /CMSY10 ! rf /Fr 134[71 71 97 71 75 52 53 55 1[75 67 75 112 37 ! 71 1[37 75 67 41 61 75 60 75 65 7[102 1[139 1[103 94 ! 75 100 1[92 101 105 128 81 105 69 50 105 106 85 88 103 ! 97 96 102 7[67 67 67 67 67 67 67 67 67 67 1[37 45 37 ! 6[112 24[75 78 11[{ TeXf7b6d320Encoding ReEncodeFont }61 ! 119.552 /CMBX12 rf /Fs 131[91 1[40 48 48 66 48 51 35 ! 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 ! 45 25 2[25 45 25 1[68 68 93 68 68 66 51 67 71 62 71 68 ! 83 57 71 47 33 68 71 59 62 69 66 64 68 3[71 1[25 25 45 ! 45 45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 ! 71 1[45 76 45 19[76 51 51 53 11[{ TeXf7b6d320Encoding ReEncodeFont }85 ! 90.9091 /CMR10 rf /Ft 141[89 1[89 8[89 89 89 101[{ ! TeX09fbbfacEncoding ReEncodeFont }5 172.154 /CMTT12 ! rf /Fu 138[108 75 76 79 2[97 5[54 3[88 108 14[149 13[152 ! 19[97 1[97 97 1[54 6[54 39[{ TeXf7b6d320Encoding ReEncodeFont }15 ! 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin ! %%PaperSize: A4 end %%EndSetup %%Page: 1 1 ! TeXDict begin 1 0 bop 150 1318 a Fu(User's)65 b(Guide)g(to)f ! Ft(gperf)f Fu(3.0.1)p 150 1423 3600 34 v 2005 1519 a ! Fs(The)30 b(GNU)h(P)m(erfect)h(Hash)e(F)-8 b(unction)31 ! b(Generator)2662 1627 y(Edition)f(3.0.1,)j(12)e(June)e(2003)150 ! 4958 y Fr(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p 150 5141 3600 17 v eop end %%Page: 2 2 ! TeXDict begin 2 1 bop 150 4152 a Fs(Cop)m(yrigh)m(t)602 ! 4149 y(c)577 4152 y Fq(\015)30 b Fs(1989-2003)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 4286 y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d --- 3058,3124 ---- cleartomark %%EndFont ! TeXDict begin 39139632 55387786 1000 600 600 (../../cvs/doc/gperf.dvi) ! @start /Fa 209[43 46[{}1 119.552 /CMBXTI10 rf /Fb 135[41 ! 3[30 30 3[38 43 4[21 3[34 43 26[28 31[30 30 40[{}11 74.7198 ! /CMR9 rf /Fc 147[25 10[44 97[{}2 90.9091 /CMB10 rf /Fd ! 214[35 35 40[{}2 90.9091 /CMSS10 rf /Fe 136[83 2[45 45 ! 47 2[57 64 4[32 64 2[53 64 2[56 97[{}11 99.6264 /CMBX10 ! rf /Ff 138[52 52 52 4[52 4[52 1[52 1[52 52 100[{}8 99.6264 ! /CMTT10 rf /Fg 138[56 56 56 56 3[56 4[56 3[56 56 56 99[{}9 ! 109.091 /CMTT12 rf /Fh 134[65 1[89 65 68 48 48 50 1[68 ! 61 68 102 34 2[34 68 61 37 56 68 55 1[60 9[127 1[94 6[96 ! 2[96 1[46 1[96 77 81 94 89 1[93 12[61 61 61 61 2[34 41 ! 45[{}37 109.091 /CMBX12 rf /Fi 141[62 1[62 8[62 62 62 ! 101[{}5 119.552 /CMTT12 rf /Fj 133[37 44 42 1[42 49 30 ! 37 38 1[46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 ! 4[47 4[91 1[68 65 51 66 1[62 70 68 82 57 3[68 70 59 62 ! 1[65 1[68 6[28 11[28 33 5[28 4[47 34[{}45 90.9091 /CMTI10 ! rf /Fk 141[74 1[74 8[74 74 74 101[{}5 143.462 /CMTT12 ! rf /Fl 129[48 48 1[48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 2[48 1[48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 ! 48 48 48 34[{}86 90.9091 /CMTT10 rf /Fm 133[40 48 1[66 ! 48 51 35 36 36 1[51 45 51 76 25 48 28 25 51 45 28 40 ! 51 40 51 45 9[93 2[66 51 8[47 3[59 2[66 17[45 2[25 30 ! 5[25 26[51 12[{}35 90.9091 /CMSL10 rf /Fn 134[85 85 117 ! 85 90 63 64 66 1[90 81 90 134 45 85 1[45 90 81 49 74 ! 90 72 90 78 11[124 112 90 120 1[110 1[126 1[97 126 1[60 ! 126 127 1[106 124 117 115 122 9[81 81 81 81 81 81 81 ! 3[54 45[{}47 143.462 /CMBX12 rf /Fo 150[35 35 88[45 1[91 ! 13[{}4 90.9091 /CMSY10 rf /Fp 134[71 71 97 71 75 52 53 ! 55 1[75 67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 ! 7[102 1[139 1[103 94 75 100 1[92 101 105 128 81 105 1[50 ! 105 106 85 88 103 97 96 102 7[67 67 67 67 67 67 67 67 ! 67 67 1[37 45 37 31[75 78 11[{}59 119.552 /CMBX12 rf ! /Fq 131[91 1[40 48 48 66 48 51 35 36 36 48 51 45 51 76 ! 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25 45 25 1[68 ! 68 93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 ! 59 62 69 66 64 68 3[71 1[25 25 45 45 45 45 45 45 45 45 ! 45 45 45 25 30 25 1[45 35 35 25 71 1[45 76 45 19[76 51 ! 51 53 11[{}85 90.9091 /CMR10 rf /Fr 141[89 1[89 8[89 ! 89 89 101[{}5 172.154 /CMTT12 rf /Fs 138[108 75 76 79 ! 2[97 5[54 3[88 108 14[149 13[152 19[97 97 1[97 1[54 6[54 ! 39[{}15 172.154 /CMBX12 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin ! %%BeginPaperSize: a4 ! a4 ! %%EndPaperSize end %%EndSetup %%Page: 1 1 ! TeXDict begin 1 0 bop 150 1318 a Fs(User's)65 b(Guide)g(to)f ! Fr(gperf)f Fs(3.0.2)p 150 1423 3600 34 v 2005 1519 a ! Fq(The)30 b(GNU)h(P)m(erfect)h(Hash)e(F)-8 b(unction)31 ! b(Generator)2530 1627 y(Edition)g(3.0.2,)h(22)f(Jan)m(uary)f(2006)150 ! 4958 y Fp(Douglas)46 b(C.)f(Sc)l(hmidt)150 5091 y(Bruno)f(Haible)p 150 5141 3600 17 v eop end %%Page: 2 2 ! TeXDict begin 2 1 bop 150 4152 a Fq(Cop)m(yrigh)m(t)602 ! 4149 y(c)577 4152 y Fo(\015)30 b Fq(1989-2004)k(F)-8 b(ree)32 b(Soft)m(w)m(are)f(F)-8 b(oundation,)32 b(Inc.)150 4286 y(P)m(ermission)g(is)h(gran)m(ted)g(to)f(mak)m(e)i(and)d *************** *** 3443,3450 **** eop end %%Page: 1 3 ! TeXDict begin 1 2 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h ! (LICENSE)2052 b(1)150 299 y Fp(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 ! 564 y Fs(V)-8 b(ersion)31 b(2,)g(June)f(1991)390 720 ! y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fq(\015)g Fs(1989,)j(1991)f(F) -8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.,)390 824 y(59)g(T)-8 b(emple)31 b(Place,)h(Suite)e(330,)i(Boston,)g(MA)e --- 3144,3151 ---- eop end %%Page: 1 3 ! TeXDict begin 1 2 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h ! (LICENSE)2052 b(1)150 299 y Fn(GNU)54 b(GENERAL)g(PUBLIC)f(LICENSE)1537 ! 564 y Fq(V)-8 b(ersion)31 b(2,)g(June)f(1991)390 720 ! y(Cop)m(yrigh)m(t)842 717 y(c)817 720 y Fo(\015)g Fq(1989,)j(1991)f(F) -8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.,)390 824 y(59)g(T)-8 b(emple)31 b(Place,)h(Suite)e(330,)i(Boston,)g(MA)e *************** *** 3452,3457 **** (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1135 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f ! (is)f(not)h(allo)m(w)m(ed.)150 1462 y Fr(Pream)l(ble)275 ! 1683 y Fs(The)39 b(licenses)j(for)e(most)h(soft)m(w)m(are)g(are)g (designed)f(to)h(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d(freedom)g(to)h (share)g(and)150 1793 y(c)m(hange)g(it.)71 b(By)40 b(con)m(trast,)k --- 3153,3158 ---- (to)h(cop)m(y)g(and)f(distribute)g(v)m(erbatim)h(copies)390 1135 y(of)g(this)f(license)h(do)s(cumen)m(t,)g(but)e(c)m(hanging)j(it)f ! (is)f(not)h(allo)m(w)m(ed.)150 1462 y Fp(Pream)l(ble)275 ! 1683 y Fq(The)39 b(licenses)j(for)e(most)h(soft)m(w)m(are)g(are)g (designed)f(to)h(tak)m(e)h(a)m(w)m(a)m(y)h(y)m(our)d(freedom)g(to)h (share)g(and)150 1793 y(c)m(hange)g(it.)71 b(By)40 b(con)m(trast,)k *************** *** 3520,3527 **** (di\014cation)h(follo)m(w.)p eop end %%Page: 2 4 ! TeXDict begin 2 3 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h ! (LICENSE)2052 b(2)150 166 y Fr(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g (COPYING,)150 299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 ! b(TION)199 515 y Fs(0.)61 b(This)42 b(License)h(applies)f(to)i(an)m(y)f (program)f(or)g(other)h(w)m(ork)g(whic)m(h)f(con)m(tains)i(a)f(notice)g (placed)330 625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m --- 3221,3228 ---- (di\014cation)h(follo)m(w.)p eop end %%Page: 2 4 ! TeXDict begin 2 3 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h ! (LICENSE)2052 b(2)150 166 y Fp(TERMS)44 b(AND)h(CONDITIONS)g(F)l(OR)g (COPYING,)150 299 y(DISTRIBUTION)f(AND)h(MODIFICA)-11 ! b(TION)199 515 y Fq(0.)61 b(This)42 b(License)h(applies)f(to)i(an)m(y)f (program)f(or)g(other)h(w)m(ork)g(whic)m(h)f(con)m(tains)i(a)f(notice)g (placed)330 625 y(b)m(y)33 b(the)h(cop)m(yrigh)m(t)h(holder)e(sa)m *************** *** 3610,3614 **** eop end %%Page: 3 5 ! TeXDict begin 3 4 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(3)330 299 y(for)22 b(other)h(licensees)g(extend)g(to)g (the)f(en)m(tire)h(whole,)i(and)c(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m --- 3311,3315 ---- eop end %%Page: 3 5 ! TeXDict begin 3 4 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(3)330 299 y(for)22 b(other)h(licensees)g(extend)g(to)g (the)f(en)m(tire)h(whole,)i(and)c(th)m(us)h(to)h(eac)m(h)h(and)d(ev)m *************** *** 3700,3704 **** (the)i(Program\),)h(y)m(ou)p eop end %%Page: 4 6 ! TeXDict begin 4 5 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(4)330 299 y(indicate)33 b(y)m(our)g(acceptance)h(of)f (this)f(License)h(to)h(do)e(so,)h(and)f(all)h(its)g(terms)f(and)g --- 3401,3405 ---- (the)i(Program\),)h(y)m(ou)p eop end %%Page: 4 6 ! TeXDict begin 4 5 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(4)330 299 y(indicate)33 b(y)m(our)g(acceptance)h(of)f (this)f(License)h(to)h(do)e(so,)h(and)f(all)h(its)g(terms)f(and)g *************** *** 3791,3795 **** b(oundation.)p eop end %%Page: 5 7 ! TeXDict begin 5 6 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(5)154 299 y(10.)61 b(If)29 b(y)m(ou)g(wish)g(to)h (incorp)s(orate)g(parts)f(of)g(the)g(Program)h(in)m(to)g(other)g(free)f --- 3492,3496 ---- b(oundation.)p eop end %%Page: 5 7 ! TeXDict begin 5 6 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(5)154 299 y(10.)61 b(If)29 b(y)m(ou)g(wish)g(to)h (incorp)s(orate)g(parts)f(of)g(the)g(Program)h(in)m(to)g(other)g(free)f *************** *** 3801,3810 **** (F)-8 b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 y(dation;)29 b(w)m(e)f(sometimes)h(mak)m(e)f(exceptions)h(for)e(this.) ! 40 b(Our)26 b(decision)i(will)g(b)s(e)e(guided)i(b)m(y)f(the)h(t)m(w)m (o)330 737 y(goals)c(of)f(preserving)f(the)g(free)h(status)g(of)f(all)i (deriv)-5 b(ativ)m(es)24 b(of)e(our)g(free)h(soft)m(w)m(are)h(and)e(of) h(promoting)330 847 y(the)31 b(sharing)f(and)f(reuse)h(of)h(soft)m(w)m ! (are)h(generally)-8 b(.)330 995 y Fr(NO)45 b(W)-15 b(ARRANTY)154 ! 1187 y Fs(11.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g (FREE)g(OF)h(CHAR)m(GE,)h(THERE)e(IS)g(NO)330 1297 y(W)-10 b(ARRANTY)26 b(F)m(OR)f(THE)g(PR)m(OGRAM,)h(TO)e(THE)h(EXTENT)f --- 3502,3511 ---- (F)-8 b(ree)25 b(Soft)m(w)m(are)g(F)-8 b(oun-)330 628 y(dation;)29 b(w)m(e)f(sometimes)h(mak)m(e)f(exceptions)h(for)e(this.) ! 40 b(Our)26 b(decision)i(will)g(b)s(e)f(guided)g(b)m(y)g(the)h(t)m(w)m (o)330 737 y(goals)c(of)f(preserving)f(the)g(free)h(status)g(of)f(all)i (deriv)-5 b(ativ)m(es)24 b(of)e(our)g(free)h(soft)m(w)m(are)h(and)e(of) h(promoting)330 847 y(the)31 b(sharing)f(and)f(reuse)h(of)h(soft)m(w)m ! (are)h(generally)-8 b(.)330 995 y Fp(NO)45 b(W)-15 b(ARRANTY)154 ! 1187 y Fq(11.)61 b(BECA)m(USE)40 b(THE)f(PR)m(OGRAM)i(IS)e(LICENSED)g (FREE)g(OF)h(CHAR)m(GE,)h(THERE)e(IS)g(NO)330 1297 y(W)-10 b(ARRANTY)26 b(F)m(OR)f(THE)g(PR)m(OGRAM,)h(TO)e(THE)h(EXTENT)f *************** *** 3840,3850 **** (SUCH)330 3294 y(HOLDER)33 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)34 b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)330 ! 3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fr(END)45 b(OF)g(TERMS)f(AND)h (CONDITIONS)p eop end %%Page: 6 8 ! TeXDict begin 6 7 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h ! (LICENSE)2052 b(6)150 299 y Fr(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 ! 503 y Fs(If)38 b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m (ou)i(w)m(an)m(t)g(it)f(to)h(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible) d(use)h(to)150 612 y(the)i(public,)i(the)f(b)s(est)e(w)m(a)m(y)i(to)g --- 3541,3551 ---- (SUCH)330 3294 y(HOLDER)33 b(OR)h(OTHER)f(P)-8 b(AR)g(TY)34 b(HAS)f(BEEN)h(AD)m(VISED)g(OF)g(THE)f(POSSIBILITY)f(OF)330 ! 3404 y(SUCH)e(D)m(AMA)m(GES.)150 3661 y Fp(END)45 b(OF)g(TERMS)f(AND)h (CONDITIONS)p eop end %%Page: 6 8 ! TeXDict begin 6 7 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h ! (LICENSE)2052 b(6)150 299 y Fp(Ho)l(w)46 b(to)f(Apply)f(These)h(T)-11 b(erms)45 b(to)g(Y)-11 b(our)44 b(New)i(Programs)275 ! 503 y Fq(If)38 b(y)m(ou)i(dev)m(elop)g(a)f(new)g(program,)j(and)c(y)m (ou)i(w)m(an)m(t)g(it)f(to)h(b)s(e)f(of)g(the)h(greatest)h(p)s(ossible) d(use)h(to)150 612 y(the)i(public,)i(the)f(b)s(est)e(w)m(a)m(y)i(to)g *************** *** 3859,3866 **** b(ha)m(v)m(e)j(at)f(least)h(the)e(\\cop)m(yrigh)m(t")j(line)e(and)e(a)i (p)s(oin)m(ter)g(to)g(where)f(the)g(full)g(notice)i(is)e(found.)390 ! 1227 y Fo(one)h(line)f(to)h(giv)m(e)h(the)f(program's)f(name)h(and)e ! (an)i(idea)g(of)f(what)g(it)h(do)s(es.)390 1331 y Fn(Copyright)45 ! b(\(C\))i Fo(y)m(ear)103 b(name)30 b(of)h(author)390 ! 1539 y Fn(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h (redistribute)e(it)i(and/or)390 1642 y(modify)f(it)h(under)g(the)g (terms)f(of)h(the)g(GNU)g(General)f(Public)g(License)390 --- 3560,3567 ---- b(ha)m(v)m(e)j(at)f(least)h(the)e(\\cop)m(yrigh)m(t")j(line)e(and)e(a)i (p)s(oin)m(ter)g(to)g(where)f(the)g(full)g(notice)i(is)e(found.)390 ! 1227 y Fm(one)h(line)f(to)h(giv)m(e)h(the)f(program's)f(name)h(and)e ! (an)i(idea)g(of)f(what)g(it)h(do)s(es.)390 1331 y Fl(Copyright)45 ! b(\(C\))i Fm(y)m(ear)103 b(name)30 b(of)h(author)390 ! 1539 y Fl(This)47 b(program)e(is)j(free)e(software;)g(you)g(can)h (redistribute)e(it)i(and/or)390 1642 y(modify)f(it)h(under)g(the)g (terms)f(of)h(the)g(GNU)g(General)f(Public)g(License)390 *************** *** 3877,3898 **** (if)i(not,)g(write)f(to)i(the)e(Free)h(Software)390 2784 y(Foundation,)e(Inc.,)h(59)h(Temple)f(Place,)g(Suite)h(330,)f(Boston,)g ! (MA)h(02111-1307,)e(USA.)275 2930 y Fs(Also)31 b(add)e(information)i (on)f(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)j(and)d (pap)s(er)f(mail.)275 3076 y(If)f(the)g(program)h(is)f(in)m(teractiv)m (e,)k(mak)m(e)e(it)f(output)f(a)h(short)f(notice)i(lik)m(e)g(this)e (when)g(it)h(starts)g(in)f(an)150 3185 y(in)m(teractiv)m(e)33 ! b(mo)s(de:)390 3325 y Fn(Gnomovision)45 b(version)h(69,)g(Copyright)g ! (\(C\))h Fo(y)m(ear)103 b(name)30 b(of)g(author)390 3429 ! y Fn(Gnomovision)45 b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for) i(details)390 3533 y(type)g(`show)f(w'.)95 b(This)46 b(is)h(free)g(software,)e(and)i(you)g(are)g(welcome)390 3637 y(to)g(redistribute)e(it)i(under)f(certain)g(conditions;)f(type)h ! (`show)h(c')390 3740 y(for)g(details.)275 3886 y Fs(The)27 ! b(h)m(yp)s(othetical)i(commands)f(`)p Fn(show)h(w)p Fs(')f(and)f(`)p ! Fn(show)j(c)p Fs(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of) 150 3996 y(the)38 b(General)h(Public)e(License.)64 b(Of)37 b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m(y)g(b)s(e)f(called)i ! (something)150 4106 y(other)25 b(than)f(`)p Fn(show)29 ! b(w)p Fs(')c(and)f(`)p Fn(show)29 b(c)p Fs(';)e(they)d(could)h(ev)m(en) g(b)s(e)f(mouse-clic)m(ks)i(or)f(men)m(u)f(items|whatev)m(er)150 4215 y(suits)30 b(y)m(our)g(program.)275 4361 y(Y)-8 --- 3578,3599 ---- (if)i(not,)g(write)f(to)i(the)e(Free)h(Software)390 2784 y(Foundation,)e(Inc.,)h(59)h(Temple)f(Place,)g(Suite)h(330,)f(Boston,)g ! (MA)h(02111-1307,)e(USA.)275 2930 y Fq(Also)31 b(add)e(information)i (on)f(ho)m(w)h(to)g(con)m(tact)i(y)m(ou)d(b)m(y)g(electronic)j(and)d (pap)s(er)f(mail.)275 3076 y(If)f(the)g(program)h(is)f(in)m(teractiv)m (e,)k(mak)m(e)e(it)f(output)f(a)h(short)f(notice)i(lik)m(e)g(this)e (when)g(it)h(starts)g(in)f(an)150 3185 y(in)m(teractiv)m(e)33 ! b(mo)s(de:)390 3325 y Fl(Gnomovision)45 b(version)h(69,)g(Copyright)g ! (\(C\))h Fm(y)m(ear)103 b(name)30 b(of)g(author)390 3429 ! y Fl(Gnomovision)45 b(comes)h(with)h(ABSOLUTELY)e(NO)i(WARRANTY;)e(for) i(details)390 3533 y(type)g(`show)f(w'.)95 b(This)46 b(is)h(free)g(software,)e(and)i(you)g(are)g(welcome)390 3637 y(to)g(redistribute)e(it)i(under)f(certain)g(conditions;)f(type)h ! (`show)h(c')390 3740 y(for)g(details.)275 3886 y Fq(The)27 ! b(h)m(yp)s(othetical)i(commands)f(`)p Fl(show)h(w)p Fq(')f(and)f(`)p ! Fl(show)j(c)p Fq(')d(should)g(sho)m(w)h(the)g(appropriate)g(parts)g(of) 150 3996 y(the)38 b(General)h(Public)e(License.)64 b(Of)37 b(course,)j(the)f(commands)e(y)m(ou)h(use)g(ma)m(y)g(b)s(e)f(called)i ! (something)150 4106 y(other)25 b(than)f(`)p Fl(show)29 ! b(w)p Fq(')c(and)f(`)p Fl(show)29 b(c)p Fq(';)e(they)d(could)h(ev)m(en) g(b)s(e)f(mouse-clic)m(ks)i(or)f(men)m(u)f(items|whatev)m(er)150 4215 y(suits)30 b(y)m(our)g(program.)275 4361 y(Y)-8 *************** *** 3902,3913 **** (disclaimer")e(for)g(the)f(program,)h(if)g(necessary)-8 b(.)51 b(Here)34 b(is)f(a)h(sample;)h(alter)g(the)150 ! 4580 y(names:)390 4720 y Fn(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f (all)i(copyright)390 4824 y(interest)f(in)h(the)g(program)e (`Gnomovision')390 4928 y(\(which)h(makes)g(passes)h(at)g(compilers\))e ! (written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fo(signature)31 ! b(of)f(T)m(y)h(Co)s(on)p Fn(,)47 b(1)g(April)g(1989)390 5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop end %%Page: 7 9 ! TeXDict begin 7 8 bop 150 -116 a Fs(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(7)275 299 y(This)20 b(General)h(Public)g(License)g(do)s (es)g(not)g(p)s(ermit)f(incorp)s(orating)h(y)m(our)g(program)f(in)m(to) --- 3603,3614 ---- (disclaimer")e(for)g(the)f(program,)h(if)g(necessary)-8 b(.)51 b(Here)34 b(is)f(a)h(sample;)h(alter)g(the)150 ! 4580 y(names:)390 4720 y Fl(Yoyodyne,)45 b(Inc.,)i(hereby)f(disclaims)f (all)i(copyright)390 4824 y(interest)f(in)h(the)g(program)e (`Gnomovision')390 4928 y(\(which)h(makes)g(passes)h(at)g(compilers\))e ! (written)390 5032 y(by)i(James)g(Hacker.)390 5239 y Fm(signature)31 ! b(of)f(T)m(y)h(Co)s(on)p Fl(,)47 b(1)g(April)g(1989)390 5343 y(Ty)g(Coon,)g(President)e(of)i(Vice)p eop end %%Page: 7 9 ! TeXDict begin 7 8 bop 150 -116 a Fq(GNU)31 b(GENERAL)f(PUBLIC)h (LICENSE)2052 b(7)275 299 y(This)20 b(General)h(Public)g(License)g(do)s (es)g(not)g(p)s(ermit)f(incorp)s(orating)h(y)m(our)g(program)f(in)m(to) *************** *** 3920,3929 **** (instead)f(of)h(this)f(License.)p eop end %%Page: 8 10 ! TeXDict begin 8 9 bop 150 -116 a Fs(Con)m(tributors)30 ! b(to)h(GNU)g Fn(gperf)e Fs(Utilit)m(y)2140 b(8)150 299 ! y Fp(Con)l(tributors)50 b(to)j(GNU)h Fm(gperf)f Fp(Utilit)l(y)225 ! 533 y Fq(\017)60 b Fs(The)45 b(GNU)h Fn(gperf)d Fs(p)s(erfect)j(hash)e (function)h(generator)i(utilit)m(y)f(w)m(as)g(written)f(in)g(GNU)h(C)p ! Fn(++)330 643 y Fs(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83 b(The)44 b(general)i(idea)f(for)f(the)h(p)s(erfect)g(hash)e(function)i (generator)330 752 y(w)m(as)34 b(inspired)e(b)m(y)h(Keith)g(Bostic's)j --- 3621,3630 ---- (instead)f(of)h(this)f(License.)p eop end %%Page: 8 10 ! TeXDict begin 8 9 bop 150 -116 a Fq(Con)m(tributors)30 ! b(to)h(GNU)g Fl(gperf)e Fq(Utilit)m(y)2140 b(8)150 299 ! y Fn(Con)l(tributors)50 b(to)j(GNU)h Fk(gperf)f Fn(Utilit)l(y)225 ! 533 y Fo(\017)60 b Fq(The)45 b(GNU)h Fl(gperf)d Fq(p)s(erfect)j(hash)e (function)h(generator)i(utilit)m(y)f(w)m(as)g(written)f(in)g(GNU)h(C)p ! Fl(++)330 643 y Fq(b)m(y)e(Douglas)i(C.)f(Sc)m(hmidt.)83 b(The)44 b(general)i(idea)f(for)f(the)h(p)s(erfect)g(hash)e(function)i (generator)330 752 y(w)m(as)34 b(inspired)e(b)m(y)h(Keith)g(Bostic's)j *************** *** 3934,3939 **** (the)f(Univ)m(ersit)m(y)h(of)g(California,)h(Irvine.)330 1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)h(should)f(b)s(e)f ! (rep)s(orted)h(to)h Fn()p Fs(.)225 ! 1215 y Fq(\017)60 b Fs(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h (Mic)m(hael)h(Tiemann)e(and)g(Doug)h(Lea,)g(for)f(pro)m(viding)g(a)h (useful)330 1325 y(compiler,)d(and)f(for)g(giving)h(me)g(a)g(forum)e --- 3635,3640 ---- (the)f(Univ)m(ersit)m(y)h(of)g(California,)h(Irvine.)330 1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)h(should)f(b)s(e)f ! (rep)s(orted)h(to)h Fl()p Fq(.)225 ! 1215 y Fo(\017)60 b Fq(Sp)s(ecial)33 b(thanks)g(is)g(extended)g(to)h (Mic)m(hael)h(Tiemann)e(and)g(Doug)h(Lea,)g(for)f(pro)m(viding)g(a)h (useful)330 1325 y(compiler,)d(and)f(for)g(giving)h(me)g(a)g(forum)e *************** *** 3942,3946 **** (and)g(insigh)m(ts)h(that)g(greatly)330 1569 y(help)s(ed)29 b(impro)m(v)m(e)j(the)e(qualit)m(y)i(and)e(functionalit)m(y)h(of)g ! Fn(gperf)p Fs(.)225 1704 y Fq(\017)60 b Fs(Bruno)26 b(Haible)i (enhanced)f(and)f(optimized)i(the)f(searc)m(h)h(algorithm.)41 b(He)27 b(also)h(rewrote)g(the)f(input)330 1813 y(routines)j(and)g(the) --- 3643,3647 ---- (and)g(insigh)m(ts)h(that)g(greatly)330 1569 y(help)s(ed)29 b(impro)m(v)m(e)j(the)e(qualit)m(y)i(and)e(functionalit)m(y)h(of)g ! Fl(gperf)p Fq(.)225 1704 y Fo(\017)60 b Fq(Bruno)26 b(Haible)i (enhanced)f(and)f(optimized)i(the)f(searc)m(h)h(algorithm.)41 b(He)27 b(also)h(rewrote)g(the)f(input)330 1813 y(routines)j(and)g(the) *************** *** 3948,3995 **** b(,)33 b(and)d(added)g(a)h(testsuite.)p eop end %%Page: 9 11 ! TeXDict begin 9 10 bop 150 -116 a Fs(Chapter)30 b(1:)41 ! b(In)m(tro)s(duction)2592 b(9)150 299 y Fp(1)80 b(In)l(tro)t(duction) ! 275 533 y Fn(gperf)31 b Fs(is)j(a)f(p)s(erfect)h(hash)e(function)h ! (generator)i(written)e(in)g(C)p Fn(++)p Fs(.)49 b(It)33 ! b(transforms)g(an)g Fo(n)f Fs(elemen)m(t)150 643 y(user-sp)s(eci\014ed) ! k(k)m(eyw)m(ord)i(set)g Fo(W)49 b Fs(in)m(to)39 b(a)e(p)s(erfect)h ! (hash)e(function)h Fo(F)p Fs(.)h Fo(F)44 b Fs(uniquely)37 ! b(maps)g(k)m(eyw)m(ords)150 752 y(in)e Fo(W)47 b Fs(on)m(to)36 ! b(the)f(range)g(0..)p Fo(k)p Fs(,)j(where)c Fo(k)40 b ! Fn(>)p Fs(=)35 b Fo(n-1)p Fs(.)54 b(If)35 b Fo(k)40 b ! Fs(=)35 b Fo(n-1)42 b Fs(then)35 b Fo(F)42 b Fs(is)35 ! b(a)g Fl(minimal)46 b Fs(p)s(erfect)35 b(hash)150 862 ! y(function.)68 b Fn(gperf)39 b Fs(generates)i(a)f(0..)p ! Fo(k)46 b Fs(elemen)m(t)41 b(static)g(lo)s(okup)f(table)g(and)f(a)i (pair)e(of)h(C)f(functions.)150 971 y(These)34 b(functions)g(determine) ! h(whether)e(a)i(giv)m(en)g(c)m(haracter)h(string)f Fo(s)j ! Fs(o)s(ccurs)c(in)g Fo(W)p Fs(,)h(using)e(at)j(most)150 1081 y(one)31 b(prob)s(e)e(in)m(to)i(the)g(lo)s(okup)f(table.)275 ! 1215 y Fn(gperf)22 b Fs(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h (k)m(eyw)m(ord)g(recognizer)i(for)d(lexical)j(analyzers)e(in)g(sev)m (eral)150 1325 y(pro)s(duction)30 b(and)g(researc)m(h)h(compilers)g (and)g(language)h(pro)s(cessing)e(to)s(ols,)i(including)e(GNU)i(C,)e ! (GNU)150 1435 y(C)p Fn(++)p Fs(,)24 b(GNU)f(Ja)m(v)-5 b(a,)26 b(GNU)d(P)m(ascal,)j(GNU)e(Mo)s(dula)f(3,)i(and)d(GNU)h(inden)m ! (t.)38 b(Complete)24 b(C)p Fn(++)e Fs(source)h(co)s(de)150 ! 1544 y(for)42 b Fn(gperf)f Fs(is)h(a)m(v)-5 b(ailable)44 ! b(from)e Fn(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p ! Fs(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fn(gperf)p ! Fs('s)d(design)i(and)f(implemen)m(tation)j(in)d(greater)i(detail)g(is)f (a)m(v)-5 b(ailable)42 b(in)e(the)g(Second)f(USENIX)150 ! 1763 y(C)p Fn(++)29 b Fs(Conference)g(pro)s(ceedings)h(or)g(from)f ! Fn(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p ! Fs(.)p eop end %%Page: 10 12 ! TeXDict begin 10 11 bop 150 -116 a Fs(Chapter)30 b(2:)41 ! b(Static)32 b(searc)m(h)f(structures)e(and)h(GNU)h Fn(gperf)1425 ! b Fs(10)150 299 y Fp(2)80 b(Static)53 b(searc)l(h)g(structures)e(and)j ! (GNU)f Fm(gperf)275 533 y Fs(A)24 b Fo(static)i(searc)m(h)f(structure)k ! Fs(is)c(an)f(Abstract)h(Data)i(T)m(yp)s(e)c(with)i(certain)g(fundamen)m ! (tal)f(op)s(erations,)150 643 y(e.g.,)32 b Fl(initialize)p ! Fs(,)g Fl(insert)p Fs(,)f(and)f Fl(r)-5 b(etrieve)p Fs(.)42 b(Conceptually)-8 b(,)32 b(all)g(insertions)f(o)s(ccur)f(b)s(efore)h (an)m(y)g(retriev)-5 b(als.)150 752 y(In)20 b(practice,)25 ! b Fn(gperf)19 b Fs(generates)k(a)e Fl(static)27 b Fs(arra)m(y)22 b(con)m(taining)g(searc)m(h)g(set)f(k)m(eyw)m(ords)h(and)e(an)m(y)h (asso)s(ciated)150 862 y(attributes)37 b(sp)s(eci\014ed)f(b)m(y)h(the)f --- 3649,3696 ---- b(,)33 b(and)d(added)g(a)h(testsuite.)p eop end %%Page: 9 11 ! TeXDict begin 9 10 bop 150 -116 a Fq(Chapter)30 b(1:)41 ! b(In)m(tro)s(duction)2592 b(9)150 299 y Fn(1)80 b(In)l(tro)t(duction) ! 275 533 y Fl(gperf)31 b Fq(is)j(a)f(p)s(erfect)h(hash)e(function)h ! (generator)i(written)e(in)g(C)p Fl(++)p Fq(.)49 b(It)33 ! b(transforms)g(an)g Fm(n)f Fq(elemen)m(t)150 643 y(user-sp)s(eci\014ed) ! k(k)m(eyw)m(ord)i(set)g Fm(W)49 b Fq(in)m(to)39 b(a)e(p)s(erfect)h ! (hash)e(function)h Fm(F)p Fq(.)h Fm(F)44 b Fq(uniquely)37 ! b(maps)g(k)m(eyw)m(ords)150 752 y(in)e Fm(W)47 b Fq(on)m(to)36 ! b(the)f(range)g(0..)p Fm(k)p Fq(,)j(where)c Fm(k)40 b ! Fl(>)p Fq(=)35 b Fm(n-1)p Fq(.)54 b(If)35 b Fm(k)40 b ! Fq(=)35 b Fm(n-1)42 b Fq(then)35 b Fm(F)42 b Fq(is)35 ! b(a)g Fj(minimal)46 b Fq(p)s(erfect)35 b(hash)150 862 ! y(function.)68 b Fl(gperf)39 b Fq(generates)i(a)f(0..)p ! Fm(k)46 b Fq(elemen)m(t)41 b(static)g(lo)s(okup)f(table)g(and)f(a)i (pair)e(of)h(C)f(functions.)150 971 y(These)34 b(functions)g(determine) ! h(whether)e(a)i(giv)m(en)g(c)m(haracter)h(string)f Fm(s)j ! Fq(o)s(ccurs)c(in)g Fm(W)p Fq(,)h(using)e(at)j(most)150 1081 y(one)31 b(prob)s(e)e(in)m(to)i(the)g(lo)s(okup)f(table.)275 ! 1215 y Fl(gperf)22 b Fq(curren)m(tly)h(generates)j(the)d(reserv)m(ed)h (k)m(eyw)m(ord)g(recognizer)i(for)d(lexical)j(analyzers)e(in)g(sev)m (eral)150 1325 y(pro)s(duction)30 b(and)g(researc)m(h)h(compilers)g (and)g(language)h(pro)s(cessing)e(to)s(ols,)i(including)e(GNU)i(C,)e ! (GNU)150 1435 y(C)p Fl(++)p Fq(,)24 b(GNU)f(Ja)m(v)-5 b(a,)26 b(GNU)d(P)m(ascal,)j(GNU)e(Mo)s(dula)f(3,)i(and)d(GNU)h(inden)m ! (t.)38 b(Complete)24 b(C)p Fl(++)e Fq(source)h(co)s(de)150 ! 1544 y(for)42 b Fl(gperf)f Fq(is)h(a)m(v)-5 b(ailable)44 ! b(from)e Fl(http://ftp.gnu.org/pub/g)o(nu/g)o(perf)o(/)p ! Fq(.)70 b(A)42 b(pap)s(er)f(describing)150 1654 y Fl(gperf)p ! Fq('s)d(design)i(and)f(implemen)m(tation)j(in)d(greater)i(detail)g(is)f (a)m(v)-5 b(ailable)42 b(in)e(the)g(Second)f(USENIX)150 ! 1763 y(C)p Fl(++)29 b Fq(Conference)g(pro)s(ceedings)h(or)g(from)f ! Fl(http://www.cs.wustl.edu)o(/~sc)o(hmid)o(t/r)o(esum)o(e.ht)o(ml)p ! Fq(.)p eop end %%Page: 10 12 ! TeXDict begin 10 11 bop 150 -116 a Fq(Chapter)30 b(2:)41 ! b(Static)32 b(searc)m(h)f(structures)e(and)h(GNU)h Fl(gperf)1425 ! b Fq(10)150 299 y Fn(2)80 b(Static)53 b(searc)l(h)g(structures)e(and)j ! (GNU)f Fk(gperf)275 533 y Fq(A)24 b Fm(static)i(searc)m(h)f(structure)k ! Fq(is)c(an)f(Abstract)h(Data)i(T)m(yp)s(e)c(with)i(certain)g(fundamen)m ! (tal)f(op)s(erations,)150 643 y(e.g.,)32 b Fj(initialize)p ! Fq(,)g Fj(insert)p Fq(,)f(and)f Fj(r)-5 b(etrieve)p Fq(.)42 b(Conceptually)-8 b(,)32 b(all)g(insertions)f(o)s(ccur)f(b)s(efore)h (an)m(y)g(retriev)-5 b(als.)150 752 y(In)20 b(practice,)25 ! b Fl(gperf)19 b Fq(generates)k(a)e Fj(static)27 b Fq(arra)m(y)22 b(con)m(taining)g(searc)m(h)g(set)f(k)m(eyw)m(ords)h(and)e(an)m(y)h (asso)s(ciated)150 862 y(attributes)37 b(sp)s(eci\014ed)f(b)m(y)h(the)f *************** *** 3997,4001 **** (execution-time)i(cost)e(for)g(the)150 971 y(insertions.)j(It)27 b(is)g(a)g(useful)g(data)g(structure)g(for)g(represen)m(ting)g ! Fl(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fs(.)40 b(Static)28 b(searc)m(h)g(sets)150 1081 y(o)s(ccur)c(frequen)m(tly)h(in)f(soft)m(w) m(are)i(system)e(applications.)40 b(T)m(ypical)25 b(static)h(searc)m(h) --- 3698,3702 ---- (execution-time)i(cost)e(for)g(the)150 971 y(insertions.)j(It)27 b(is)g(a)g(useful)g(data)g(structure)g(for)g(represen)m(ting)g ! Fj(static)j(se)-5 b(ar)g(ch)32 b(sets)p Fq(.)40 b(Static)28 b(searc)m(h)g(sets)150 1081 y(o)s(ccur)c(frequen)m(tly)h(in)f(soft)m(w) m(are)i(system)e(applications.)40 b(T)m(ypical)25 b(static)h(searc)m(h) *************** *** 4003,4008 **** b(w)m(ords,)j(assem)m(bler)e(instruction)f(op)s(co)s(des,)j(and)c (built-in)h(shell)h(in)m(terpreter)f(commands.)150 1300 ! y(Searc)m(h)g(set)g(mem)m(b)s(ers,)h(called)g Fo(k)m(eyw)m(ords)p ! Fs(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k (usually)150 1410 y(during)29 b(program)h(initialization,)k(and)c(are)g (not)h(generally)h(mo)s(di\014ed)d(at)i(run-time.)275 --- 3704,3709 ---- b(w)m(ords,)j(assem)m(bler)e(instruction)f(op)s(co)s(des,)j(and)c (built-in)h(shell)h(in)m(terpreter)f(commands.)150 1300 ! y(Searc)m(h)g(set)g(mem)m(b)s(ers,)h(called)g Fm(k)m(eyw)m(ords)p ! Fq(,)i(are)c(inserted)h(in)m(to)g(the)g(structure)f(only)g(once,)k (usually)150 1410 y(during)29 b(program)h(initialization,)k(and)c(are)g (not)h(generally)h(mo)s(di\014ed)d(at)i(run-time.)275 *************** *** 4013,4042 **** (trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)g(and)f (searc)m(h)g(time)g(e\016ciency)-8 b(.)77 b(F)-8 b(or)42 ! b(example,)k(an)41 b Fo(n)h Fs(elemen)m(t)h(sorted)150 1873 y(arra)m(y)d(is)g(space)h(e\016cien)m(t,)i(though)d(the)g(a)m(v)m (erage-case)k(time)c(complexit)m(y)i(for)e(retriev)-5 b(al)41 b(op)s(erations)150 1983 y(using)31 b(binary)f(searc)m(h)i(is)f ! (prop)s(ortional)g(to)g(log)i Fo(n)p Fs(.)42 b(Con)m(v)m(ersely)-8 b(,)33 b(hash)d(table)i(implemen)m(tations)h(often)150 2092 y(lo)s(cate)27 b(a)f(table)g(en)m(try)g(in)f(constan)m(t)i(time,)g (but)e(t)m(ypically)i(imp)s(ose)e(additional)i(memory)e(o)m(v)m(erhead) i(and)150 2202 y(exhibit)k(p)s(o)s(or)e(w)m(orst)i(case)g(p)s ! (erformance.)275 2336 y Fl(Minimal)26 b(p)-5 b(erfe)g(ct)28 ! b(hash)f(functions)32 b Fs(pro)m(vide)24 b(an)f(optimal)i(solution)f (for)f(a)h(particular)g(class)h(of)e(static)150 2446 y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)f(p)s(erfect)g(hash)g (function)g(is)h(de\014ned)e(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225 ! 2580 y Fq(\017)60 b Fs(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition) h(in)e(a)h(static)h(searc)m(h)f(set)g(using)f(at)h(most)g ! Fl(one)41 b Fs(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30 b(table.)41 b(This)30 b(represen)m(ts)g(the)h(\\p)s(erfect")g(prop)s ! (ert)m(y)-8 b(.)225 2824 y Fq(\017)60 b Fs(The)35 b(actual)j(memory)e (allo)s(cated)i(to)e(store)h(the)f(k)m(eyw)m(ords)h(is)f(precisely)g (large)h(enough)f(for)g(the)330 2934 y(k)m(eyw)m(ord)31 ! b(set,)g(and)f Fl(no)j(lar)-5 b(ger)p Fs(.)42 b(This)29 b(is)i(the)f(\\minimal")i(prop)s(ert)m(y)-8 b(.)275 3093 y(F)g(or)38 b(most)g(applications)h(it)f(is)g(far)f(easier)i(to)f ! (generate)h Fl(p)-5 b(erfe)g(ct)47 b Fs(hash)37 b(functions)g(than)h ! Fl(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fs(hash)36 b(functions.)60 b(Moreo)m(v)m(er,)41 b(non-minimal)c(p)s(erfect)g(hash) f(functions)g(frequen)m(tly)i(execute)150 3313 y(faster)44 --- 3714,3743 ---- (trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)g(and)f (searc)m(h)g(time)g(e\016ciency)-8 b(.)77 b(F)-8 b(or)42 ! b(example,)k(an)41 b Fm(n)h Fq(elemen)m(t)h(sorted)150 1873 y(arra)m(y)d(is)g(space)h(e\016cien)m(t,)i(though)d(the)g(a)m(v)m (erage-case)k(time)c(complexit)m(y)i(for)e(retriev)-5 b(al)41 b(op)s(erations)150 1983 y(using)31 b(binary)f(searc)m(h)i(is)f ! (prop)s(ortional)g(to)g(log)i Fm(n)p Fq(.)42 b(Con)m(v)m(ersely)-8 b(,)33 b(hash)d(table)i(implemen)m(tations)h(often)150 2092 y(lo)s(cate)27 b(a)f(table)g(en)m(try)g(in)f(constan)m(t)i(time,)g (but)e(t)m(ypically)i(imp)s(ose)e(additional)i(memory)e(o)m(v)m(erhead) i(and)150 2202 y(exhibit)k(p)s(o)s(or)e(w)m(orst)i(case)g(p)s ! (erformance.)275 2336 y Fj(Minimal)26 b(p)-5 b(erfe)g(ct)28 ! b(hash)f(functions)32 b Fq(pro)m(vide)24 b(an)f(optimal)i(solution)f (for)f(a)h(particular)g(class)h(of)e(static)150 2446 y(searc)m(h)31 b(sets.)41 b(A)31 b(minimal)f(p)s(erfect)g(hash)g (function)g(is)h(de\014ned)e(b)m(y)h(t)m(w)m(o)i(prop)s(erties:)225 ! 2580 y Fo(\017)60 b Fq(It)34 b(allo)m(ws)i(k)m(eyw)m(ord)f(recognition) h(in)e(a)h(static)h(searc)m(h)f(set)g(using)f(at)h(most)g ! Fj(one)41 b Fq(prob)s(e)33 b(in)m(to)j(the)330 2690 y(hash)30 b(table.)41 b(This)30 b(represen)m(ts)g(the)h(\\p)s(erfect")g(prop)s ! (ert)m(y)-8 b(.)225 2824 y Fo(\017)60 b Fq(The)35 b(actual)j(memory)e (allo)s(cated)i(to)e(store)h(the)f(k)m(eyw)m(ords)h(is)f(precisely)g (large)h(enough)f(for)g(the)330 2934 y(k)m(eyw)m(ord)31 ! b(set,)g(and)f Fj(no)j(lar)-5 b(ger)p Fq(.)42 b(This)29 b(is)i(the)f(\\minimal")i(prop)s(ert)m(y)-8 b(.)275 3093 y(F)g(or)38 b(most)g(applications)h(it)f(is)g(far)f(easier)i(to)f ! (generate)h Fj(p)-5 b(erfe)g(ct)47 b Fq(hash)37 b(functions)g(than)h ! Fj(minimal)150 3203 y(p)-5 b(erfe)g(ct)47 b Fq(hash)36 b(functions.)60 b(Moreo)m(v)m(er,)41 b(non-minimal)c(p)s(erfect)g(hash) f(functions)g(frequen)m(tly)i(execute)150 3313 y(faster)44 *************** *** 4046,4053 **** (of)h(lo)s(cating)h(a)e(\\n)m(ull")i(en)m(try)-8 b(,)35 b(thereb)m(y)e(reducing)g(string)150 3532 y(comparisons.)56 ! b Fn(gperf)p Fs('s)34 b(default)h(b)s(eha)m(vior)g(generates)i ! Fl(ne)-5 b(ar-minimal)47 b Fs(p)s(erfect)35 b(hash)f(functions)h(for) 150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44 ! b Fn(gperf)39 b Fs(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f (user)g(con)m(trol)i(o)m(v)m(er)g(the)150 3751 y(degree)31 b(of)g(minimalit)m(y)g(and)f(p)s(erfection.)275 3885 --- 3747,3754 ---- (of)h(lo)s(cating)h(a)e(\\n)m(ull")i(en)m(try)-8 b(,)35 b(thereb)m(y)e(reducing)g(string)150 3532 y(comparisons.)56 ! b Fl(gperf)p Fq('s)34 b(default)h(b)s(eha)m(vior)g(generates)i ! Fj(ne)-5 b(ar-minimal)47 b Fq(p)s(erfect)35 b(hash)f(functions)h(for) 150 3641 y(k)m(eyw)m(ord)40 b(sets.)68 b(Ho)m(w)m(ev)m(er,)44 ! b Fl(gperf)39 b Fq(pro)m(vides)g(man)m(y)h(options)f(that)h(p)s(ermit)f (user)g(con)m(trol)i(o)m(v)m(er)g(the)150 3751 y(degree)31 b(of)g(minimalit)m(y)g(and)f(p)s(erfection.)275 3885 *************** *** 4058,4091 **** (decade.)42 b(It)31 b(is)g(therefore)g(frequen)m(tly)g(w)m(orth-)150 4105 y(while)22 b(to)h(exp)s(end)e(concerted)i(e\013ort)g(building)e ! (an)h(optimal)i(searc)m(h)e(structure)g Fl(onc)-5 b(e)p ! Fs(,)25 b(if)d(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)f ! (use)e(m)m(ultiple)i(times.)39 b Fn(gperf)22 b Fs(remo)m(v)m(es)i(the)f (drudgery)f(asso)s(ciated)j(with)d(constructing)150 4324 y(time-)38 b(and)f(space-e\016cien)m(t)j(searc)m(h)d(structures)g(b)m (y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)g(and)f (practical)150 4433 y(to)s(ol)29 b(for)f(serious)g(programming)g(pro)5 ! b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(is)i(curren)m(tly)h (used)e(in)h(sev)m(eral)h(pro-)150 4543 y(duction)d(and)e(researc)m(h)j ! (compilers,)g(including)e(GNU)h(C,)g(GNU)g(C)p Fn(++)p ! Fs(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)j(and)150 4653 y(GNU)38 b(Mo)s(dula)f(3.)63 b(The)36 b(latter)j(t)m(w)m(o)g (compilers)f(are)f(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)h(GNU)f (distribu-)150 4762 y(tion.)51 b(Eac)m(h)34 b(compiler)g(utilizes)h ! Fn(gperf)d Fs(to)i(automatically)i(generate)f(static)g(searc)m(h)f (structures)f(that)150 4872 y(e\016cien)m(tly)f(iden)m(tify)f(their)f (resp)s(ectiv)m(e)i(reserv)m(ed)e(k)m(eyw)m(ords.)p eop end %%Page: 11 13 ! TeXDict begin 11 12 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(11)150 299 y Fp(3)80 b(High-Lev)l(el)52 b(Description)f(of)j(GNU)g ! Fm(gperf)275 539 y Fs(The)29 b(p)s(erfect)h(hash)g(function)g ! (generator)h Fn(gperf)e Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i (from)d(an)i(input)e(\014le)150 648 y(\(or)34 b(from)g(the)g(standard)f (input)g(b)m(y)h(default\).)52 b(It)34 b(attempts)h(to)f(deriv)m(e)h(a) f(p)s(erfect)g(hashing)f(function)150 758 y(that)k(recognizes)i(a)e ! (mem)m(b)s(er)f(of)h(the)g Fo(static)h(k)m(eyw)m(ord)f(set)j ! Fs(with)c(at)i(most)f(a)g(single)g(prob)s(e)f(in)m(to)i(the)150 ! 867 y(lo)s(okup)26 b(table.)41 b(If)26 b Fn(gperf)f Fs(succeeds)i(in)g (generating)h(suc)m(h)e(a)h(function)f(it)i(pro)s(duces)d(a)i(pair)g (of)f(C)h(source)150 977 y(co)s(de)39 b(routines)g(that)h(p)s(erform)d --- 3759,3792 ---- (decade.)42 b(It)31 b(is)g(therefore)g(frequen)m(tly)g(w)m(orth-)150 4105 y(while)22 b(to)h(exp)s(end)e(concerted)i(e\013ort)g(building)e ! (an)h(optimal)i(searc)m(h)e(structure)g Fj(onc)-5 b(e)p ! Fq(,)25 b(if)d(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)f ! (use)e(m)m(ultiple)i(times.)39 b Fl(gperf)22 b Fq(remo)m(v)m(es)i(the)f (drudgery)f(asso)s(ciated)j(with)d(constructing)150 4324 y(time-)38 b(and)f(space-e\016cien)m(t)j(searc)m(h)d(structures)g(b)m (y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)g(and)f (practical)150 4433 y(to)s(ol)29 b(for)f(serious)g(programming)g(pro)5 ! b(jects.)40 b(Output)27 b(from)h Fl(gperf)e Fq(is)i(curren)m(tly)h (used)e(in)h(sev)m(eral)h(pro-)150 4543 y(duction)d(and)e(researc)m(h)j ! (compilers,)g(including)e(GNU)h(C,)g(GNU)g(C)p Fl(++)p ! Fq(,)g(GNU)g(Ja)m(v)-5 b(a,)28 b(GNU)e(P)m(ascal,)j(and)150 4653 y(GNU)38 b(Mo)s(dula)f(3.)63 b(The)36 b(latter)j(t)m(w)m(o)g (compilers)f(are)f(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)h(GNU)f (distribu-)150 4762 y(tion.)51 b(Eac)m(h)34 b(compiler)g(utilizes)h ! Fl(gperf)d Fq(to)i(automatically)i(generate)f(static)g(searc)m(h)f (structures)f(that)150 4872 y(e\016cien)m(tly)f(iden)m(tify)f(their)f (resp)s(ectiv)m(e)i(reserv)m(ed)e(k)m(eyw)m(ords.)p eop end %%Page: 11 13 ! TeXDict begin 11 12 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(11)150 299 y Fn(3)80 b(High-Lev)l(el)52 b(Description)f(of)j(GNU)g ! Fk(gperf)275 539 y Fq(The)29 b(p)s(erfect)h(hash)g(function)g ! (generator)h Fl(gperf)e Fq(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i (from)d(an)i(input)e(\014le)150 648 y(\(or)34 b(from)g(the)g(standard)f (input)g(b)m(y)h(default\).)52 b(It)34 b(attempts)h(to)f(deriv)m(e)h(a) f(p)s(erfect)g(hashing)f(function)150 758 y(that)k(recognizes)i(a)e ! (mem)m(b)s(er)f(of)h(the)g Fm(static)h(k)m(eyw)m(ord)f(set)j ! Fq(with)c(at)i(most)f(a)g(single)g(prob)s(e)f(in)m(to)i(the)150 ! 867 y(lo)s(okup)26 b(table.)41 b(If)26 b Fl(gperf)f Fq(succeeds)i(in)g (generating)h(suc)m(h)e(a)h(function)f(it)i(pro)s(duces)d(a)i(pair)g (of)f(C)h(source)150 977 y(co)s(de)39 b(routines)g(that)h(p)s(erform)d *************** *** 4094,4099 **** g(standard)f(output.)62 b(Command-line)38 b(options)g(describ)s(ed)e(b) s(elo)m(w)i(allo)m(w)h(y)m(ou)f(to)150 1196 y(mo)s(dify)30 ! b(the)g(input)g(and)f(output)h(format)h(to)g Fn(gperf)p ! Fs(.)275 1332 y(By)23 b(default,)i Fn(gperf)d Fs(attempts)i(to)g(pro)s (duce)e(time-e\016cien)m(t)k(co)s(de,)f(with)e(less)h(emphasis)e(on)h (e\016cien)m(t)150 1442 y(space)31 b(utilization.)43 --- 3795,3800 ---- g(standard)f(output.)62 b(Command-line)38 b(options)g(describ)s(ed)e(b) s(elo)m(w)i(allo)m(w)h(y)m(ou)f(to)150 1196 y(mo)s(dify)30 ! b(the)g(input)g(and)f(output)h(format)h(to)g Fl(gperf)p ! Fq(.)275 1332 y(By)23 b(default,)i Fl(gperf)d Fq(attempts)i(to)g(pro)s (duce)e(time-e\016cien)m(t)k(co)s(de,)f(with)e(less)h(emphasis)e(on)h (e\016cien)m(t)150 1442 y(space)31 b(utilization.)43 *************** *** 4104,4115 **** (duces)f(a)150 1661 y(sparse)26 b(searc)m(h)g(structure,)h(generally)g (yielding)f(faster)h(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 ! b(,)28 b(y)m(ou)f(can)f(direct)g Fn(gperf)150 1771 y ! Fs(to)21 b(utilize)h(a)f(C)f Fn(switch)f Fs(statemen)m(t)k(sc)m(heme)e (that)g(minimizes)g(data)g(space)g(storage)h(size.)39 ! b(F)-8 b(urthermore,)150 1880 y(using)40 b(a)g(C)g Fn(switch)e ! Fs(ma)m(y)i(actually)i(sp)s(eed)d(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 b(al)41 b(time)g(somewhat.)70 b(Actual)150 1990 y(results)30 b(dep)s(end)f(on)h(y)m(our)g(C)g(compiler,)i(of)e(course.)275 ! 2126 y(In)44 b(general,)50 b Fn(gperf)44 b Fs(assigns)h(v)-5 b(alues)46 b(to)g(the)f(b)m(ytes)h(it)g(is)f(using)g(for)g(hashing)f (un)m(til)i(some)f(set)150 2236 y(of)d(v)-5 b(alues)43 --- 3805,3816 ---- (duces)f(a)150 1661 y(sparse)26 b(searc)m(h)g(structure,)h(generally)g (yielding)f(faster)h(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 ! b(,)28 b(y)m(ou)f(can)f(direct)g Fl(gperf)150 1771 y ! Fq(to)21 b(utilize)h(a)f(C)f Fl(switch)f Fq(statemen)m(t)k(sc)m(heme)e (that)g(minimizes)g(data)g(space)g(storage)h(size.)39 ! b(F)-8 b(urthermore,)150 1880 y(using)40 b(a)g(C)g Fl(switch)e ! Fq(ma)m(y)i(actually)i(sp)s(eed)d(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 b(al)41 b(time)g(somewhat.)70 b(Actual)150 1990 y(results)30 b(dep)s(end)f(on)h(y)m(our)g(C)g(compiler,)i(of)e(course.)275 ! 2126 y(In)44 b(general,)50 b Fl(gperf)44 b Fq(assigns)h(v)-5 b(alues)46 b(to)g(the)f(b)m(ytes)h(it)g(is)f(using)g(for)g(hashing)f (un)m(til)i(some)f(set)150 2236 y(of)d(v)-5 b(alues)43 *************** *** 4117,4174 **** b(alue.)77 b(A)42 b(helpful)f(heuristic)i(is)f(that)h(the)f(larger)h (the)150 2345 y(hash)36 b(v)-5 b(alue)37 b(range,)i(the)e(easier)h(it)f ! (is)g(for)f Fn(gperf)f Fs(to)j(\014nd)d(and)h(generate)i(a)f(p)s (erfect)g(hash)f(function.)150 2455 y(Exp)s(erimen)m(tation)31 b(is)f(the)h(k)m(ey)g(to)g(getting)h(the)f(most)g(from)e ! Fn(gperf)p Fs(.)150 2717 y Fr(3.1)68 b(Input)44 b(F)-11 ! b(ormat)46 b(to)f Fk(gperf)275 2911 y Fs(Y)-8 b(ou)38 b(can)g(con)m(trol)i(the)e(input)f(\014le)h(format)g(b)m(y)g(v)-5 b(arying)38 b(certain)g(command-line)h(argumen)m(ts,)h(in)150 ! 3021 y(particular)f(the)g(`)p Fn(-t)p Fs(')g(option.)66 b(The)38 b(input's)g(app)s(earance)h(is)g(similar)g(to)g(GNU)h ! (utilities)g Fn(flex)e Fs(and)150 3131 y Fn(bison)29 ! b Fs(\(or)i(UNIX)f(utilities)i Fn(lex)e Fs(and)f Fn(yacc)p ! Fs(\).)40 b(Here's)31 b(an)g(outline)g(of)f(the)h(general)g(format:)390 ! 3261 y Fn(declarations)390 3365 y(\045\045)390 3469 y(keywords)390 ! 3572 y(\045\045)390 3676 y(functions)275 3806 y Fl(Unlike)41 ! b Fn(flex)35 b Fs(or)g Fn(bison)p Fs(,)h(the)g(declarations)g(section)h (and)e(the)h(functions)f(section)i(are)f(optional.)150 3915 y(The)30 b(follo)m(wing)i(sections)f(describ)s(e)f(the)g(input)g (format)h(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)g(p)s(ossible)g (to)h(omit)g(the)g(declaration)h(section)f(en)m(tirely)-8 ! b(,)35 b(if)d(the)h(`)p Fn(-t)p Fs(')f(option)h(is)f(not)h(giv)m(en.)48 b(In)150 4161 y(this)30 b(case)i(the)e(input)g(\014le)g(b)s(egins)g (directly)h(with)f(the)h(\014rst)e(k)m(eyw)m(ord)i(line,)g(e.g.:)390 ! 4292 y Fn(january)390 4395 y(february)390 4499 y(march)390 ! 4603 y(april)390 4707 y(...)150 4926 y Fj(3.1.1)63 b(Declarations)275 ! 5121 y Fs(The)33 b(k)m(eyw)m(ord)i(input)f(\014le)g(optionally)i(con)m (tains)g(a)f(section)g(for)f(including)g(arbitrary)h(C)f(declara-)150 ! 5230 y(tions)d(and)e(de\014nitions,)h Fn(gperf)f Fs(declarations)j (that)f(act)g(lik)m(e)h(command-line)f(options,)g(as)f(w)m(ell)i(as)e ! (for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fn(struct)p ! Fs(.)p eop end %%Page: 12 14 ! TeXDict begin 12 13 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(12)150 299 y Fj(3.1.1.1)63 b(User-supplied)43 b ! Fi(struct)275 500 y Fs(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)h(\(or,) ! i(equiv)-5 b(alen)m(tly)d(,)28 b(the)d(`)p Fn(\045struct-type)p ! Fs(')d(declaration\))k Fl(is)32 b Fs(enabled,)26 b(y)m(ou)f ! Fl(must)150 609 y Fs(pro)m(vide)37 b(a)f(C)h Fn(struct)d ! Fs(as)j(the)g(last)g(comp)s(onen)m(t)g(in)f(the)h(declaration)h (section)f(from)f(the)h(input)f(\014le.)150 719 y(The)26 b(\014rst)f(\014eld)h(in)g(this)g(struct)g(m)m(ust)g(b)s(e)g(of)g(t)m ! (yp)s(e)g Fn(char)j(*)d Fs(or)g Fn(const)j(char)h(*)25 ! b Fs(if)h(the)h(`)p Fn(-P)p Fs(')f(option)g(is)h(not)150 ! 829 y(giv)m(en,)k(or)g(of)f(t)m(yp)s(e)g Fn(int)g Fs(if)g(the)g(option) ! h(`)p Fn(-P)p Fs(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)32 ! b(the)f(`)p Fn(\045pic)p Fs(')e(declaration\))j(is)f(enabled.)150 938 y(This)k(\014rst)f(\014eld)h(m)m(ust)h(b)s(e)e(called)j(`)p ! Fn(name)p Fs(',)f(although)g(it)g(is)g(p)s(ossible)f(to)h(mo)s(dify)e ! (its)i(name)g(with)f(the)150 1048 y(`)p Fn(-K)p Fs(')30 b(option)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 b(the)d(`)p ! Fn(\045define)f(slot-name)p Fs(')f(declaration\))k(describ)s(ed)e(b)s (elo)m(w.)275 1191 y(Here)g(is)h(a)g(simple)f(example,)h(using)f(mon)m (ths)g(of)h(the)f(y)m(ear)i(and)d(their)i(attributes)g(as)f(input:)390 ! 1328 y Fn(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i (days;)g(int)g(leap_days;)e(};)390 1432 y(\045\045)390 1535 y(january,)141 b(1,)47 b(31,)g(31)390 1639 y(february,)93 --- 3818,3875 ---- b(alue.)77 b(A)42 b(helpful)f(heuristic)i(is)f(that)h(the)f(larger)h (the)150 2345 y(hash)36 b(v)-5 b(alue)37 b(range,)i(the)e(easier)h(it)f ! (is)g(for)f Fl(gperf)f Fq(to)j(\014nd)d(and)h(generate)i(a)f(p)s (erfect)g(hash)f(function.)150 2455 y(Exp)s(erimen)m(tation)31 b(is)f(the)h(k)m(ey)g(to)g(getting)h(the)f(most)g(from)e ! Fl(gperf)p Fq(.)150 2717 y Fp(3.1)68 b(Input)44 b(F)-11 ! b(ormat)46 b(to)f Fi(gperf)275 2911 y Fq(Y)-8 b(ou)38 b(can)g(con)m(trol)i(the)e(input)f(\014le)h(format)g(b)m(y)g(v)-5 b(arying)38 b(certain)g(command-line)h(argumen)m(ts,)h(in)150 ! 3021 y(particular)f(the)g(`)p Fl(-t)p Fq(')g(option.)66 b(The)38 b(input's)g(app)s(earance)h(is)g(similar)g(to)g(GNU)h ! (utilities)g Fl(flex)e Fq(and)150 3131 y Fl(bison)29 ! b Fq(\(or)i(UNIX)f(utilities)i Fl(lex)e Fq(and)f Fl(yacc)p ! Fq(\).)40 b(Here's)31 b(an)g(outline)g(of)f(the)h(general)g(format:)390 ! 3261 y Fl(declarations)390 3365 y(\045\045)390 3469 y(keywords)390 ! 3572 y(\045\045)390 3676 y(functions)275 3806 y Fj(Unlike)41 ! b Fl(flex)35 b Fq(or)g Fl(bison)p Fq(,)h(the)g(declarations)g(section)h (and)e(the)h(functions)f(section)i(are)f(optional.)150 3915 y(The)30 b(follo)m(wing)i(sections)f(describ)s(e)f(the)g(input)g (format)h(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)g(p)s(ossible)g (to)h(omit)g(the)g(declaration)h(section)f(en)m(tirely)-8 ! b(,)35 b(if)d(the)h(`)p Fl(-t)p Fq(')f(option)h(is)f(not)h(giv)m(en.)48 b(In)150 4161 y(this)30 b(case)i(the)e(input)g(\014le)g(b)s(egins)g (directly)h(with)f(the)h(\014rst)e(k)m(eyw)m(ord)i(line,)g(e.g.:)390 ! 4292 y Fl(january)390 4395 y(february)390 4499 y(march)390 ! 4603 y(april)390 4707 y(...)150 4926 y Fh(3.1.1)63 b(Declarations)275 ! 5121 y Fq(The)33 b(k)m(eyw)m(ord)i(input)f(\014le)g(optionally)i(con)m (tains)g(a)f(section)g(for)f(including)g(arbitrary)h(C)f(declara-)150 ! 5230 y(tions)d(and)e(de\014nitions,)h Fl(gperf)f Fq(declarations)j (that)f(act)g(lik)m(e)h(command-line)f(options,)g(as)f(w)m(ell)i(as)e ! (for)150 5340 y(pro)m(viding)g(a)h(user-supplied)e Fl(struct)p ! Fq(.)p eop end %%Page: 12 14 ! TeXDict begin 12 13 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(12)150 299 y Fh(3.1.1.1)63 b(User-supplied)43 b ! Fg(struct)275 500 y Fq(If)24 b(the)h(`)p Fl(-t)p Fq(')f(option)h(\(or,) ! i(equiv)-5 b(alen)m(tly)d(,)28 b(the)d(`)p Fl(\045struct-type)p ! Fq(')d(declaration\))k Fj(is)32 b Fq(enabled,)26 b(y)m(ou)f ! Fj(must)150 609 y Fq(pro)m(vide)37 b(a)f(C)h Fl(struct)d ! Fq(as)j(the)g(last)g(comp)s(onen)m(t)g(in)f(the)h(declaration)h (section)f(from)f(the)h(input)f(\014le.)150 719 y(The)26 b(\014rst)f(\014eld)h(in)g(this)g(struct)g(m)m(ust)g(b)s(e)g(of)g(t)m ! (yp)s(e)g Fl(char)j(*)d Fq(or)g Fl(const)j(char)h(*)25 ! b Fq(if)h(the)h(`)p Fl(-P)p Fq(')f(option)g(is)h(not)150 ! 829 y(giv)m(en,)k(or)g(of)f(t)m(yp)s(e)g Fl(int)g Fq(if)g(the)g(option) ! h(`)p Fl(-P)p Fq(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)32 ! b(the)f(`)p Fl(\045pic)p Fq(')e(declaration\))j(is)f(enabled.)150 938 y(This)k(\014rst)f(\014eld)h(m)m(ust)h(b)s(e)e(called)j(`)p ! Fl(name)p Fq(',)f(although)g(it)g(is)g(p)s(ossible)f(to)h(mo)s(dify)e ! (its)i(name)g(with)f(the)150 1048 y(`)p Fl(-K)p Fq(')30 b(option)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 b(the)d(`)p ! Fl(\045define)f(slot-name)p Fq(')f(declaration\))k(describ)s(ed)e(b)s (elo)m(w.)275 1191 y(Here)g(is)h(a)g(simple)f(example,)h(using)f(mon)m (ths)g(of)h(the)f(y)m(ear)i(and)d(their)i(attributes)g(as)f(input:)390 ! 1328 y Fl(struct)46 b(month)g({)i(char)f(*name;)f(int)h(number;)e(int)i (days;)g(int)g(leap_days;)e(};)390 1432 y(\045\045)390 1535 y(january,)141 b(1,)47 b(31,)g(31)390 1639 y(february,)93 *************** *** 4180,4298 **** 2469 y(october,)93 b(10,)47 b(31,)g(31)390 2573 y(november,)e(11,)i (30,)g(30)390 2677 y(december,)e(12,)i(31,)g(31)275 2813 ! y Fs(Separating)25 b(the)g Fn(struct)f Fs(declaration)i(from)f(the)g (list)h(of)f(k)m(eyw)m(ords)h(and)e(other)h(\014elds)g(are)g(a)h(pair)f (of)150 2922 y(consecutiv)m(e)33 b(p)s(ercen)m(t)f(signs,)f(`)p ! Fn(\045\045)p Fs(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h (\014rst)e(column,)i(as)f(in)g(the)h(UNIX)150 3032 y(utilit)m(y)g ! Fn(lex)p Fs(.)275 3175 y(If)k(the)i Fn(struct)d Fs(has)i(already)h(b)s (een)f(declared)h(in)f(an)g(include)g(\014le,)i(it)f(can)g(b)s(e)e(men) m(tioned)i(in)f(an)150 3284 y(abbreviated)31 b(form,)f(lik)m(e)i(this:) ! 390 3421 y Fn(struct)46 b(month;)390 3525 y(\045\045)390 3629 y(january,)141 b(1,)47 b(31,)g(31)390 3733 y(...)150 ! 3966 y Fj(3.1.1.2)63 b(Gp)s(erf)43 b(Declarations)275 ! 4167 y Fs(The)31 b(declaration)j(section)g(can)e(con)m(tain)i ! Fn(gperf)c Fs(declarations.)48 b(They)32 b(in\015uence)g(the)g(w)m(a)m ! (y)h Fn(gperf)150 4276 y Fs(w)m(orks,)43 b(lik)m(e)f(command)f(line)g (options)g(do.)72 b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)i (is)f(equiv)-5 b(alen)m(t)42 b(to)g(a)150 4386 y(command)30 b(line)h(option.)41 b(There)30 b(are)h(three)f(forms)g(of)h (declarations:)199 4529 y(1.)61 b(Declarations)33 b(without)d(argumen)m ! (t,)h(lik)m(e)h(`)p Fn(\045compare-lengths)p Fs('.)199 4667 y(2.)61 b(Declarations)33 b(with)d(an)g(argumen)m(t,)h(lik)m(e)h ! (`)p Fn(\045switch=)p Fo(coun)m(t)r Fs('.)199 4806 y(3.)61 b(Declarations)114 b(of)e(names)g(of)g(en)m(tities)i(in)d(the)h(output) ! g(\014le,)132 b(lik)m(e)114 b(`)p Fn(\045define)330 4916 ! y(lookup-function-name)25 b Fo(name)5 b Fs('.)275 5088 y(When)35 b(a)h(declaration)h(is)f(giv)m(en)g(b)s(oth)f(in)h(the)f (input)g(\014le)h(and)f(as)h(a)g(command)f(line)h(option,)i(the)150 5197 y(command-line)31 b(option's)g(v)-5 b(alue)31 b(prev)-5 ! b(ails.)275 5340 y(The)29 b(follo)m(wing)j Fn(gperf)d ! Fs(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end %%Page: 13 15 ! TeXDict begin 13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(13)150 299 y(`)p Fn(\045delimiters=)p Fo(delimiter-list)r ! Fs(')630 408 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g (con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 518 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h ! Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j (if)d(y)m(ou)h(w)m(an)m(t)630 628 y(to)c(use)f(k)m(eyw)m(ords)h(that)g (ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150 ! 774 y(`)p Fn(\045struct-type)p Fs(')630 883 y(Allo)m(ws)i(y)m(ou)e(to)i ! (include)e(a)h Fn(struct)d Fs(t)m(yp)s(e)j(declaration)h(for)e (generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 993 ! y(for)f(an)g(example.)150 1139 y(`)p Fn(\045ignore-case)p ! Fs(')630 1249 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 b(The)44 b(string)630 1358 y(comparison)28 b(will)h(use)f(a)h(case)g (insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29 b(that)g(lo)s(cale)630 1468 y(dep)s(enden)m(t)g(case)j(mappings)d(are)i ! (ignored.)150 1614 y(`)p Fn(\045language=)p Fo(language-name)5 ! b Fs(')630 1724 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de) f(in)f(the)h(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-) 630 1833 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m ! (tly:)630 1979 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m (yle)i(C)e(com-)1110 2089 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but) e(ANSI)f(C)h(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 2198 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m ! (king)i(`)p Fn(const)p Fs('.)630 2345 y(`)p Fn(C)p Fs(')382 b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i (ANSI)g(C)f(compilers,)k(and)1110 2454 y(also)k(b)m(y)e(old-st)m(yle)i ! (C)f(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fn(#define)f(const)f ! Fs(to)1110 2564 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 2710 y(`)p ! Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s (o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 2819 ! y(C)p Fn(++)29 b Fs(compilers.)630 2966 y(`)p Fn(C++)p ! Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)29 b(language)j(is)f(understo)s ! (o)s(d)d(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 3112 y(The)g(default)g ! (is)h(C.)150 3258 y(`)p Fn(\045define)e(slot-name)e Fo(name)5 ! b Fs(')630 3367 y(This)65 b(declaration)j(is)e(only)g(useful)f(when)g ! (option)h(`)p Fn(-t)p Fs(')g(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)77 ! b(the)630 3477 y(`)p Fn(\045struct-type)p Fs(')27 b(declaration\))32 b(has)e(b)s(een)g(giv)m(en.)41 b(By)31 b(default,)f(the)g(program)g (assumes)630 3587 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m ! (ti\014er)f(for)g(the)g(k)m(eyw)m(ord)h(is)f(`)p Fn(name)p ! Fs('.)94 b(This)47 b(option)630 3696 y(allo)m(ws)f(an)e(arbitrary)g(c)m (hoice)i(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s(onen)m(t,)k (although)d(it)g(still)630 3806 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g ! (\014rst)e(\014eld)h(in)g(y)m(our)h(supplied)e Fn(struct)p ! Fs(.)150 3952 y(`)p Fn(\045define)g(initializer-suffix)c ! Fo(initializers)t Fs(')630 4061 y(This)65 b(declaration)j(is)e(only)g ! (useful)f(when)g(option)h(`)p Fn(-t)p Fs(')g(\(or,)76 ! b(equiv)-5 b(alen)m(tly)d(,)77 b(the)630 4171 y(`)p Fn(\045struct-type) ! p Fs(')33 b(declaration\))38 b(has)d(b)s(een)g(giv)m(en.)58 b(It)36 b(p)s(ermits)f(to)i(sp)s(ecify)e(initializers)630 4281 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)i ! Fo(slot-name)51 b Fs(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630 4390 y(The)d(list)g(of)h(initializers)g(should)e(start)i(with)f(a)g (comma.)77 b(By)42 b(default,)k(the)c(emitted)630 4500 y(co)s(de)31 b(will)f(zero-initialize)k(structure)c(mem)m(b)s(ers)g ! (follo)m(wing)i Fo(slot-name)p Fs(.)150 4646 y(`)p Fn(\045define)d ! (hash-function-name)c Fo(name)5 b Fs(')630 4755 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify)g(the)g(name)g(for)f(the)h(generated)h(hash) e(function.)40 b(Default)31 b(name)630 4865 y(is)f(`)p ! Fn(hash)p Fs('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h (t)m(w)m(o)g(hash)f(tables)h(in)f(the)h(same)g(\014le.)150 ! 5011 y(`)p Fn(\045define)e(lookup-function-name)24 b ! Fo(name)5 b Fs(')630 5121 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e (the)i(name)f(for)f(the)h(generated)h(lo)s(okup)f(function.)75 ! b(Default)630 5230 y(name)28 b(is)g(`)p Fn(in_word_set)p ! Fs('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f (hash)f(functions)630 5340 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g (application.)p eop end %%Page: 14 16 ! TeXDict begin 14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(14)150 299 y(`)p Fn(\045define)29 b(class-name)e ! Fo(name)5 b Fs(')630 408 y(This)66 b(option)i(is)f(only)h(useful)e ! (when)h(option)g(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 ! b(equiv)-5 b(alen)m(tly)d(,)79 b(the)630 518 y(`)p Fn(\045language=C++) ! p Fs(')43 b(declaration\))k(has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s(ecify)g(the)630 ! 628 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)41 ! b(Default)32 b(name)e(is)h Fn(Perfect_Hash)p Fs(.)150 ! 792 y(`)p Fn(\0457bit)p Fs(')190 b(This)36 b(option)i(sp)s(eci\014es)f (that)g(all)h(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m (ts)f(to)h(the)630 902 y(generated)e(hash)e(function)g(and)h(the)g --- 3881,3999 ---- 2469 y(october,)93 b(10,)47 b(31,)g(31)390 2573 y(november,)e(11,)i (30,)g(30)390 2677 y(december,)e(12,)i(31,)g(31)275 2813 ! y Fq(Separating)25 b(the)g Fl(struct)f Fq(declaration)i(from)f(the)g (list)h(of)f(k)m(eyw)m(ords)h(and)e(other)h(\014elds)g(are)g(a)h(pair)f (of)150 2922 y(consecutiv)m(e)33 b(p)s(ercen)m(t)f(signs,)f(`)p ! Fl(\045\045)p Fq(',)h(app)s(earing)f(left)h(justi\014ed)e(in)h(the)h (\014rst)e(column,)i(as)f(in)g(the)h(UNIX)150 3032 y(utilit)m(y)g ! Fl(lex)p Fq(.)275 3175 y(If)k(the)i Fl(struct)d Fq(has)i(already)h(b)s (een)f(declared)h(in)f(an)g(include)g(\014le,)i(it)f(can)g(b)s(e)e(men) m(tioned)i(in)f(an)150 3284 y(abbreviated)31 b(form,)f(lik)m(e)i(this:) ! 390 3421 y Fl(struct)46 b(month;)390 3525 y(\045\045)390 3629 y(january,)141 b(1,)47 b(31,)g(31)390 3733 y(...)150 ! 3966 y Fh(3.1.1.2)63 b(Gp)s(erf)43 b(Declarations)275 ! 4167 y Fq(The)31 b(declaration)j(section)g(can)e(con)m(tain)i ! Fl(gperf)c Fq(declarations.)48 b(They)32 b(in\015uence)g(the)g(w)m(a)m ! (y)h Fl(gperf)150 4276 y Fq(w)m(orks,)43 b(lik)m(e)f(command)f(line)g (options)g(do.)72 b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)i (is)f(equiv)-5 b(alen)m(t)42 b(to)g(a)150 4386 y(command)30 b(line)h(option.)41 b(There)30 b(are)h(three)f(forms)g(of)h (declarations:)199 4529 y(1.)61 b(Declarations)33 b(without)d(argumen)m ! (t,)h(lik)m(e)h(`)p Fl(\045compare-lengths)p Fq('.)199 4667 y(2.)61 b(Declarations)33 b(with)d(an)g(argumen)m(t,)h(lik)m(e)h ! (`)p Fl(\045switch=)p Fm(coun)m(t)r Fq('.)199 4806 y(3.)61 b(Declarations)114 b(of)e(names)g(of)g(en)m(tities)i(in)d(the)h(output) ! g(\014le,)132 b(lik)m(e)114 b(`)p Fl(\045define)330 4916 ! y(lookup-function-name)25 b Fm(name)5 b Fq('.)275 5088 y(When)35 b(a)h(declaration)h(is)f(giv)m(en)g(b)s(oth)f(in)h(the)f (input)g(\014le)h(and)f(as)h(a)g(command)f(line)h(option,)i(the)150 5197 y(command-line)31 b(option's)g(v)-5 b(alue)31 b(prev)-5 ! b(ails.)275 5340 y(The)29 b(follo)m(wing)j Fl(gperf)d ! Fq(declarations)j(are)f(a)m(v)-5 b(ailable.)p eop end %%Page: 13 15 ! TeXDict begin 13 14 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(13)150 299 y(`)p Fl(\045delimiters=)p Fm(delimiter-list)r ! Fq(')630 408 y(Allo)m(ws)30 b(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g (con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 518 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h ! Fl(")p Fq(,)p Fl(")p Fq(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j (if)d(y)m(ou)h(w)m(an)m(t)630 628 y(to)c(use)f(k)m(eyw)m(ords)h(that)g (ha)m(v)m(e)g(em)m(b)s(edded)f(commas)h(or)f(newlines.)150 ! 774 y(`)p Fl(\045struct-type)p Fq(')630 883 y(Allo)m(ws)i(y)m(ou)e(to)i ! (include)e(a)h Fl(struct)d Fq(t)m(yp)s(e)j(declaration)h(for)e (generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 993 ! y(for)f(an)g(example.)150 1139 y(`)p Fl(\045ignore-case)p ! Fq(')630 1249 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 b(The)44 b(string)630 1358 y(comparison)28 b(will)h(use)f(a)h(case)g (insigni\014can)m(t)g(c)m(haracter)h(comparison.)40 b(Note)29 b(that)g(lo)s(cale)630 1468 y(dep)s(enden)m(t)g(case)j(mappings)d(are)i ! (ignored.)150 1614 y(`)p Fl(\045language=)p Fm(language-name)5 ! b Fq(')630 1724 y(Instructs)33 b Fl(gperf)f Fq(to)i(generate)h(co)s(de) f(in)f(the)h(language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-) 630 1833 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m ! (tly:)630 1979 y(`)p Fl(KR-C)p Fq(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f(language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m (yle)i(C)e(com-)1110 2089 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but) e(ANSI)f(C)h(compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 2198 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m ! (king)i(`)p Fl(const)p Fq('.)630 2345 y(`)p Fl(C)p Fq(')382 b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i (ANSI)g(C)f(compilers,)k(and)1110 2454 y(also)k(b)m(y)e(old-st)m(yle)i ! (C)f(compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fl(#define)f(const)f ! Fq(to)1110 2564 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 2710 y(`)p ! Fl(ANSI-C)p Fq(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s (o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 2819 ! y(C)p Fl(++)29 b Fq(compilers.)630 2966 y(`)p Fl(C++)p ! Fq(')286 b(C)p Fl(++)p Fq(.)40 b(This)29 b(language)j(is)f(understo)s ! (o)s(d)d(b)m(y)i(C)p Fl(++)g Fq(compilers.)630 3112 y(The)g(default)g ! (is)h(C.)150 3258 y(`)p Fl(\045define)e(slot-name)e Fm(name)5 ! b Fq(')630 3367 y(This)65 b(declaration)j(is)e(only)g(useful)f(when)g ! (option)h(`)p Fl(-t)p Fq(')g(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)77 ! b(the)630 3477 y(`)p Fl(\045struct-type)p Fq(')27 b(declaration\))32 b(has)e(b)s(een)g(giv)m(en.)41 b(By)31 b(default,)f(the)g(program)g (assumes)630 3587 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m ! (ti\014er)f(for)g(the)g(k)m(eyw)m(ord)h(is)f(`)p Fl(name)p ! Fq('.)94 b(This)47 b(option)630 3696 y(allo)m(ws)f(an)e(arbitrary)g(c)m (hoice)i(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s(onen)m(t,)k (although)d(it)g(still)630 3806 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g ! (\014rst)e(\014eld)h(in)g(y)m(our)h(supplied)e Fl(struct)p ! Fq(.)150 3952 y(`)p Fl(\045define)g(initializer-suffix)c ! Fm(initializers)t Fq(')630 4061 y(This)65 b(declaration)j(is)e(only)g ! (useful)f(when)g(option)h(`)p Fl(-t)p Fq(')g(\(or,)76 ! b(equiv)-5 b(alen)m(tly)d(,)77 b(the)630 4171 y(`)p Fl(\045struct-type) ! p Fq(')33 b(declaration\))38 b(has)d(b)s(een)g(giv)m(en.)58 b(It)36 b(p)s(ermits)f(to)i(sp)s(ecify)e(initializers)630 4281 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)i ! Fm(slot-name)51 b Fq(in)43 b(empt)m(y)i(hash)e(table)i(en)m(tries.)630 4390 y(The)d(list)g(of)h(initializers)g(should)e(start)i(with)f(a)g (comma.)77 b(By)42 b(default,)k(the)c(emitted)630 4500 y(co)s(de)31 b(will)f(zero-initialize)k(structure)c(mem)m(b)s(ers)g ! (follo)m(wing)i Fm(slot-name)p Fq(.)150 4646 y(`)p Fl(\045define)d ! (hash-function-name)c Fm(name)5 b Fq(')630 4755 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify)g(the)g(name)g(for)f(the)h(generated)h(hash) e(function.)40 b(Default)31 b(name)630 4865 y(is)f(`)p ! Fl(hash)p Fq('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h (t)m(w)m(o)g(hash)f(tables)h(in)f(the)h(same)g(\014le.)150 ! 5011 y(`)p Fl(\045define)e(lookup-function-name)24 b ! Fm(name)5 b Fq(')630 5121 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e (the)i(name)f(for)f(the)h(generated)h(lo)s(okup)f(function.)75 ! b(Default)630 5230 y(name)28 b(is)g(`)p Fl(in_word_set)p ! Fq('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f (hash)f(functions)630 5340 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g (application.)p eop end %%Page: 14 16 ! TeXDict begin 14 15 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(14)150 299 y(`)p Fl(\045define)29 b(class-name)e ! Fm(name)5 b Fq(')630 408 y(This)66 b(option)i(is)f(only)h(useful)e ! (when)h(option)g(`)p Fl(-L)30 b(C++)p Fq(')67 b(\(or,)77 ! b(equiv)-5 b(alen)m(tly)d(,)79 b(the)630 518 y(`)p Fl(\045language=C++) ! p Fq(')43 b(declaration\))k(has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s(ecify)g(the)630 ! 628 y(name)30 b(of)h(generated)g(C)p Fl(++)f Fq(class.)41 ! b(Default)32 b(name)e(is)h Fl(Perfect_Hash)p Fq(.)150 ! 792 y(`)p Fl(\0457bit)p Fq(')190 b(This)36 b(option)i(sp)s(eci\014es)f (that)g(all)h(strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m (ts)f(to)h(the)630 902 y(generated)e(hash)e(function)g(and)h(the)g *************** *** 4300,4685 **** 1011 y(of)d(7-bit)h(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g (range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 ! 1121 y(functions)f Fn(isalnum)f Fs(and)i Fn(isgraph)e ! Fs(do)i Fl(not)41 b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f (this)h(range.)630 1230 y(Only)e(an)g(explicit)i(test)f(lik)m(e)h(`)p ! Fn(c)e(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fs(')f(guaran)m(tees)j(this.\)) ! 150 1395 y(`)p Fn(\045compare-lengths)p Fs(')630 1504 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (string)e(comparison.)70 b(This)39 b(option)h(is)630 ! 1614 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h ! (3.3)f([Binary)g(Strings],)g(page)g(18\).)630 1724 y(It)g(also)h(migh)m ! (t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g ! (comparisons)g(made)g(during)f(the)630 1833 y(lo)s(okup,)i(since)g(k)m ! (eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h ! (compared)f(via)h Fn(strcmp)p Fs(.)630 1943 y(Ho)m(w)m(ev)m(er,)d ! (using)d(`)p Fn(\045compare-lengths)p Fs(')c(migh)m(t)29 ! b(greatly)h(increase)f(the)g(size)g(of)g(the)f(gen-)630 ! 2052 y(erated)j(C)f(co)s(de)h(if)f(the)h(lo)s(okup)f(table)i(range)e ! (is)h(large)g(\(whic)m(h)g(implies)g(that)g(the)f(switc)m(h)630 ! 2162 y(option)24 b(`)p Fn(-S)p Fs(')g(or)g(`)p Fn(\045switch)p ! Fs(')f(is)h(not)g(enabled\),)i(since)e(the)g(length)h(table)f(con)m ! (tains)i(as)e(man)m(y)630 2271 y(elemen)m(ts)32 b(as)e(there)h(are)g ! (en)m(tries)g(in)f(the)g(lo)s(okup)g(table.)150 2436 ! y(`)p Fn(\045compare-strncmp)p Fs(')630 2545 y(Generates)22 ! b(C)f(co)s(de)g(that)h(uses)e(the)i Fn(strncmp)d Fs(function)h(to)i(p)s (erform)e(string)h(comparisons.)630 2655 y(The)30 b(default)g(action)i ! (is)f(to)g(use)f Fn(strcmp)p Fs(.)150 2819 y(`)p Fn ! (\045readonly-tables)p Fs(')630 2929 y(Mak)m(es)41 b(the)f(con)m(ten)m (ts)h(of)f(all)h(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,) h(\\readonly".)630 3039 y(Man)m(y)31 b(compilers)g(can)g(generate)h (more)e(e\016cien)m(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h (tables)630 3148 y(in)f(readonly)h(memory)-8 b(.)150 ! 3313 y(`)p Fn(\045enum)p Fs(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to)f(the)g(lo)s(okup)f (function)g(rather)g(than)630 3422 y(with)37 b(#de\014nes.)60 b(This)36 b(also)i(means)g(that)f(di\013eren)m(t)h(lo)s(okup)f (functions)g(can)g(reside)g(in)630 3532 y(the)31 b(same)f(\014le.)41 ! b(Thanks)29 b(to)j(James)e(Clark)g Fn()p ! Fs(.)150 3696 y(`)p Fn(\045includes)p Fs(')630 3806 y(Include)g(the)h ! (necessary)h(system)f(include)g(\014le,)g Fn()p ! Fs(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 3915 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e(user)f(m)m(ust)h (include)g(this)f(header)h(\014le)g(himself)630 4025 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 ! 4189 y(`)p Fn(\045global-table)p Fs(')630 4299 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m(ords)g(as)g(a)g(static)h (global)g(v)-5 b(ariable,)39 b(rather)d(than)630 4408 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s(okup)f(function)g(\(whic)m (h)g(is)h(the)f(default)h(b)s(eha)m(vior\).)150 4573 ! y(`)p Fn(\045pic)p Fs(')238 b(Optimize)42 b(the)f(generated)h(table)g (for)f(inclusion)g(in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 4682 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g (a)h(shared)e(library)h(con)m(taining)i(the)e(generated)630 ! 4792 y(co)s(de.)j(If)21 b(the)h(`)p Fn(\045struct-type)p ! Fs(')d(declaration)24 b(\(or,)g(equiv)-5 b(alen)m(tly)d(,)26 ! b(the)c(option)g(`)p Fn(-t)p Fs('\))g(is)g(also)630 4902 y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e ! (struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p ! Fs(',)f(not)h(`)p Fn(char)630 5011 y(*)p Fs(',)h(b)s(ecause)f(it)i (will)e(con)m(tain)i(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h (instead)f(of)h(actual)h(strings.)630 5121 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f ! (can)g(use)f(the)h(expression)f(`)p Fn(stringpool)630 ! 5230 y(+)e Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)33 b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s ! (e)g(c)m(hanged)g(through)g(the)630 5340 y(`)p Fn(\045define)c ! (string-pool-name)p Fs(')d(declaration.)p eop end %%Page: 15 17 ! TeXDict begin 15 16 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(15)150 299 y(`)p Fn(\045define)29 b(string-pool-name)d ! Fo(name)5 b Fs(')630 408 y(Allo)m(ws)42 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(of)g(the)g(generated)h(string)f(p)s(o)s(ol)g(created)h(b) ! m(y)f(the)630 518 y(declaration)48 b(`)p Fn(\045pic)p ! Fs(')e(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)53 b(the)47 ! b(option)f(`)p Fn(-P)p Fs('\).)90 b(The)46 b(default)g(name)h(is)630 ! 628 y(`)p Fn(stringpool)p Fs('.)38 b(This)29 b(declaration)i(p)s (ermits)e(the)h(use)g(of)g(t)m(w)m(o)h(hash)e(tables)h(in)g(the)g(same) ! 630 737 y(\014le,)39 b(with)d(`)p Fn(\045pic)p Fs(')g(and)g(ev)m(en)h ! (when)f(the)h(`)p Fn(\045global-table)p Fs(')c(declaration)38 b(\(or,)h(equiv)-5 b(a-)630 847 y(len)m(tly)d(,)32 b(the)f(option)g(`)p ! Fn(-G)p Fs('\))f(is)h(giv)m(en.)150 1002 y(`)p Fn(\045null-strings)p ! Fs(')630 1112 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i (strings)e(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 ! 1221 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f ! (a)h(shared)f(library)g(con)m(taining)630 1331 y(the)29 b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m)m(uc)m(h)g(as)f(the)h ! (declaration)h(`)p Fn(\045pic)p Fs('\),)f(at)g(the)f(exp)s(ense)630 ! 1441 y(of)j(one)f(more)h(test-and-branc)m(h)g(instruction)f(at)h(run)e ! (time.)150 1596 y(`)p Fn(\045define)g(word-array-name)d ! Fo(name)5 b Fs(')630 1706 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e ! (hash)630 1815 y(table.)106 b(Default)53 b(name)e(is)h(`)p ! Fn(wordlist)p Fs('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g ! (of)g(t)m(w)m(o)630 1925 y(hash)37 b(tables)h(in)g(the)g(same)g ! (\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fn(-G)p ! Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 ! 2034 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 ! b(is)d(giv)m(en.)150 2190 y(`)p Fn(\045switch=)p Fo(coun)m(t)r ! Fs(')630 2299 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e ! (a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 ! 2409 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) ! 630 2518 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 ! 2628 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e (generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f ! Fn(switch)630 2738 y Fs(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i (a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h ! (the)g(elemen)m(ts)630 2847 y(in)38 b(eac)m(h)h Fn(switch)p ! Fs(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e ! (compilers)i(cannot)g(correctly)630 2957 y(generate)29 ! b(co)s(de)f(for)f(large)h Fn(switch)e Fs(statemen)m(ts.)41 b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 ! 3066 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 ! 3222 y(`)p Fn(\045omit-struct-type)p Fs(')630 3331 y(Prev)m(en)m(ts)f (the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)h(to)g(the)f ! (output)f(\014le.)40 b(Use)28 b(this)f(option)630 3441 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g(de\014ned)e(elsewhere.)150 ! 3659 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 ! 3850 y Fs(Using)26 b(a)g(syn)m(tax)h(similar)f(to)h(GNU)f(utilities)i ! Fn(flex)d Fs(and)g Fn(bison)p Fs(,)h(it)g(is)g(p)s(ossible)g(to)g ! (directly)h(include)150 3959 y(C)i(source)h(text)g(and)f(commen)m(ts)h (v)m(erbatim)g(in)m(to)h(the)e(generated)i(output)e(\014le.)40 ! b(This)29 b(is)g(accomplished)150 4069 y(b)m(y)37 b(enclosing)h(the)g (region)g(inside)e(left-justi\014ed)i(surrounding)d(`)p ! Fn(\045{)p Fs(',)k(`)p Fn(\045})p Fs(')e(pairs.)61 b(Here)38 ! b(is)f(an)g(input)150 4178 y(fragmen)m(t)31 b(based)f(on)g(the)h ! (previous)f(example)h(that)g(illustrates)g(this)g(feature:)390 ! 4305 y Fn(\045{)390 4409 y(#include)46 b()390 ! 4513 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h ! (into)g(the)h(output.)f(*/)390 4616 y(int)h(return_month_days)c ! (\(struct)j(month)g(*months,)g(int)h(is_leap_year\);)390 ! 4720 y(\045})390 4824 y(struct)f(month)g({)i(char)f(*name;)f(int)h ! (number;)e(int)i(days;)g(int)g(leap_days;)e(};)390 4928 ! y(\045\045)390 5032 y(january,)141 b(1,)47 b(31,)g(31)390 ! 5135 y(february,)93 b(2,)47 b(28,)g(29)390 5239 y(march,)237 ! b(3,)47 b(31,)g(31)390 5343 y(...)p eop end %%Page: 16 18 ! TeXDict begin 16 17 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(16)150 299 y Fj(3.1.2)63 b(F)-10 b(ormat)41 b(for)h(Keyw)m(ord)e ! (En)m(tries)275 495 y Fs(The)33 b(second)i(input)e(\014le)i(format)g ! (section)g(con)m(tains)h(lines)e(of)h(k)m(eyw)m(ords)g(and)e(an)m(y)i ! (asso)s(ciated)h(at-)150 605 y(tributes)i(y)m(ou)h(migh)m(t)g(supply)-8 ! b(.)64 b(A)39 b(line)f(b)s(eginning)g(with)g(`)p Fn(#)p ! Fs(')h(in)f(the)h(\014rst)f(column)g(is)g(considered)h(a)150 ! 714 y(commen)m(t.)53 b(Ev)m(erything)34 b(follo)m(wing)h(the)g(`)p ! Fn(#)p Fs(')f(is)g(ignored,)h(up)e(to)i(and)e(including)h(the)g(follo)m ! (wing)h(new-)150 824 y(line.)57 b(A)36 b(line)h(b)s(eginning)e(with)g ! (`)p Fn(\045)p Fs(')h(in)g(the)g(\014rst)f(column)g(is)h(an)g(option)g ! (declaration)i(and)d(m)m(ust)h(not)150 934 y(o)s(ccur)30 ! b(within)g(the)h(k)m(eyw)m(ords)f(section.)275 1072 y(The)36 b(\014rst)g(\014eld)g(of)h(eac)m(h)g(non-commen)m(t)h(line)f(is)g(alw)m (a)m(ys)h(the)f(k)m(eyw)m(ord)g(itself.)60 b(It)37 b(can)g(b)s(e)f(giv) ! m(en)150 1181 y(in)f(t)m(w)m(o)h(w)m(a)m(ys:)51 b(as)35 b(a)g(simple)g(name,)i(i.e.,)g(without)e(surrounding)e(string)i ! (quotation)h(marks,)g(or)f(as)h(a)150 1291 y(string)i(enclosed)g(in)f (double-quotes,)j(in)d(C)h(syn)m(tax,)i(p)s(ossibly)d(with)g(bac)m ! (kslash)h(escap)s(es)g(lik)m(e)h Fn(\\")e Fs(or)150 1401 ! y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)37 b(In)24 b(either)h(case,)i (it)e(m)m(ust)f(start)h(righ)m(t)g(at)g(the)g(b)s(eginning)e(of)i(the)g ! (line,)h(without)e(leading)150 1510 y(whitespace.)58 b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g ! (extend)g(up)f(to,)j(but)d(not)h(include,)i(the)150 1620 y(\014rst)g(blank,)i(comma,)i(or)c(newline.)65 b(Here)39 b(is)f(a)h(simple)g(example)g(tak)m(en)g(from)f(a)h(partial)h(list)f ! (of)f(C)150 1729 y(reserv)m(ed)31 b(w)m(ords:)390 1862 ! y Fn(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g ! (c.gperf)f(file)390 1966 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g ! (C)g(reserved)f(words.)390 2069 y(unsigned)390 2173 y(sizeof)390 ! 2277 y(switch)390 2381 y(signed)390 2484 y(if)390 2588 ! y(default)390 2692 y(for)390 2796 y(while)390 2900 y(return)275 ! 3031 y Fs(Note)38 b(that)f(unlik)m(e)g Fn(flex)f Fs(or)h ! Fn(bison)e Fs(the)j(\014rst)e(`)p Fn(\045\045)p Fs(')g(mark)m(er)i(ma)m ! (y)f(b)s(e)f(elided)h(if)g(the)g(declaration)150 3140 ! y(section)32 b(is)e(empt)m(y)-8 b(.)275 3279 y(Additional)29 b(\014elds)f(ma)m(y)h(optionally)h(follo)m(w)g(the)f(leading)g(k)m(eyw) m(ord.)41 b(Fields)29 b(should)e(b)s(e)h(separated)150 ! 3388 y(b)m(y)g(commas,)i(and)d(terminate)j(at)f(the)f(end)g(of)g(line.) 41 b(What)29 b(these)f(\014elds)g(mean)g(is)h(en)m(tirely)g(up)e(to)i ! (y)m(ou;)150 3498 y(they)k(are)h(used)e(to)i(initialize)h(the)f(elemen) ! m(ts)g(of)f(the)h(user-de\014ned)d Fn(struct)h Fs(pro)m(vided)g(b)m(y)h ! (y)m(ou)h(in)f(the)150 3607 y(declaration)40 b(section.)67 ! b(If)39 b(the)g(`)p Fn(-t)p Fs(')f(option)h(\(or,)j(equiv)-5 ! b(alen)m(tly)d(,)43 b(the)c(`)p Fn(\045struct-type)p ! Fs(')d(declaration\))150 3717 y(is)g Fl(not)45 b Fs(enabled)36 b(these)g(\014elds)g(are)g(simply)f(ignored.)58 b(All)36 b(previous)g(examples)g(except)h(the)f(last)h(one)150 ! 3826 y(con)m(tain)32 b(k)m(eyw)m(ord)f(attributes.)150 ! 4058 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 ! b(unctions)275 4254 y Fs(The)30 b(optional)i(third)e(section)i(also)g (corresp)s(onds)d(closely)j(with)f(con)m(v)m(en)m(tions)i(found)c(in)i ! Fn(flex)f Fs(and)150 4364 y Fn(bison)p Fs(.)36 b(All)23 b(text)g(in)f(this)f(section,)k(starting)e(at)g(the)f(\014nal)f(`)p ! Fn(\045\045)p Fs(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g ! (input)150 4474 y(\014le,)31 b(is)g(included)g(v)m(erbatim)g(in)m(to)h (the)f(generated)h(output)f(\014le.)42 b(Naturally)-8 b(,)33 b(it)e(is)g(y)m(our)g(resp)s(onsibilit)m(y)150 ! 4583 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)g(in)g(this)f ! (section)h(is)g(v)-5 b(alid)30 b(C.)150 4815 y Fj(3.1.4)63 b(Where)41 b(to)g(place)f(directiv)m(es)g(for)i(GNU)g ! Fi(indent)p Fj(.)275 5011 y Fs(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m ! (v)m(ok)m(e)h(GNU)f Fn(indent)e Fs(on)h(a)g Fn(gperf)f ! Fs(input)h(\014le,)h(y)m(ou)f(will)h(see)g(that)g(GNU)g ! Fn(indent)150 5121 y Fs(do)s(esn't)33 b(understand)e(the)i(`)p ! Fn(\045\045)p Fs(',)h(`)p Fn(\045{)p Fs(')e(and)h(`)p ! Fn(\045})p Fs(')g(directiv)m(es)h(that)f(con)m(trol)i ! Fn(gperf)p Fs('s)c(in)m(terpretation)k(of)150 5230 y(the)23 b(input)f(\014le.)38 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g ! (insert)f(some)g(directiv)m(es)h(for)f(GNU)h Fn(indent)p ! Fs(.)36 b(More)24 b(precisely)-8 b(,)150 5340 y(assuming)30 ! b(the)h(most)f(general)i(input)d(\014le)i(structure)p ! eop end ! %%Page: 17 19 ! TeXDict begin 17 18 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(17)390 299 y Fn(declarations)44 b(part)j(1)390 403 ! y(\045{)390 506 y(verbatim)f(code)390 610 y(\045})390 ! 714 y(declarations)e(part)j(2)390 818 y(\045\045)390 ! 922 y(keywords)390 1025 y(\045\045)390 1129 y(functions)150 ! 1263 y Fs(y)m(ou)31 b(w)m(ould)f(insert)g(`)p Fn(*INDENT-OFF*)p ! Fs(')e(and)h(`)p Fn(*INDENT-ON*)p Fs(')f(commen)m(ts)k(as)e(follo)m ! (ws:)390 1397 y Fn(/*)47 b(*INDENT-OFF*)e(*/)390 1501 ! y(declarations)f(part)j(1)390 1605 y(\045{)390 1709 y(/*)g(*INDENT-ON*) ! e(*/)390 1812 y(verbatim)h(code)390 1916 y(/*)h(*INDENT-OFF*)e(*/)390 ! 2020 y(\045})390 2124 y(declarations)f(part)j(2)390 2227 ! y(\045\045)390 2331 y(keywords)390 2435 y(\045\045)390 ! 2539 y(/*)g(*INDENT-ON*)e(*/)390 2643 y(functions)150 ! 2906 y Fr(3.2)68 b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f ! (Co)t(de)g(with)g Fk(gperf)275 3105 y Fs(Sev)m(eral)28 b(options)g(con)m(trol)h(ho)m(w)e(the)h(generated)h(C)e(co)s(de)h(app)s (ears)e(on)i(the)g(standard)e(output.)40 b(Tw)m(o)150 ! 3215 y(C)22 b(function)g(are)g(generated.)39 b(They)22 ! b(are)h(called)g Fn(hash)e Fs(and)h Fn(in_word_set)p ! Fs(,)f(although)h(y)m(ou)h(ma)m(y)g(mo)s(dify)150 3324 y(their)32 b(names)g(with)g(a)g(command-line)h(option.)46 b(Both)33 b(functions)f(require)g(t)m(w)m(o)h(argumen)m(ts,)g(a)g ! (string,)150 3434 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)h ! (parameter,)j Fn(int)42 b Fo(len)p Fs(.)79 b(Their)43 b(default)g(function)g(protot)m(yp)s(es)g(are)h(as)150 ! 3543 y(follo)m(ws:)3525 3796 y(F)-8 b(unction)-3724 b ! Fh(unsigned)41 b(int)e Fg(hash)44 b Ff(\()p Fn(const)30 ! b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p ! Ff(\))390 3905 y Fs(By)35 b(default,)h(the)e(generated)i ! Fn(hash)d Fs(function)h(returns)f(an)i(in)m(teger)h(v)-5 ! b(alue)34 b(created)i(b)m(y)e(adding)390 4015 y Fo(len)28 ! b Fs(to)g(sev)m(eral)h(user-sp)s(eci\014ed)d Fo(str)34 ! b Fs(b)m(yte)28 b(p)s(ositions)g(indexed)f(in)m(to)h(an)f ! Fo(asso)s(ciated)i(v)-5 b(alues)32 b Fs(table)390 4124 ! y(stored)c(in)g(a)g(lo)s(cal)i(static)f(arra)m(y)-8 b(.)41 ! b(The)28 b(asso)s(ciated)h(v)-5 b(alues)29 b(table)g(is)f(constructed)g ! (in)m(ternally)h(b)m(y)390 4234 y Fn(gperf)34 b Fs(and)g(later)i ! (output)e(as)i(a)f(static)i(lo)s(cal)f(C)e(arra)m(y)i(called)g(`)p ! Fn(hash_table)p Fs('.)52 b(The)35 b(relev)-5 b(an)m(t)390 ! 4344 y(selected)28 b(p)s(ositions)f(\(i.e.)41 b(indices)27 ! b(in)m(to)h Fo(str)7 b Fs(\))26 b(are)h(sp)s(eci\014ed)f(via)i(the)f(`) ! p Fn(-k)p Fs(')g(option)g(when)f(running)390 4453 y Fn(gperf)p ! Fs(,)j(as)i(detailed)g(in)f(the)h Fl(Options)39 b Fs(section)31 ! b(b)s(elo)m(w)g(\(see)g(Chapter)f(4)h([Options],)f(page)h(19\).)3525 ! 4705 y(F)-8 b(unction)-3724 b Fg(in)p 253 4705 35 5 v ! 41 w(w)m(ord)p 542 4705 V 41 w(set)44 b Ff(\()p Fn(const)30 ! b(char)f(*)h Fo(str)p Fn(,)g(unsigned)e(int)h Fo(len)p ! Ff(\))390 4815 y Fs(If)k Fo(str)41 b Fs(is)33 b(in)h(the)g(k)m(eyw)m ! (ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)f(to)g(that)h(k)m(eyw)m(ord.) ! 51 b(More)35 b(exactly)-8 b(,)37 b(if)d(the)390 4924 ! y(option)d(`)p Fn(-t)p Fs(')g(\(or,)g(equiv)-5 b(alen)m(tly)d(,)33 ! b(the)e(`)p Fn(\045struct-type)p Fs(')d(declaration\))k(w)m(as)f(giv)m ! (en,)h(it)f(returns)f(a)390 5034 y(p)s(oin)m(ter)g(to)h(the)g(matc)m ! (hing)h(k)m(eyw)m(ord's)e(structure.)41 b(Otherwise)30 ! b(it)h(returns)e Fn(NULL)p Fs(.)275 5230 y(If)39 b(the)i(option)f(`)p ! Fn(-c)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)45 b(the)c(`)p ! Fn(\045compare-strncmp)p Fs(')36 b(declaration\))42 b(is)e(not)g(used,) ! 150 5340 y Fo(str)k Fs(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)h ! (string)f(of)h(exactly)h(length)e Fo(len)p Fs(.)62 b(If)37 ! b(`)p Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 ! b(the)p eop end %%Page: 18 20 ! TeXDict begin 18 19 bop 150 -116 a Fs(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fn(gperf)1520 ! b Fs(18)150 299 y(`)p Fn(\045compare-strncmp)p Fs(')22 ! b(declaration\))28 b(is)e(used,)g Fo(str)32 b Fs(m)m(ust)26 ! b(simply)g(b)s(e)f(an)h(arra)m(y)g(of)g Fo(len)g Fs(b)m(ytes)h(and)e ! (do)s(es)150 408 y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 ! 543 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions)e ! (is)g(a\013ected)i(b)m(y)f(the)f(follo)m(wing)i(options:)150 ! 702 y(`)p Fn(-t)p Fs(')150 812 y(`)p Fn(--struct-type)p ! Fs(')630 922 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f ! Fn(struct)p Fs(.)150 1081 y(`)p Fn(-S)h Fo(total-switc)m(h-statemen)m ! (ts)t Fs(')150 1191 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m ! (ts)t Fs(')630 1300 y(Generate)22 b(1)f(or)g(more)g(C)f ! Fn(switch)f Fs(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)j(\(and) ! c(p)s(oten)m(tially)630 1410 y(sparse\))j(static)h(arra)m(y)-8 b(.)40 b(Although)23 b(the)g(exact)h(time)g(and)e(space)i(sa)m(vings)g ! (of)f(this)g(approac)m(h)630 1519 y(v)-5 b(ary)32 b(according)g(to)h(y) m(our)e(C)g(compiler's)i(degree)f(of)g(optimization,)i(this)d(metho)s ! (d)h(often)630 1629 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.) ! 275 1788 y(If)c(the)h(`)p Fn(-t)p Fs(')g(and)f(`)p Fn(-S)p ! Fs(')g(options)i(\(or,)f(equiv)-5 b(alen)m(tly)d(,)31 ! b(the)d(`)p Fn(\045struct-type)p Fs(')d(and)i(`)p Fn(\045switch)p ! Fs(')g(declara-)150 1898 y(tions\))f(are)f(omitted,)i(the)e(default)g ! (action)h(is)f(to)h(generate)g(a)g Fn(char)j(*)24 b Fs(arra)m(y)i(con)m ! (taining)g(the)f(k)m(eyw)m(ords,)150 2007 y(together)32 b(with)e(additional)i(empt)m(y)f(strings)f(used)g(for)g(padding)g(the)g (arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)h(with)150 ! 2117 y(the)g(v)-5 b(arious)32 b(input)e(and)g(output)h(options,)h(and)f (timing)g(the)h(resulting)f(C)g(co)s(de,)h(y)m(ou)f(can)h(determine)150 ! 2227 y(the)f(b)s(est)f(option)g(c)m(hoices)i(for)f(di\013eren)m(t)f(k)m ! (eyw)m(ord)h(set)g(c)m(haracteristics.)150 2484 y Fr(3.3)68 ! b(Use)46 b(of)f(NUL)g(b)l(ytes)275 2677 y Fs(By)30 b(default,)h(the)f ! (co)s(de)g(generated)i(b)m(y)e Fn(gperf)e Fs(op)s(erates)j(on)f(zero)h ! (terminated)g(strings,)f(the)g(usual)150 2786 y(represen)m(tation)41 b(of)e(strings)h(in)f(C.)h(This)e(means)i(that)g(the)g(k)m(eyw)m(ords)g ! (in)f(the)h(input)f(\014le)g(m)m(ust)h(not)150 2896 y(con)m(tain)d(NUL) ! f(b)m(ytes,)i(and)e(the)g Fo(str)42 b Fs(argumen)m(t)36 ! b(passed)g(to)g Fn(hash)f Fs(or)h Fn(in_word_set)d Fs(m)m(ust)j(b)s(e)f ! (NUL)150 3005 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f ! Fo(len)p Fs(.)275 3140 y(If)k(option)i(`)p Fn(-c)p Fs(')f(\(or,)i ! (equiv)-5 b(alen)m(tly)d(,)40 b(the)c(`)p Fn(\045compare-strncmp)p ! Fs(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 ! 3249 y Fo(str)e Fs(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to)h(b)s(e)e (NUL)h(terminated.)41 b(The)27 b(co)s(de)h(generated)h(b)m(y)f ! Fn(gperf)f Fs(will)h(only)150 3359 y(access)h(the)f(\014rst)g ! Fo(len)p Fs(,)g(not)h Fo(len)p Fn(+)p Fo(1)p Fs(,)f(b)m(ytes)h ! (starting)g(at)f Fo(str)p Fs(.)40 b(Ho)m(w)m(ev)m(er,)31 b(the)d(k)m(eyw)m(ords)g(in)g(the)g(input)f(\014le)150 ! 3469 y(still)k(m)m(ust)g(not)f(con)m(tain)i(NUL)e(b)m(ytes.)275 ! 3603 y(If)35 b(option)i(`)p Fn(-l)p Fs(')f(\(or,)i(equiv)-5 ! b(alen)m(tly)d(,)40 b(the)c(`)p Fn(\045compare-lengths)p ! Fs(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 ! 3713 y(hash)c(table)i(p)s(erforms)d(binary)h(comparison.)47 b(The)33 b(k)m(eyw)m(ords)g(in)f(the)h(input)f(\014le)g(ma)m(y)i(con)m ! (tain)g(NUL)150 3822 y(b)m(ytes,)46 b(written)41 b(in)h(string)g(syn)m ! (tax)g(as)g Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)i(and)d(the)h(co)s(de)g ! (generated)h(b)m(y)f Fn(gperf)f Fs(will)150 3932 y(treat)i(NUL)e(lik)m (e)i(an)m(y)f(other)g(b)m(yte.)75 b(Also,)45 b(in)c(this)g(case)i(the)f ! (`)p Fn(-c)p Fs(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47 ! b(the)150 4042 y(`)p Fn(\045compare-strncmp)p Fs(')26 b(declaration\))33 b(is)d(ignored.)p eop end %%Page: 19 21 ! TeXDict begin 19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(19)150 299 y ! Fp(4)80 b(In)l(v)l(oking)52 b Fm(gperf)275 542 y Fs(There)35 ! b(are)i Fl(many)46 b Fs(options)36 b(to)i Fn(gperf)p ! Fs(.)57 b(They)36 b(w)m(ere)h(added)e(to)j(mak)m(e)f(the)g(program)f (more)g(con-)150 651 y(v)m(enien)m(t)f(for)e(use)g(with)g(real)h (applications.)50 b(\\On-line")34 b(help)f(is)g(readily)h(a)m(v)-5 ! b(ailable)36 b(via)e(the)f(`)p Fn(--help)p Fs(')150 761 y(option.)41 b(Here)31 b(is)f(the)h(complete)h(list)f(of)f(options.)150 ! 1025 y Fr(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g ! (Output)g(File)150 1247 y Fs(`)p Fn(--output-file=)p ! Fo(\014le)5 b Fs(')630 1357 y(Allo)m(ws)31 b(y)m(ou)g(to)g(sp)s(ecify)f (the)h(name)f(of)h(the)f(\014le)h(to)g(whic)m(h)f(the)h(output)f(is)g (written)g(to.)275 1521 y(The)f(results)i(are)f(written)h(to)g (standard)e(output)h(if)h(no)f(output)g(\014le)g(is)h(sp)s(eci\014ed)f ! (or)g(if)g(it)h(is)g(`)p Fn(-)p Fs('.)150 1785 y Fr(4.2)68 b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g ! (File)275 1981 y Fs(These)d(options)h(are)g(also)g(a)m(v)-5 ! b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le)g(\(see)i ! (Section)f(3.1.1.2)150 2090 y([Gp)s(erf)30 b(Declarations],)j(page)e ! (12\).)150 2254 y(`)p Fn(-e)f Fo(k)m(eyw)m(ord-delimiter-list)r ! Fs(')150 2364 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list) ! r Fs(')630 2473 y(Allo)m(ws)g(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g (con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 2583 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h ! Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j (if)d(y)m(ou)h(w)m(an)m(t)630 2692 y(to)f(use)e(k)m(eyw)m(ords)h(that)h (ha)m(v)m(e)g(em)m(b)s(edded)e(commas)h(or)g(newlines.)48 b(One)33 b(useful)f(tric)m(k)i(is)630 2802 y(to)d(use)f(-e'T)-8 b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)g(the)f(literal)i(tab)f(c)m ! (haracter.)150 2964 y(`)p Fn(-t)p Fs(')150 3074 y(`)p ! Fn(--struct-type)p Fs(')630 3183 y(Allo)m(ws)h(y)m(ou)g(to)g(include)f ! (a)g Fn(struct)f Fs(t)m(yp)s(e)h(declaration)i(for)e(generated)h(co)s (de.)44 b(An)m(y)31 b(text)630 3293 y(b)s(efore)43 b(a)i(pair)e(of)h ! (consecutiv)m(e)i(`)p Fn(\045\045)p Fs(')d(is)h(considered)g(part)f(of) h(the)g(t)m(yp)s(e)g(declaration.)630 3403 y(Keyw)m(ords)39 b(and)g(additional)h(\014elds)f(ma)m(y)i(follo)m(w)f(this,)i(one)e (group)f(of)h(\014elds)f(p)s(er)f(line.)630 3512 y(A)31 b(set)g(of)g(examples)g(for)f(generating)i(p)s(erfect)e(hash)g(tables)i ! (and)e(functions)g(for)g(Ada,)h(C,)630 3622 y(C)p Fn(++)p ! Fs(,)24 b(P)m(ascal,)j(Mo)s(dula)c(2,)j(Mo)s(dula)d(3)h(and)f(Ja)m(v)-5 b(aScript)24 b(reserv)m(ed)f(w)m(ords)g(are)h(distributed)630 ! 3731 y(with)30 b(this)g(release.)150 3894 y(`)p Fn(--ignore-case)p ! Fs(')630 4003 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 b(The)44 b(string)630 4113 y(comparison)28 b(will)h(use)f(a)h(case)g --- 4001,4399 ---- 1011 y(of)d(7-bit)h(ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g (range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 ! 1121 y(functions)f Fl(isalnum)f Fq(and)i Fl(isgraph)e ! Fq(do)i Fj(not)41 b Fq(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f (this)h(range.)630 1230 y(Only)e(an)g(explicit)i(test)f(lik)m(e)h(`)p ! Fl(c)e(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fq(')f(guaran)m(tees)j(this.\)) ! 150 1395 y(`)p Fl(\045compare-lengths)p Fq(')630 1504 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (string)e(comparison.)70 b(This)39 b(option)h(is)630 ! 1614 y(mandatory)29 b(for)f(binary)g(comparisons)h(\(see)h ! Fo(h)p Fq(unde\014ned)p Fo(i)d Fq([Binary)j(Strings],)f(page)g ! Fo(h)p Fq(un-)630 1724 y(de\014ned)p Fo(i)p Fq(\).)53 ! b(It)35 b(also)g(migh)m(t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er) ! e(of)i(string)f(comparisons)h(made)630 1833 y(during)22 ! b(the)i(lo)s(okup,)h(since)f(k)m(eyw)m(ords)g(with)g(di\013eren)m(t)g ! (lengths)g(are)g(nev)m(er)g(compared)f(via)630 1943 y ! Fl(strcmp)p Fq(.)38 b(Ho)m(w)m(ev)m(er,)31 b(using)d(`)p ! Fl(\045compare-lengths)p Fq(')c(migh)m(t)29 b(greatly)g(increase)g(the) ! g(size)g(of)630 2052 y(the)h(generated)g(C)g(co)s(de)f(if)h(the)g(lo)s ! (okup)f(table)i(range)f(is)f(large)i(\(whic)m(h)f(implies)g(that)g(the) ! 630 2162 y(switc)m(h)g(option)h(`)p Fl(-S)p Fq(')f(or)g(`)p ! Fl(\045switch)p Fq(')f(is)h(not)g(enabled\),)h(since)f(the)g(length)h ! (table)g(con)m(tains)630 2271 y(as)g(man)m(y)f(elemen)m(ts)i(as)e ! (there)h(are)g(en)m(tries)g(in)f(the)h(lo)s(okup)f(table.)150 ! 2436 y(`)p Fl(\045compare-strncmp)p Fq(')630 2545 y(Generates)22 ! b(C)f(co)s(de)g(that)h(uses)e(the)i Fl(strncmp)d Fq(function)h(to)i(p)s (erform)e(string)h(comparisons.)630 2655 y(The)30 b(default)g(action)i ! (is)f(to)g(use)f Fl(strcmp)p Fq(.)150 2819 y(`)p Fl ! (\045readonly-tables)p Fq(')630 2929 y(Mak)m(es)41 b(the)f(con)m(ten)m (ts)h(of)f(all)h(generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,) h(\\readonly".)630 3039 y(Man)m(y)31 b(compilers)g(can)g(generate)h (more)e(e\016cien)m(t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h (tables)630 3148 y(in)f(readonly)h(memory)-8 b(.)150 ! 3313 y(`)p Fl(\045enum)p Fq(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to)f(the)g(lo)s(okup)f (function)g(rather)g(than)630 3422 y(with)37 b(#de\014nes.)60 b(This)36 b(also)i(means)g(that)f(di\013eren)m(t)h(lo)s(okup)f (functions)g(can)g(reside)g(in)630 3532 y(the)31 b(same)f(\014le.)41 ! b(Thanks)29 b(to)j(James)e(Clark)g Fl()p ! Fq(.)150 3696 y(`)p Fl(\045includes)p Fq(')630 3806 y(Include)g(the)h ! (necessary)h(system)f(include)g(\014le,)g Fl()p ! Fq(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 3915 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e(user)f(m)m(ust)h (include)g(this)f(header)h(\014le)g(himself)630 4025 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 ! 4189 y(`)p Fl(\045global-table)p Fq(')630 4299 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m(ords)g(as)g(a)g(static)h (global)g(v)-5 b(ariable,)39 b(rather)d(than)630 4408 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s(okup)f(function)g(\(whic)m (h)g(is)h(the)f(default)h(b)s(eha)m(vior\).)150 4573 ! y(`)p Fl(\045pic)p Fq(')238 b(Optimize)42 b(the)f(generated)h(table)g (for)f(inclusion)g(in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 4682 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g (a)h(shared)e(library)h(con)m(taining)i(the)e(generated)630 ! 4792 y(co)s(de.)j(If)21 b(the)h(`)p Fl(\045struct-type)p ! Fq(')d(declaration)24 b(\(or,)g(equiv)-5 b(alen)m(tly)d(,)26 ! b(the)c(option)g(`)p Fl(-t)p Fq('\))g(is)g(also)630 4902 y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e ! (struct)i(m)m(ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fl(int)p ! Fq(',)f(not)h(`)p Fl(char)630 5011 y(*)p Fq(',)h(b)s(ecause)f(it)i (will)e(con)m(tain)i(o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h (instead)f(of)h(actual)h(strings.)630 5121 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f(an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f ! (can)g(use)f(the)h(expression)f(`)p Fl(stringpool)630 ! 5230 y(+)e Fm(o)5 b Fq(',)34 b(where)f Fm(o)38 b Fq(is)33 b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s ! (e)g(c)m(hanged)g(through)g(the)630 5340 y(`)p Fl(\045define)c ! (string-pool-name)p Fq(')d(declaration.)p eop end %%Page: 15 17 ! TeXDict begin 15 16 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(15)150 299 y(`)p Fl(\045define)29 b(string-pool-name)d ! Fm(name)5 b Fq(')630 408 y(Allo)m(ws)42 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(of)g(the)g(generated)h(string)f(p)s(o)s(ol)g(created)h(b) ! m(y)f(the)630 518 y(declaration)48 b(`)p Fl(\045pic)p ! Fq(')e(\(or,)51 b(equiv)-5 b(alen)m(tly)d(,)53 b(the)47 ! b(option)f(`)p Fl(-P)p Fq('\).)90 b(The)46 b(default)g(name)h(is)630 ! 628 y(`)p Fl(stringpool)p Fq('.)38 b(This)29 b(declaration)i(p)s (ermits)e(the)h(use)g(of)g(t)m(w)m(o)h(hash)e(tables)h(in)g(the)g(same) ! 630 737 y(\014le,)39 b(with)d(`)p Fl(\045pic)p Fq(')g(and)g(ev)m(en)h ! (when)f(the)h(`)p Fl(\045global-table)p Fq(')c(declaration)38 b(\(or,)h(equiv)-5 b(a-)630 847 y(len)m(tly)d(,)32 b(the)f(option)g(`)p ! Fl(-G)p Fq('\))f(is)h(giv)m(en.)150 1074 y(`)p Fl(\045null-strings)p ! Fq(')630 1183 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i (strings)e(for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 ! 1293 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f ! (a)h(shared)f(library)g(con)m(taining)630 1402 y(the)29 b(generated)g(co)s(de)g(\(but)f(not)g(as)h(m)m(uc)m(h)g(as)f(the)h ! (declaration)h(`)p Fl(\045pic)p Fq('\),)f(at)g(the)f(exp)s(ense)630 ! 1512 y(of)j(one)f(more)h(test-and-branc)m(h)g(instruction)f(at)h(run)e ! (time.)150 1739 y(`)p Fl(\045define)g(word-array-name)d ! Fm(name)5 b Fq(')630 1848 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e ! (hash)630 1958 y(table.)106 b(Default)53 b(name)e(is)h(`)p ! Fl(wordlist)p Fq('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g ! (of)g(t)m(w)m(o)630 2068 y(hash)37 b(tables)h(in)g(the)g(same)g ! (\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fl(-G)p ! Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 ! 2177 y(`)p Fl(\045global-table)p Fq(')27 b(declaration\))33 ! b(is)d(giv)m(en.)150 2404 y(`)p Fl(\045define)f(length-table-name)c ! Fm(name)5 b Fq(')630 2514 y(Allo)m(ws)36 b(y)m(ou)e(to)i(sp)s(ecify)e ! (the)h(name)f(for)g(the)h(generated)h(arra)m(y)f(con)m(taining)h(the)f ! (length)630 2623 y(table.)77 b(Default)43 b(name)g(is)f(`)p ! Fl(lengthtable)p Fq('.)74 b(This)41 b(option)i(p)s(ermits)e(the)h(use)g ! (of)h(t)m(w)m(o)630 2733 y(length)33 b(tables)h(in)f(the)g(same)g ! (\014le,)h(ev)m(en)g(when)e(the)h(option)h(`)p Fl(-G)p ! Fq(')f(\(or,)h(equiv)-5 b(alen)m(tly)d(,)36 b(the)630 ! 2842 y(`)p Fl(\045global-table)p Fq(')27 b(declaration\))33 ! b(is)d(giv)m(en.)150 3069 y(`)p Fl(\045switch=)p Fm(coun)m(t)r ! Fq(')630 3179 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e ! (a)h Fl(switch)e Fq(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 ! 3289 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) ! 630 3398 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 ! 3508 y(ho)m(w)33 b(man)m(y)f Fl(switch)f Fq(statemen)m(ts)k(are)e (generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f ! Fl(switch)630 3617 y Fq(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i (a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h ! (the)g(elemen)m(ts)630 3727 y(in)38 b(eac)m(h)h Fl(switch)p ! Fq(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e ! (compilers)i(cannot)g(correctly)630 3836 y(generate)29 ! b(co)s(de)f(for)f(large)h Fl(switch)e Fq(statemen)m(ts.)41 b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 ! 3946 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 ! 4173 y(`)p Fl(\045omit-struct-type)p Fq(')630 4282 y(Prev)m(en)m(ts)f (the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)h(to)g(the)f ! (output)f(\014le.)40 b(Use)28 b(this)f(option)630 4392 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g(de\014ned)e(elsewhere.)150 ! 4751 y Fh(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 ! 5011 y Fq(Using)26 b(a)g(syn)m(tax)h(similar)f(to)h(GNU)f(utilities)i ! Fl(flex)d Fq(and)g Fl(bison)p Fq(,)h(it)g(is)g(p)s(ossible)g(to)g ! (directly)h(include)150 5121 y(C)i(source)h(text)g(and)f(commen)m(ts)h (v)m(erbatim)g(in)m(to)h(the)e(generated)i(output)e(\014le.)40 ! b(This)29 b(is)g(accomplished)150 5230 y(b)m(y)37 b(enclosing)h(the)g (region)g(inside)e(left-justi\014ed)i(surrounding)d(`)p ! Fl(\045{)p Fq(',)k(`)p Fl(\045})p Fq(')e(pairs.)61 b(Here)38 ! b(is)f(an)g(input)150 5340 y(fragmen)m(t)31 b(based)f(on)g(the)h ! (previous)f(example)h(that)g(illustrates)g(this)g(feature:)p ! eop end %%Page: 16 18 ! TeXDict begin 16 17 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(16)390 299 y Fl(\045{)390 403 y(#include)46 b()390 ! 506 y(/*)h(This)g(section)f(of)h(code)f(is)i(inserted)d(directly)h ! (into)g(the)h(output.)f(*/)390 610 y(int)h(return_month_days)c ! (\(struct)j(month)g(*months,)g(int)h(is_leap_year\);)390 ! 714 y(\045})390 818 y(struct)f(month)g({)i(char)f(*name;)f(int)h ! (number;)e(int)i(days;)g(int)g(leap_days;)e(};)390 922 ! y(\045\045)390 1025 y(january,)141 b(1,)47 b(31,)g(31)390 ! 1129 y(february,)93 b(2,)47 b(28,)g(29)390 1233 y(march,)237 ! b(3,)47 b(31,)g(31)390 1337 y(...)150 1632 y Fh(3.1.2)63 ! b(F)-10 b(ormat)41 b(for)h(Keyw)m(ord)e(En)m(tries)275 ! 1865 y Fq(The)33 b(second)i(input)e(\014le)i(format)g(section)g(con)m ! (tains)h(lines)e(of)h(k)m(eyw)m(ords)g(and)e(an)m(y)i(asso)s(ciated)h ! (at-)150 1974 y(tributes)i(y)m(ou)h(migh)m(t)g(supply)-8 ! b(.)64 b(A)39 b(line)f(b)s(eginning)g(with)g(`)p Fl(#)p ! Fq(')h(in)f(the)h(\014rst)f(column)g(is)g(considered)h(a)150 ! 2084 y(commen)m(t.)53 b(Ev)m(erything)34 b(follo)m(wing)h(the)g(`)p ! Fl(#)p Fq(')f(is)g(ignored,)h(up)e(to)i(and)e(including)h(the)g(follo)m ! (wing)h(new-)150 2193 y(line.)57 b(A)36 b(line)h(b)s(eginning)e(with)g ! (`)p Fl(\045)p Fq(')h(in)g(the)g(\014rst)f(column)g(is)h(an)g(option)g ! (declaration)i(and)d(m)m(ust)h(not)150 2303 y(o)s(ccur)30 ! b(within)g(the)h(k)m(eyw)m(ords)f(section.)275 2477 y(The)36 b(\014rst)g(\014eld)g(of)h(eac)m(h)g(non-commen)m(t)h(line)f(is)g(alw)m (a)m(ys)h(the)f(k)m(eyw)m(ord)g(itself.)60 b(It)37 b(can)g(b)s(e)f(giv) ! m(en)150 2587 y(in)f(t)m(w)m(o)h(w)m(a)m(ys:)51 b(as)35 b(a)g(simple)g(name,)i(i.e.,)g(without)e(surrounding)e(string)i ! (quotation)h(marks,)g(or)f(as)h(a)150 2696 y(string)i(enclosed)g(in)f (double-quotes,)j(in)d(C)h(syn)m(tax,)i(p)s(ossibly)d(with)g(bac)m ! (kslash)h(escap)s(es)g(lik)m(e)h Fl(\\")e Fq(or)150 2806 ! y Fl(\\234)23 b Fq(or)i Fl(\\xa8)p Fq(.)37 b(In)24 b(either)h(case,)i (it)e(m)m(ust)f(start)h(righ)m(t)g(at)g(the)g(b)s(eginning)e(of)i(the)g ! (line,)h(without)e(leading)150 2916 y(whitespace.)58 b(In)35 b(this)h(con)m(text,)j(a)e(\\\014eld")f(is)g(considered)g(to)g ! (extend)g(up)f(to,)j(but)d(not)h(include,)i(the)150 3025 y(\014rst)g(blank,)i(comma,)i(or)c(newline.)65 b(Here)39 b(is)f(a)h(simple)g(example)g(tak)m(en)g(from)f(a)h(partial)h(list)f ! (of)f(C)150 3135 y(reserv)m(ed)31 b(w)m(ords:)390 3303 ! y Fl(#)47 b(These)g(are)g(a)g(few)g(C)h(reserved)d(words,)h(see)h(the)g ! (c.gperf)f(file)390 3407 y(#)h(for)g(a)h(complete)d(list)i(of)g(ANSI)g ! (C)g(reserved)f(words.)390 3511 y(unsigned)390 3615 y(sizeof)390 ! 3718 y(switch)390 3822 y(signed)390 3926 y(if)390 4030 ! y(default)390 4133 y(for)390 4237 y(while)390 4341 y(return)275 ! 4508 y Fq(Note)38 b(that)f(unlik)m(e)g Fl(flex)f Fq(or)h ! Fl(bison)e Fq(the)j(\014rst)e(`)p Fl(\045\045)p Fq(')g(mark)m(er)i(ma)m ! (y)f(b)s(e)f(elided)h(if)g(the)g(declaration)150 4618 ! y(section)32 b(is)e(empt)m(y)-8 b(.)275 4792 y(Additional)29 b(\014elds)f(ma)m(y)h(optionally)h(follo)m(w)g(the)f(leading)g(k)m(eyw) m(ord.)41 b(Fields)29 b(should)e(b)s(e)h(separated)150 ! 4902 y(b)m(y)g(commas,)i(and)d(terminate)j(at)f(the)f(end)g(of)g(line.) 41 b(What)29 b(these)f(\014elds)g(mean)g(is)h(en)m(tirely)g(up)e(to)i ! (y)m(ou;)150 5011 y(they)k(are)h(used)e(to)i(initialize)h(the)f(elemen) ! m(ts)g(of)f(the)h(user-de\014ned)d Fl(struct)h Fq(pro)m(vided)g(b)m(y)h ! (y)m(ou)h(in)f(the)150 5121 y(declaration)40 b(section.)67 ! b(If)39 b(the)g(`)p Fl(-t)p Fq(')f(option)h(\(or,)j(equiv)-5 ! b(alen)m(tly)d(,)43 b(the)c(`)p Fl(\045struct-type)p ! Fq(')d(declaration\))150 5230 y(is)g Fj(not)45 b Fq(enabled)36 b(these)g(\014elds)g(are)g(simply)f(ignored.)58 b(All)36 b(previous)g(examples)g(except)h(the)f(last)h(one)150 ! 5340 y(con)m(tain)32 b(k)m(eyw)m(ord)f(attributes.)p ! eop end ! %%Page: 17 19 ! TeXDict begin 17 18 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(17)150 299 y Fh(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 ! b(unctions)275 490 y Fq(The)30 b(optional)i(third)e(section)i(also)g (corresp)s(onds)d(closely)j(with)f(con)m(v)m(en)m(tions)i(found)c(in)i ! Fl(flex)f Fq(and)150 600 y Fl(bison)p Fq(.)36 b(All)23 b(text)g(in)f(this)f(section,)k(starting)e(at)g(the)f(\014nal)f(`)p ! Fl(\045\045)p Fq(')h(and)f(extending)i(to)f(the)g(end)g(of)g(the)g ! (input)150 710 y(\014le,)31 b(is)g(included)g(v)m(erbatim)g(in)m(to)h (the)f(generated)h(output)f(\014le.)42 b(Naturally)-8 b(,)33 b(it)e(is)g(y)m(our)g(resp)s(onsibilit)m(y)150 ! 819 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)g(in)g(this)f ! (section)h(is)g(v)-5 b(alid)30 b(C.)150 1040 y Fh(3.1.4)63 b(Where)41 b(to)g(place)f(directiv)m(es)g(for)i(GNU)g ! Fg(indent)p Fh(.)275 1231 y Fq(If)26 b(y)m(ou)i(w)m(an)m(t)g(to)g(in)m ! (v)m(ok)m(e)h(GNU)f Fl(indent)e Fq(on)h(a)g Fl(gperf)f ! Fq(input)h(\014le,)h(y)m(ou)f(will)h(see)g(that)g(GNU)g ! Fl(indent)150 1341 y Fq(do)s(esn't)33 b(understand)e(the)i(`)p ! Fl(\045\045)p Fq(',)h(`)p Fl(\045{)p Fq(')e(and)h(`)p ! Fl(\045})p Fq(')g(directiv)m(es)h(that)f(con)m(trol)i ! Fl(gperf)p Fq('s)c(in)m(terpretation)k(of)150 1451 y(the)23 b(input)f(\014le.)38 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g ! (insert)f(some)g(directiv)m(es)h(for)f(GNU)h Fl(indent)p ! Fq(.)36 b(More)24 b(precisely)-8 b(,)150 1560 y(assuming)30 ! b(the)h(most)f(general)i(input)d(\014le)i(structure)390 ! 1688 y Fl(declarations)44 b(part)j(1)390 1791 y(\045{)390 ! 1895 y(verbatim)f(code)390 1999 y(\045})390 2103 y(declarations)e(part) ! j(2)390 2207 y(\045\045)390 2310 y(keywords)390 2414 ! y(\045\045)390 2518 y(functions)150 2644 y Fq(y)m(ou)31 ! b(w)m(ould)f(insert)g(`)p Fl(*INDENT-OFF*)p Fq(')e(and)h(`)p ! Fl(*INDENT-ON*)p Fq(')f(commen)m(ts)k(as)e(follo)m(ws:)390 ! 2772 y Fl(/*)47 b(*INDENT-OFF*)e(*/)390 2875 y(declarations)f(part)j(1) ! 390 2979 y(\045{)390 3083 y(/*)g(*INDENT-ON*)e(*/)390 ! 3187 y(verbatim)h(code)390 3291 y(/*)h(*INDENT-OFF*)e(*/)390 ! 3394 y(\045})390 3498 y(declarations)f(part)j(2)390 3602 ! y(\045\045)390 3706 y(keywords)390 3809 y(\045\045)390 ! 3913 y(/*)g(*INDENT-ON*)e(*/)390 4017 y(functions)150 ! 4263 y Fp(3.2)68 b(Output)45 b(F)-11 b(ormat)45 b(for)g(Generated)h(C)f ! (Co)t(de)g(with)g Fi(gperf)275 4454 y Fq(Sev)m(eral)28 b(options)g(con)m(trol)h(ho)m(w)e(the)h(generated)h(C)e(co)s(de)h(app)s (ears)e(on)i(the)g(standard)e(output.)40 b(Tw)m(o)150 ! 4564 y(C)22 b(function)g(are)g(generated.)39 b(They)22 ! b(are)h(called)g Fl(hash)e Fq(and)h Fl(in_word_set)p ! Fq(,)f(although)h(y)m(ou)h(ma)m(y)g(mo)s(dify)150 4673 y(their)32 b(names)g(with)g(a)g(command-line)h(option.)46 b(Both)33 b(functions)f(require)g(t)m(w)m(o)h(argumen)m(ts,)g(a)g ! (string,)150 4783 y Fl(char)c(*)43 b Fm(str)p Fq(,)j(and)d(a)g(length)h ! (parameter,)j Fl(int)42 b Fm(len)p Fq(.)79 b(Their)43 b(default)g(function)g(protot)m(yp)s(es)g(are)h(as)150 ! 4892 y(follo)m(ws:)3525 5121 y(F)-8 b(unction)-3724 b ! Ff(unsigned)41 b(int)e Fe(hash)44 b Fd(\()p Fl(const)30 ! b(char)f(*)h Fm(str)p Fl(,)g(unsigned)e(int)h Fm(len)p ! Fd(\))390 5230 y Fq(By)35 b(default,)h(the)e(generated)i ! Fl(hash)d Fq(function)h(returns)f(an)i(in)m(teger)h(v)-5 ! b(alue)34 b(created)i(b)m(y)e(adding)390 5340 y Fm(len)28 ! b Fq(to)g(sev)m(eral)h(user-sp)s(eci\014ed)d Fm(str)34 ! b Fq(b)m(yte)28 b(p)s(ositions)g(indexed)f(in)m(to)h(an)f ! Fm(asso)s(ciated)i(v)-5 b(alues)32 b Fq(table)p eop end %%Page: 18 20 ! TeXDict begin 18 19 bop 150 -116 a Fq(Chapter)30 b(3:)41 ! b(High-Lev)m(el)32 b(Description)g(of)e(GNU)h Fl(gperf)1520 ! b Fq(18)390 299 y(stored)28 b(in)g(a)g(lo)s(cal)i(static)f(arra)m(y)-8 ! b(.)41 b(The)28 b(asso)s(ciated)h(v)-5 b(alues)29 b(table)g(is)f ! (constructed)g(in)m(ternally)h(b)m(y)390 408 y Fl(gperf)34 ! b Fq(and)g(later)i(output)e(as)i(a)f(static)i(lo)s(cal)f(C)e(arra)m(y)i ! (called)g(`)p Fl(hash_table)p Fq('.)52 b(The)35 b(relev)-5 ! b(an)m(t)390 518 y(selected)28 b(p)s(ositions)f(\(i.e.)41 ! b(indices)27 b(in)m(to)h Fm(str)7 b Fq(\))26 b(are)h(sp)s(eci\014ed)f ! (via)i(the)f(`)p Fl(-k)p Fq(')g(option)g(when)f(running)390 ! 628 y Fl(gperf)p Fq(,)h(as)i(detailed)g(in)f(the)g Fj(Options)37 ! b Fq(section)29 b(b)s(elo)m(w)g(\(see)g Fo(h)p Fq(unde\014ned)p ! Fo(i)d Fq([Options],)j(page)g Fo(h)p Fq(un-)390 737 y(de\014ned)p ! Fo(i)p Fq(\).)3525 941 y(F)-8 b(unction)-3724 b Fe(in)p ! 253 941 35 5 v 41 w(w)m(ord)p 542 941 V 41 w(set)44 b ! Fd(\()p Fl(const)30 b(char)f(*)h Fm(str)p Fl(,)g(unsigned)e(int)h ! Fm(len)p Fd(\))390 1050 y Fq(If)k Fm(str)41 b Fq(is)33 ! b(in)h(the)g(k)m(eyw)m(ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)f(to)g ! (that)h(k)m(eyw)m(ord.)51 b(More)35 b(exactly)-8 b(,)37 ! b(if)d(the)390 1160 y(option)d(`)p Fl(-t)p Fq(')g(\(or,)g(equiv)-5 ! b(alen)m(tly)d(,)33 b(the)e(`)p Fl(\045struct-type)p ! Fq(')d(declaration\))k(w)m(as)f(giv)m(en,)h(it)f(returns)f(a)390 ! 1269 y(p)s(oin)m(ter)g(to)h(the)g(matc)m(hing)h(k)m(eyw)m(ord's)e ! (structure.)41 b(Otherwise)30 b(it)h(returns)e Fl(NULL)p ! Fq(.)275 1435 y(If)39 b(the)i(option)f(`)p Fl(-c)p Fq(')g(\(or,)j ! (equiv)-5 b(alen)m(tly)d(,)45 b(the)c(`)p Fl(\045compare-strncmp)p ! Fq(')36 b(declaration\))42 b(is)e(not)g(used,)150 1545 ! y Fm(str)k Fq(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)h(string)f(of)h ! (exactly)h(length)e Fm(len)p Fq(.)62 b(If)37 b(`)p Fl(-c)p ! Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)150 ! 1654 y(`)p Fl(\045compare-strncmp)p Fq(')22 b(declaration\))28 ! b(is)e(used,)g Fm(str)32 b Fq(m)m(ust)26 b(simply)g(b)s(e)f(an)h(arra)m ! (y)g(of)g Fm(len)g Fq(b)m(ytes)h(and)e(do)s(es)150 1764 ! y(not)31 b(need)f(to)h(b)s(e)f(NUL)g(terminated.)275 ! 1892 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m(w)m(o)i(functions) ! e(is)g(a\013ected)i(b)m(y)f(the)f(follo)m(wing)i(options:)150 ! 2040 y(`)p Fl(-t)p Fq(')150 2149 y(`)p Fl(--struct-type)p ! Fq(')630 2259 y(Mak)m(e)g(use)e(of)h(the)f(user-de\014ned)f ! Fl(struct)p Fq(.)150 2406 y(`)p Fl(-S)h Fm(total-switc)m(h-statemen)m ! (ts)t Fq(')150 2515 y(`)p Fl(--switch=)p Fm(total-switc)m(h-statemen)m ! (ts)t Fq(')630 2625 y(Generate)22 b(1)f(or)g(more)g(C)f ! Fl(switch)f Fq(statemen)m(t)j(rather)f(than)f(use)h(a)g(large,)j(\(and) ! c(p)s(oten)m(tially)630 2735 y(sparse\))j(static)h(arra)m(y)-8 b(.)40 b(Although)23 b(the)g(exact)h(time)g(and)e(space)i(sa)m(vings)g ! (of)f(this)g(approac)m(h)630 2844 y(v)-5 b(ary)32 b(according)g(to)h(y) m(our)e(C)g(compiler's)i(degree)f(of)g(optimization,)i(this)d(metho)s ! (d)h(often)630 2954 y(results)e(in)g(smaller)h(and)f(faster)h(co)s(de.) ! 275 3101 y(If)c(the)h(`)p Fl(-t)p Fq(')g(and)f(`)p Fl(-S)p ! Fq(')g(options)i(\(or,)f(equiv)-5 b(alen)m(tly)d(,)31 ! b(the)d(`)p Fl(\045struct-type)p Fq(')d(and)i(`)p Fl(\045switch)p ! Fq(')g(declara-)150 3210 y(tions\))f(are)f(omitted,)i(the)e(default)g ! (action)h(is)f(to)h(generate)g(a)g Fl(char)j(*)24 b Fq(arra)m(y)i(con)m ! (taining)g(the)f(k)m(eyw)m(ords,)150 3320 y(together)32 b(with)e(additional)i(empt)m(y)f(strings)f(used)g(for)g(padding)g(the)g (arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)h(with)150 ! 3430 y(the)g(v)-5 b(arious)32 b(input)e(and)g(output)h(options,)h(and)f (timing)g(the)h(resulting)f(C)g(co)s(de,)h(y)m(ou)f(can)h(determine)150 ! 3539 y(the)f(b)s(est)f(option)g(c)m(hoices)i(for)f(di\013eren)m(t)f(k)m ! (eyw)m(ord)h(set)g(c)m(haracteristics.)150 3778 y Fp(3.3)68 ! b(Use)46 b(of)f(NUL)g(b)l(ytes)275 3965 y Fq(By)30 b(default,)h(the)f ! (co)s(de)g(generated)i(b)m(y)e Fl(gperf)e Fq(op)s(erates)j(on)f(zero)h ! (terminated)g(strings,)f(the)g(usual)150 4074 y(represen)m(tation)41 b(of)e(strings)h(in)f(C.)h(This)e(means)i(that)g(the)g(k)m(eyw)m(ords)g ! (in)f(the)h(input)f(\014le)g(m)m(ust)h(not)150 4184 y(con)m(tain)d(NUL) ! f(b)m(ytes,)i(and)e(the)g Fm(str)42 b Fq(argumen)m(t)36 ! b(passed)g(to)g Fl(hash)f Fq(or)h Fl(in_word_set)d Fq(m)m(ust)j(b)s(e)f ! (NUL)150 4293 y(terminated)c(and)f(ha)m(v)m(e)h(exactly)h(length)f ! Fm(len)p Fq(.)275 4422 y(If)k(option)i(`)p Fl(-c)p Fq(')f(\(or,)i ! (equiv)-5 b(alen)m(tly)d(,)40 b(the)c(`)p Fl(\045compare-strncmp)p ! Fq(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 ! 4531 y Fm(str)e Fq(argumen)m(t)29 b(do)s(es)e(not)h(need)g(to)h(b)s(e)e (NUL)h(terminated.)41 b(The)27 b(co)s(de)h(generated)h(b)m(y)f ! Fl(gperf)f Fq(will)h(only)150 4641 y(access)h(the)f(\014rst)g ! Fm(len)p Fq(,)g(not)h Fm(len)p Fl(+)p Fm(1)p Fq(,)f(b)m(ytes)h ! (starting)g(at)f Fm(str)p Fq(.)40 b(Ho)m(w)m(ev)m(er,)31 b(the)d(k)m(eyw)m(ords)g(in)g(the)g(input)f(\014le)150 ! 4751 y(still)k(m)m(ust)g(not)f(con)m(tain)i(NUL)e(b)m(ytes.)275 ! 4879 y(If)35 b(option)i(`)p Fl(-l)p Fq(')f(\(or,)i(equiv)-5 ! b(alen)m(tly)d(,)40 b(the)c(`)p Fl(\045compare-lengths)p ! Fq(')c(declaration\))38 b(is)e(used,)h(then)f(the)150 ! 4988 y(hash)c(table)i(p)s(erforms)d(binary)h(comparison.)47 b(The)33 b(k)m(eyw)m(ords)g(in)f(the)h(input)f(\014le)g(ma)m(y)i(con)m ! (tain)g(NUL)150 5098 y(b)m(ytes,)46 b(written)41 b(in)h(string)g(syn)m ! (tax)g(as)g Fl(\\000)f Fq(or)h Fl(\\x00)p Fq(,)i(and)d(the)h(co)s(de)g ! (generated)h(b)m(y)f Fl(gperf)f Fq(will)150 5208 y(treat)i(NUL)e(lik)m (e)i(an)m(y)f(other)g(b)m(yte.)75 b(Also,)45 b(in)c(this)g(case)i(the)f ! (`)p Fl(-c)p Fq(')f(option)h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)47 ! b(the)150 5317 y(`)p Fl(\045compare-strncmp)p Fq(')26 b(declaration\))33 b(is)d(ignored.)p eop end %%Page: 19 21 ! TeXDict begin 19 20 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(19)150 299 y ! Fn(4)80 b(In)l(v)l(oking)52 b Fk(gperf)275 542 y Fq(There)35 ! b(are)i Fj(many)46 b Fq(options)36 b(to)i Fl(gperf)p ! Fq(.)57 b(They)36 b(w)m(ere)h(added)e(to)j(mak)m(e)f(the)g(program)f (more)g(con-)150 651 y(v)m(enien)m(t)f(for)e(use)g(with)g(real)h (applications.)50 b(\\On-line")34 b(help)f(is)g(readily)h(a)m(v)-5 ! b(ailable)36 b(via)e(the)f(`)p Fl(--help)p Fq(')150 761 y(option.)41 b(Here)31 b(is)f(the)h(complete)h(list)f(of)f(options.)150 ! 1025 y Fp(4.1)68 b(Sp)t(ecifying)45 b(the)g(Lo)t(cation)h(of)f(the)g ! (Output)g(File)150 1247 y Fq(`)p Fl(--output-file=)p ! Fm(\014le)5 b Fq(')630 1357 y(Allo)m(ws)31 b(y)m(ou)g(to)g(sp)s(ecify)f (the)h(name)f(of)h(the)f(\014le)h(to)g(whic)m(h)f(the)h(output)f(is)g (written)g(to.)275 1521 y(The)f(results)i(are)f(written)h(to)g (standard)e(output)h(if)h(no)f(output)g(\014le)g(is)h(sp)s(eci\014ed)f ! (or)g(if)g(it)h(is)g(`)p Fl(-)p Fq('.)150 1785 y Fp(4.2)68 b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g ! (File)275 1981 y Fq(These)29 b(options)i(are)f(also)h(a)m(v)-5 ! b(ailable)33 b(as)d(declarations)i(in)d(the)i(input)e(\014le)h(\(see)h ! Fo(h)p Fq(unde\014ned)p Fo(i)e Fq([Gp)s(erf)150 2090 ! y(Declarations],)k(page)e Fo(h)p Fq(unde\014ned)p Fo(i)p ! Fq(\).)150 2254 y(`)p Fl(-e)f Fm(k)m(eyw)m(ord-delimiter-list)r ! Fq(')150 2364 y(`)p Fl(--delimiters=)p Fm(k)m(eyw)m(ord-delimiter-list) ! r Fq(')630 2473 y(Allo)m(ws)g(y)m(ou)f(to)g(pro)m(vide)g(a)g(string)g (con)m(taining)h(delimiters)g(used)d(to)j(separate)g(k)m(eyw)m(ords)630 2583 y(from)k(their)h(attributes.)54 b(The)34 b(default)g(is)h ! Fl(")p Fq(,)p Fl(")p Fq(.)53 b(This)34 b(option)h(is)f(essen)m(tial)j (if)d(y)m(ou)h(w)m(an)m(t)630 2692 y(to)f(use)e(k)m(eyw)m(ords)h(that)h (ha)m(v)m(e)g(em)m(b)s(edded)e(commas)h(or)g(newlines.)48 b(One)33 b(useful)f(tric)m(k)i(is)630 2802 y(to)d(use)f(-e'T)-8 b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)g(the)f(literal)i(tab)f(c)m ! (haracter.)150 2964 y(`)p Fl(-t)p Fq(')150 3074 y(`)p ! Fl(--struct-type)p Fq(')630 3183 y(Allo)m(ws)h(y)m(ou)g(to)g(include)f ! (a)g Fl(struct)f Fq(t)m(yp)s(e)h(declaration)i(for)e(generated)h(co)s (de.)44 b(An)m(y)31 b(text)630 3293 y(b)s(efore)43 b(a)i(pair)e(of)h ! (consecutiv)m(e)i(`)p Fl(\045\045)p Fq(')d(is)h(considered)g(part)f(of) h(the)g(t)m(yp)s(e)g(declaration.)630 3403 y(Keyw)m(ords)39 b(and)g(additional)h(\014elds)f(ma)m(y)i(follo)m(w)f(this,)i(one)e (group)f(of)h(\014elds)f(p)s(er)f(line.)630 3512 y(A)31 b(set)g(of)g(examples)g(for)f(generating)i(p)s(erfect)e(hash)g(tables)i ! (and)e(functions)g(for)g(Ada,)h(C,)630 3622 y(C)p Fl(++)p ! Fq(,)24 b(P)m(ascal,)j(Mo)s(dula)c(2,)j(Mo)s(dula)d(3)h(and)f(Ja)m(v)-5 b(aScript)24 b(reserv)m(ed)f(w)m(ords)g(are)h(distributed)630 ! 3731 y(with)30 b(this)g(release.)150 3894 y(`)p Fl(--ignore-case)p ! Fq(')630 4003 y(Consider)43 b(upp)s(er)f(and)i(lo)m(w)m(er)h(case)g (ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)83 b(The)44 b(string)630 4113 y(comparison)28 b(will)h(use)f(a)h(case)g *************** *** 4692,4792 **** b(urkish)29 b(lo)s(cale,)i(the)f(upp)s(er)d(case)k(equiv)-5 b(alen)m(t)30 b(of)g(the)g(lo)m(w)m(ercase)h(ASCI)s(I)630 ! 4551 y(letter)42 b(`)p Fn(i)p Fs(')g(is)f(the)g(non-ASCI)s(I)e(c)m ! (haracter)k(`)p Fn(capital)29 b(i)h(with)f(dot)g(above)p ! Fs('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)d(is)g(b)s (etter)h(to)f(apply)g(an)g(upp)s(ercase)f(or)h(lo)m(w)m(ercase)i(con)m (v)m(ersion)g(on)e(the)g(string)630 4770 y(b)s(efore)30 ! b(passing)g(it)h(to)g(the)g Fn(gperf)e Fs(generated)i(function.)150 ! 5035 y Fr(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for) ! f(the)g(Output)f(Co)t(de)275 5230 y Fs(These)e(options)h(are)g(also)g ! (a)m(v)-5 b(ailable)45 b(as)e(declarations)h(in)e(the)h(input)f(\014le) ! g(\(see)i(Section)f(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)j ! (page)e(12\).)p eop end %%Page: 20 22 ! TeXDict begin 20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(20)150 299 y(`)p ! Fn(-L)30 b Fo(generated-language-name)5 b Fs(')150 408 ! y(`)p Fn(--language=)p Fo(generated-language-name)g Fs(')630 ! 518 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f(in)f(the)h (language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-)630 628 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m(tly:)630 ! 798 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f (language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m(yle)i(C)e(com-) 1110 907 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but)e(ANSI)f(C)h (compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 1017 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)i(`)p ! Fn(const)p Fs('.)630 1187 y(`)p Fn(C)p Fs(')382 b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i(ANSI)g(C)f (compilers,)k(and)1110 1296 y(also)k(b)m(y)e(old-st)m(yle)i(C)f ! (compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fn(#define)f(const)f ! Fs(to)1110 1406 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 1576 y(`)p ! Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s (o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 1685 ! y(C)p Fn(++)29 b Fs(compilers.)630 1855 y(`)p Fn(C++)p ! Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)29 b(language)j(is)f(understo)s ! (o)s(d)d(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 2025 y(The)g(default)g ! (is)h(C.)150 2195 y(`)p Fn(-a)p Fs(')334 b(This)33 b(option)h(is)f (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i ! (of)f Fn(gperf)p Fs(.)49 b(It)630 2305 y(do)s(es)30 b(not)h(do)f(an)m ! (ything.)150 2475 y(`)p Fn(-g)p Fs(')334 b(This)33 b(option)h(is)f (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i ! (of)f Fn(gperf)p Fs(.)49 b(It)630 2584 y(do)s(es)30 b(not)h(do)f(an)m ! (ything.)150 2868 y Fr(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g ! (Details)i(in)e(the)g(Output)f(Co)t(de)275 3071 y Fs(Most)21 ! b(of)g(these)g(options)g(are)g(also)h(a)m(v)-5 b(ailable)23 ! b(as)e(declarations)h(in)f(the)g(input)e(\014le)i(\(see)h(Section)f ! (3.1.1.2)150 3181 y([Gp)s(erf)30 b(Declarations],)j(page)e(12\).)150 ! 3356 y(`)p Fn(-K)f Fo(slot-name)5 b Fs(')150 3466 y(`)p ! Fn(--slot-name=)p Fo(slot-name)g Fs(')630 3575 y(This)21 ! b(option)h(is)g(only)f(useful)g(when)g(option)h(`)p Fn(-t)p ! Fs(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 b(the)c(`)p ! Fn(\045struct-type)p Fs(')630 3685 y(declaration\))41 ! b(has)e(b)s(een)f(giv)m(en.)67 b(By)39 b(default,)j(the)d(program)g ! (assumes)f(the)h(structure)630 3795 y(comp)s(onen)m(t)28 ! b(iden)m(ti\014er)h(for)f(the)g(k)m(eyw)m(ord)g(is)h(`)p ! Fn(name)p Fs('.)39 b(This)27 b(option)i(allo)m(ws)g(an)f(arbitrary)630 ! 3904 y(c)m(hoice)33 b(of)f(iden)m(ti\014er)g(for)f(this)h(comp)s(onen)m ! (t,)g(although)g(it)g(still)g(m)m(ust)g(o)s(ccur)f(as)h(the)g(\014rst) ! 630 4014 y(\014eld)e(in)g(y)m(our)g(supplied)f Fn(struct)p ! Fs(.)150 4184 y(`)p Fn(-F)h Fo(initializers)t Fs(')150 ! 4293 y(`)p Fn(--initializer-suffix=)p Fo(initializers)t ! Fs(')630 4403 y(This)21 b(option)h(is)g(only)f(useful)g(when)g(option)h ! (`)p Fn(-t)p Fs(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 ! b(the)c(`)p Fn(\045struct-type)p Fs(')630 4512 y(declaration\))34 b(has)f(b)s(een)e(giv)m(en.)49 b(It)32 b(p)s(ermits)g(to)h(sp)s(ecify)f (initializers)i(for)f(the)f(structure)630 4622 y(mem)m(b)s(ers)23 ! b(follo)m(wing)i Fo(slot-name)30 b Fs(in)23 b(empt)m(y)h(hash)f(table)h (en)m(tries.)39 b(The)23 b(list)h(of)g(initializers)630 4732 y(should)37 b(start)i(with)g(a)f(comma.)66 b(By)39 b(default,)i(the)e(emitted)g(co)s(de)g(will)f(zero-initialize)630 4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)j ! Fo(slot-name)p Fs(.)150 5011 y(`)p Fn(-H)e Fo(hash-function-name)5 ! b Fs(')150 5121 y(`)p Fn(--hash-function-name=)p Fo(hash-fu)o ! (nction-name)g Fs(')630 5230 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify) g(the)g(name)g(for)f(the)h(generated)h(hash)e(function.)40 ! b(Default)31 b(name)630 5340 y(is)f(`)p Fn(hash)p Fs('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h(t)m(w)m(o)g(hash)f (tables)h(in)f(the)h(same)g(\014le.)p eop end %%Page: 21 23 ! TeXDict begin 21 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(21)150 299 y(`)p ! Fn(-N)30 b Fo(lo)s(okup-function-name)5 b Fs(')150 408 ! y(`)p Fn(--lookup-function-name=)p Fo(lo)s(okup-fu)o(nction-name)g ! Fs(')630 518 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e(the)i(name)f (for)f(the)h(generated)h(lo)s(okup)f(function.)75 b(Default)630 ! 628 y(name)28 b(is)g(`)p Fn(in_word_set)p Fs('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g(application.)150 ! 938 y(`)p Fn(-Z)f Fo(class-name)5 b Fs(')150 1048 y(`)p ! Fn(--class-name=)p Fo(class-name)g Fs(')630 1157 y(This)66 ! b(option)i(is)f(only)h(useful)e(when)h(option)g(`)p Fn(-L)30 ! b(C++)p Fs(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)79 ! b(the)630 1267 y(`)p Fn(\045language=C++)p Fs(')43 b(declaration\))k (has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s (ecify)g(the)630 1377 y(name)30 b(of)h(generated)g(C)p ! Fn(++)f Fs(class.)41 b(Default)32 b(name)e(is)h Fn(Perfect_Hash)p ! Fs(.)150 1577 y(`)p Fn(-7)p Fs(')150 1687 y(`)p Fn(--seven-bit)p ! Fs(')630 1797 y(This)36 b(option)i(sp)s(eci\014es)f(that)g(all)h (strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m(ts)f(to)h(the) 630 1906 y(generated)e(hash)e(function)g(and)h(the)g(generated)g(lo)s --- 4406,4507 ---- b(urkish)29 b(lo)s(cale,)i(the)f(upp)s(er)d(case)k(equiv)-5 b(alen)m(t)30 b(of)g(the)g(lo)m(w)m(ercase)h(ASCI)s(I)630 ! 4551 y(letter)42 b(`)p Fl(i)p Fq(')g(is)f(the)g(non-ASCI)s(I)e(c)m ! (haracter)k(`)p Fl(capital)29 b(i)h(with)f(dot)g(above)p ! Fq('.\))72 b(F)-8 b(or)42 b(this)630 4661 y(case,)d(it)d(is)g(b)s (etter)h(to)f(apply)g(an)g(upp)s(ercase)f(or)h(lo)m(w)m(ercase)i(con)m (v)m(ersion)g(on)e(the)g(string)630 4770 y(b)s(efore)30 ! b(passing)g(it)h(to)g(the)g Fl(gperf)e Fq(generated)i(function.)150 ! 5035 y Fp(4.3)68 b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for) ! f(the)g(Output)f(Co)t(de)275 5230 y Fq(These)29 b(options)i(are)f(also) ! h(a)m(v)-5 b(ailable)33 b(as)d(declarations)i(in)d(the)i(input)e ! (\014le)h(\(see)h Fo(h)p Fq(unde\014ned)p Fo(i)e Fq([Gp)s(erf)150 ! 5340 y(Declarations],)k(page)e Fo(h)p Fq(unde\014ned)p ! Fo(i)p Fq(\).)p eop end %%Page: 20 22 ! TeXDict begin 20 21 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(20)150 299 y(`)p ! Fl(-L)30 b Fm(generated-language-name)5 b Fq(')150 408 ! y(`)p Fl(--language=)p Fm(generated-language-name)g Fq(')630 ! 518 y(Instructs)33 b Fl(gperf)f Fq(to)i(generate)h(co)s(de)f(in)f(the)h (language)h(sp)s(eci\014ed)d(b)m(y)i(the)g(option's)g(ar-)630 628 y(gumen)m(t.)41 b(Languages)31 b(handled)f(are)h(curren)m(tly:)630 ! 798 y(`)p Fl(KR-C)p Fq(')238 b(Old-st)m(yle)27 b(K&R)f(C.)g(This)f (language)j(is)f(understo)s(o)s(d)d(b)m(y)i(old-st)m(yle)i(C)e(com-) 1110 907 y(pilers)e(and)g(ANSI)f(C)h(compilers,)i(but)e(ANSI)f(C)h (compilers)h(ma)m(y)f(\015ag)h(w)m(arn-)1110 1017 y(ings)30 b(\(or)h(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)i(`)p ! Fl(const)p Fq('.)630 1187 y(`)p Fl(C)p Fq(')382 b(Common)23 b(C.)f(This)h(language)h(is)f(understo)s(o)s(d)e(b)m(y)i(ANSI)g(C)f (compilers,)k(and)1110 1296 y(also)k(b)m(y)e(old-st)m(yle)i(C)f ! (compilers,)g(pro)m(vided)f(that)i(y)m(ou)f Fl(#define)f(const)f ! Fq(to)1110 1406 y(empt)m(y)k(for)f(compilers)h(whic)m(h)f(don't)g(kno)m (w)h(ab)s(out)f(this)g(k)m(eyw)m(ord.)630 1576 y(`)p ! Fl(ANSI-C)p Fq(')142 b(ANSI)39 b(C.)h(This)e(language)j(is)f(understo)s (o)s(d)e(b)m(y)h(ANSI)g(C)h(compilers)g(and)1110 1685 ! y(C)p Fl(++)29 b Fq(compilers.)630 1855 y(`)p Fl(C++)p ! Fq(')286 b(C)p Fl(++)p Fq(.)40 b(This)29 b(language)j(is)f(understo)s ! (o)s(d)d(b)m(y)i(C)p Fl(++)g Fq(compilers.)630 2025 y(The)g(default)g ! (is)h(C.)150 2195 y(`)p Fl(-a)p Fq(')334 b(This)33 b(option)h(is)f (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i ! (of)f Fl(gperf)p Fq(.)49 b(It)630 2305 y(do)s(es)30 b(not)h(do)f(an)m ! (ything.)150 2475 y(`)p Fl(-g)p Fq(')334 b(This)33 b(option)h(is)f (supp)s(orted)f(for)h(compatibilit)m(y)j(with)d(previous)g(releases)i ! (of)f Fl(gperf)p Fq(.)49 b(It)630 2584 y(do)s(es)30 b(not)h(do)f(an)m ! (ything.)150 2868 y Fp(4.4)68 b(Options)45 b(for)g(\014ne)g(tuning)g ! (Details)i(in)e(the)g(Output)f(Co)t(de)275 3071 y Fq(Most)29 ! b(of)g(these)g(options)g(are)g(also)h(a)m(v)-5 b(ailable)31 ! b(as)e(declarations)h(in)e(the)h(input)f(\014le)h(\(see)g ! Fo(h)p Fq(unde\014ned)p Fo(i)150 3181 y Fq([Gp)s(erf)h(Declarations],)j ! (page)e Fo(h)p Fq(unde\014ned)p Fo(i)p Fq(\).)150 3356 ! y(`)p Fl(-K)f Fm(slot-name)5 b Fq(')150 3466 y(`)p Fl(--slot-name=)p ! Fm(slot-name)g Fq(')630 3575 y(This)21 b(option)h(is)g(only)f(useful)g ! (when)g(option)h(`)p Fl(-t)p Fq(')f(\(or,)j(equiv)-5 ! b(alen)m(tly)d(,)26 b(the)c(`)p Fl(\045struct-type)p ! Fq(')630 3685 y(declaration\))41 b(has)e(b)s(een)f(giv)m(en.)67 ! b(By)39 b(default,)j(the)d(program)g(assumes)f(the)h(structure)630 ! 3795 y(comp)s(onen)m(t)28 b(iden)m(ti\014er)h(for)f(the)g(k)m(eyw)m ! (ord)g(is)h(`)p Fl(name)p Fq('.)39 b(This)27 b(option)i(allo)m(ws)g(an) ! f(arbitrary)630 3904 y(c)m(hoice)33 b(of)f(iden)m(ti\014er)g(for)f ! (this)h(comp)s(onen)m(t,)g(although)g(it)g(still)g(m)m(ust)g(o)s(ccur)f ! (as)h(the)g(\014rst)630 4014 y(\014eld)e(in)g(y)m(our)g(supplied)f ! Fl(struct)p Fq(.)150 4184 y(`)p Fl(-F)h Fm(initializers)t ! Fq(')150 4293 y(`)p Fl(--initializer-suffix=)p Fm(initializers)t ! Fq(')630 4403 y(This)21 b(option)h(is)g(only)f(useful)g(when)g(option)h ! (`)p Fl(-t)p Fq(')f(\(or,)j(equiv)-5 b(alen)m(tly)d(,)26 ! b(the)c(`)p Fl(\045struct-type)p Fq(')630 4512 y(declaration\))34 b(has)f(b)s(een)e(giv)m(en.)49 b(It)32 b(p)s(ermits)g(to)h(sp)s(ecify)f (initializers)i(for)f(the)f(structure)630 4622 y(mem)m(b)s(ers)23 ! b(follo)m(wing)i Fm(slot-name)30 b Fq(in)23 b(empt)m(y)h(hash)f(table)h (en)m(tries.)39 b(The)23 b(list)h(of)g(initializers)630 4732 y(should)37 b(start)i(with)g(a)f(comma.)66 b(By)39 b(default,)i(the)e(emitted)g(co)s(de)g(will)f(zero-initialize)630 4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)j ! Fm(slot-name)p Fq(.)150 5011 y(`)p Fl(-H)e Fm(hash-function-name)5 ! b Fq(')150 5121 y(`)p Fl(--hash-function-name=)p Fm(hash-fu)o ! (nction-name)g Fq(')630 5230 y(Allo)m(ws)31 b(y)m(ou)f(to)g(sp)s(ecify) g(the)g(name)g(for)f(the)h(generated)h(hash)e(function.)40 ! b(Default)31 b(name)630 5340 y(is)f(`)p Fl(hash)p Fq('.)40 b(This)30 b(option)h(p)s(ermits)e(the)i(use)f(of)h(t)m(w)m(o)g(hash)f (tables)h(in)f(the)h(same)g(\014le.)p eop end %%Page: 21 23 ! TeXDict begin 21 22 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(21)150 299 y(`)p ! Fl(-N)30 b Fm(lo)s(okup-function-name)5 b Fq(')150 408 ! y(`)p Fl(--lookup-function-name=)p Fm(lo)s(okup-fu)o(nction-name)g ! Fq(')630 518 y(Allo)m(ws)43 b(y)m(ou)f(to)h(sp)s(ecify)e(the)i(name)f (for)f(the)h(generated)h(lo)s(okup)f(function.)75 b(Default)630 ! 628 y(name)28 b(is)g(`)p Fl(in_word_set)p Fq('.)37 b(This)27 b(option)h(p)s(ermits)f(m)m(ultiple)i(generated)f(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f(in)h(the)h(same)g(application.)150 ! 938 y(`)p Fl(-Z)f Fm(class-name)5 b Fq(')150 1048 y(`)p ! Fl(--class-name=)p Fm(class-name)g Fq(')630 1157 y(This)66 ! b(option)i(is)f(only)h(useful)e(when)h(option)g(`)p Fl(-L)30 ! b(C++)p Fq(')67 b(\(or,)77 b(equiv)-5 b(alen)m(tly)d(,)79 ! b(the)630 1267 y(`)p Fl(\045language=C++)p Fq(')43 b(declaration\))k (has)f(b)s(een)f(giv)m(en.)88 b(It)46 b(allo)m(ws)h(y)m(ou)f(to)g(sp)s (ecify)g(the)630 1377 y(name)30 b(of)h(generated)g(C)p ! Fl(++)f Fq(class.)41 b(Default)32 b(name)e(is)h Fl(Perfect_Hash)p ! Fq(.)150 1577 y(`)p Fl(-7)p Fq(')150 1687 y(`)p Fl(--seven-bit)p ! Fq(')630 1797 y(This)36 b(option)i(sp)s(eci\014es)f(that)g(all)h (strings)f(that)h(will)f(b)s(e)g(passed)f(as)i(argumen)m(ts)f(to)h(the) 630 1906 y(generated)e(hash)e(function)g(and)h(the)g(generated)g(lo)s *************** *** 4794,4832 **** (ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g(range)h(0..127\).) 51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)f ! Fn(isalnum)f Fs(and)i Fn(isgraph)e Fs(do)i Fl(not)41 ! b Fs(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f(this)h(range.)630 2235 y(Only)26 b(an)g(explicit)i(test)g(lik)m(e)f(`)p ! Fn(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')25 b(guaran)m(tees)j (this.\))40 b(This)26 b(w)m(as)h(the)630 2345 y(default)g(in)g(v)m ! (ersions)g(of)g Fn(gperf)e Fs(earlier)j(than)e(2.7;)k(no)m(w)d(the)g (default)g(is)f(to)i(supp)s(ort)d(8-bit)630 2454 y(and)30 ! b(m)m(ultib)m(yte)h(c)m(haracters.)150 2655 y(`)p Fn(-l)p ! Fs(')150 2765 y(`)p Fn(--compare-lengths)p Fs(')630 2874 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (string)e(comparison.)70 b(This)39 b(option)h(is)630 ! 2984 y(mandatory)32 b(for)h(binary)e(comparisons)i(\(see)g(Section)h ! (3.3)f([Binary)g(Strings],)g(page)g(18\).)630 3093 y(It)g(also)h(migh)m ! (t)g(cut)f(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)g ! (comparisons)g(made)g(during)f(the)630 3203 y(lo)s(okup,)i(since)g(k)m ! (eyw)m(ords)f(with)g(di\013eren)m(t)h(lengths)g(are)f(nev)m(er)h ! (compared)f(via)h Fn(strcmp)p Fs(.)630 3313 y(Ho)m(w)m(ev)m(er,)j ! (using)c(`)p Fn(-l)p Fs(')g(migh)m(t)h(greatly)h(increase)g(the)f(size) ! g(of)g(the)f(generated)i(C)e(co)s(de)h(if)630 3422 y(the)k(lo)s(okup)g ! (table)g(range)h(is)f(large)h(\(whic)m(h)f(implies)g(that)g(the)g ! (switc)m(h)h(option)f(`)p Fn(-S)p Fs(')g(or)630 3532 ! y(`)p Fn(\045switch)p Fs(')29 b(is)i(not)g(enabled\),)h(since)f(the)g ! (length)g(table)h(con)m(tains)g(as)f(man)m(y)g(elemen)m(ts)h(as)630 ! 3641 y(there)f(are)f(en)m(tries)i(in)e(the)g(lo)s(okup)g(table.)150 ! 3842 y(`)p Fn(-c)p Fs(')150 3952 y(`)p Fn(--compare-strncmp)p ! Fs(')630 4061 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i ! Fn(strncmp)d Fs(function)h(to)i(p)s(erform)e(string)h(comparisons.)630 ! 4171 y(The)30 b(default)g(action)i(is)f(to)g(use)f Fn(strcmp)p ! Fs(.)150 4372 y(`)p Fn(-C)p Fs(')150 4482 y(`)p Fn(--readonly-tables)p ! Fs(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)h (generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,)h(\\readonly".) 630 4701 y(Man)m(y)31 b(compilers)g(can)g(generate)h(more)e(e\016cien)m (t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h(tables)630 ! 4810 y(in)f(readonly)h(memory)-8 b(.)150 5011 y(`)p Fn(-E)p ! Fs(')150 5121 y(`)p Fn(--enum)p Fs(')142 b(De\014ne)31 b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to) f(the)g(lo)s(okup)f(function)g(rather)g(than)630 5230 --- 4509,4549 ---- (ASCI)s(I)e(c)m(haracters)j(\(b)m(ytes)f(in)f(the)g(range)h(0..127\).) 51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)f ! Fl(isalnum)f Fq(and)i Fl(isgraph)e Fq(do)i Fj(not)41 ! b Fq(guaran)m(tee)33 b(that)g(a)f(b)m(yte)h(is)f(in)f(this)h(range.)630 2235 y(Only)26 b(an)g(explicit)i(test)g(lik)m(e)f(`)p ! Fl(c)k(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fq(')25 b(guaran)m(tees)j (this.\))40 b(This)26 b(w)m(as)h(the)630 2345 y(default)g(in)g(v)m ! (ersions)g(of)g Fl(gperf)e Fq(earlier)j(than)e(2.7;)k(no)m(w)d(the)g (default)g(is)f(to)i(supp)s(ort)d(8-bit)630 2454 y(and)30 ! b(m)m(ultib)m(yte)h(c)m(haracters.)150 2655 y(`)p Fl(-l)p ! Fq(')150 2765 y(`)p Fl(--compare-lengths)p Fq(')630 2874 y(Compare)40 b(k)m(eyw)m(ord)g(lengths)g(b)s(efore)f(trying)h(a)h (string)e(comparison.)70 b(This)39 b(option)h(is)630 ! 2984 y(mandatory)29 b(for)f(binary)g(comparisons)h(\(see)h ! Fo(h)p Fq(unde\014ned)p Fo(i)d Fq([Binary)j(Strings],)f(page)g ! Fo(h)p Fq(un-)630 3093 y(de\014ned)p Fo(i)p Fq(\).)53 ! b(It)35 b(also)g(migh)m(t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er) ! e(of)i(string)f(comparisons)h(made)630 3203 y(during)22 ! b(the)i(lo)s(okup,)h(since)f(k)m(eyw)m(ords)g(with)g(di\013eren)m(t)g ! (lengths)g(are)g(nev)m(er)g(compared)f(via)630 3313 y ! Fl(strcmp)p Fq(.)39 b(Ho)m(w)m(ev)m(er,)31 b(using)d(`)p ! Fl(-l)p Fq(')h(migh)m(t)h(greatly)g(increase)g(the)f(size)g(of)g(the)g ! (generated)h(C)630 3422 y(co)s(de)25 b(if)f(the)h(lo)s(okup)f(table)h ! (range)g(is)f(large)i(\(whic)m(h)e(implies)h(that)g(the)f(switc)m(h)h ! (option)g(`)p Fl(-S)p Fq(')630 3532 y(or)31 b(`)p Fl(\045switch)p ! Fq(')e(is)i(not)g(enabled\),)h(since)f(the)g(length)g(table)h(con)m ! (tains)g(as)f(man)m(y)g(elemen)m(ts)630 3641 y(as)g(there)f(are)h(en)m ! (tries)g(in)f(the)h(lo)s(okup)f(table.)150 3842 y(`)p ! Fl(-c)p Fq(')150 3952 y(`)p Fl(--compare-strncmp)p Fq(')630 ! 4061 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i ! Fl(strncmp)d Fq(function)h(to)i(p)s(erform)e(string)h(comparisons.)630 ! 4171 y(The)30 b(default)g(action)i(is)f(to)g(use)f Fl(strcmp)p ! Fq(.)150 4372 y(`)p Fl(-C)p Fq(')150 4482 y(`)p Fl(--readonly-tables)p ! Fq(')630 4591 y(Mak)m(es)41 b(the)f(con)m(ten)m(ts)h(of)f(all)h (generated)f(lo)s(okup)f(tables)i(constan)m(t,)i(i.e.,)h(\\readonly".) 630 4701 y(Man)m(y)31 b(compilers)g(can)g(generate)h(more)e(e\016cien)m (t)i(co)s(de)f(for)f(this)h(b)m(y)f(putting)g(the)h(tables)630 ! 4810 y(in)f(readonly)h(memory)-8 b(.)150 5011 y(`)p Fl(-E)p ! Fq(')150 5121 y(`)p Fl(--enum)p Fq(')142 b(De\014ne)31 b(constan)m(t)g(v)-5 b(alues)31 b(using)f(an)g(en)m(um)g(lo)s(cal)i(to) f(the)g(lo)s(okup)f(function)g(rather)g(than)630 5230 *************** *** 4834,5097 **** (di\013eren)m(t)h(lo)s(okup)f(functions)g(can)g(reside)g(in)630 5340 y(the)31 b(same)f(\014le.)41 b(Thanks)29 b(to)j(James)e(Clark)g ! Fn()p Fs(.)p eop end %%Page: 22 24 ! TeXDict begin 22 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(22)150 299 y(`)p ! Fn(-I)p Fs(')150 408 y(`)p Fn(--includes)p Fs(')630 518 y(Include)30 b(the)h(necessary)h(system)f(include)g(\014le,)g ! Fn()p Fs(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 628 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e (user)f(m)m(ust)h(include)g(this)f(header)h(\014le)g(himself)630 737 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 ! 883 y(`)p Fn(-G)p Fs(')150 993 y(`)p Fn(--global-table)p ! Fs(')630 1103 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m (ords)g(as)g(a)g(static)h(global)g(v)-5 b(ariable,)39 ! b(rather)d(than)630 1212 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s (okup)f(function)g(\(whic)m(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).) ! 150 1358 y(`)p Fn(-P)p Fs(')150 1468 y(`)p Fn(--pic)p ! Fs(')190 b(Optimize)42 b(the)f(generated)h(table)g(for)f(inclusion)g (in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 ! 1577 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g(a)h(shared)e ! (library)h(con)m(taining)i(the)e(generated)630 1687 y(co)s(de.)j(If)21 ! b(the)h(option)h(`)p Fn(-t)p Fs(')e(\(or,)k(equiv)-5 ! b(alen)m(tly)d(,)25 b(the)d(`)p Fn(\045struct-type)p ! Fs(')d(declaration\))24 b(is)e(also)630 1797 y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e(struct)i(m)m ! (ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fn(int)p Fs(',)f(not)h(`)p ! Fn(char)630 1906 y(*)p Fs(',)h(b)s(ecause)f(it)i(will)e(con)m(tain)i (o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h(instead)f(of)h ! (actual)h(strings.)630 2016 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f (an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f(can)g(use)f(the)h ! (expression)f(`)p Fn(stringpool)630 2125 y(+)e Fo(o)5 ! b Fs(',)34 b(where)f Fo(o)38 b Fs(is)33 b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s(e)g(c)m(hanged)g ! (through)g(the)630 2235 y(option)e(`)p Fn(--string-pool-name)p ! Fs('.)150 2381 y(`)p Fn(-Q)f Fo(string-p)s(o)s(ol-name)5 ! b Fs(')150 2491 y(`)p Fn(--string-pool-name=)p Fo(string-p)s(o)s ! (ol-name)g Fs(')630 2600 y(Allo)m(ws)32 b(y)m(ou)g(to)g(sp)s(ecify)f (the)g(name)h(of)f(the)h(generated)g(string)f(p)s(o)s(ol)g(created)h(b) ! m(y)f(option)630 2710 y(`)p Fn(-P)p Fs('.)38 b(The)21 ! b(default)g(name)h(is)f(`)p Fn(stringpool)p Fs('.)36 b(This)20 b(option)i(p)s(ermits)f(the)g(use)g(of)h(t)m(w)m(o)h(hash)630 ! 2819 y(tables)i(in)e(the)h(same)g(\014le,)i(with)d(`)p ! Fn(-P)p Fs(')h(and)f(ev)m(en)h(when)f(the)h(option)g(`)p ! Fn(-G)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 ! 2929 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))32 ! b(is)f(giv)m(en.)150 3075 y(`)p Fn(--null-strings)p Fs(')630 ! 3185 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i(strings)e (for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 ! 3294 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f ! (a)h(shared)f(library)g(con)m(taining)630 3404 y(the)j(generated)g(co)s (de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)g(`)p ! Fn(-P)p Fs('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630 ! 3513 y(more)31 b(test-and-branc)m(h)f(instruction)h(at)g(run)e(time.) ! 150 3660 y(`)p Fn(-W)h Fo(hash-table-arra)m(y-name)5 ! b Fs(')150 3769 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m ! (y-name)g Fs(')630 3879 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e ! (hash)630 3988 y(table.)106 b(Default)53 b(name)e(is)h(`)p ! Fn(wordlist)p Fs('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g ! (of)g(t)m(w)m(o)630 4098 y(hash)37 b(tables)h(in)g(the)g(same)g ! (\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fn(-G)p ! Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 ! 4208 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))33 ! b(is)d(giv)m(en.)150 4354 y(`)p Fn(-S)g Fo(total-switc)m(h-statemen)m ! (ts)t Fs(')150 4463 y(`)p Fn(--switch=)p Fo(total-switc)m(h-statemen)m ! (ts)t Fs(')630 4573 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h ! (use)e(a)h Fn(switch)e Fs(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 ! 4682 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 ! b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space) ! 630 4792 y(requiremen)m(ts)43 b(for)h(some)f(input)g(\014les.)80 ! b(The)43 b(argumen)m(t)h(to)g(this)f(option)h(determines)630 ! 4902 y(ho)m(w)33 b(man)m(y)f Fn(switch)f Fs(statemen)m(ts)k(are)e ! (generated.)49 b(A)32 b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f ! Fn(switch)630 5011 y Fs(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i ! (a)d(v)-5 b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h ! (the)g(elemen)m(ts)630 5121 y(in)38 b(eac)m(h)h Fn(switch)p ! Fs(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e ! (compilers)i(cannot)g(correctly)630 5230 y(generate)29 ! b(co)s(de)f(for)f(large)h Fn(switch)e Fs(statemen)m(ts.)41 ! b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 ! 5340 y(Keith)k(Bostic's)h(original)f(C)f(program.)p eop ! end %%Page: 23 25 ! TeXDict begin 23 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(23)150 299 y(`)p ! Fn(-T)p Fs(')150 408 y(`)p Fn(--omit-struct-type)p Fs(')630 ! 518 y(Prev)m(en)m(ts)29 b(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g ! (declaration)h(to)g(the)f(output)f(\014le.)40 b(Use)28 ! b(this)f(option)630 628 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g ! (de\014ned)e(elsewhere.)150 795 y(`)p Fn(-p)p Fs(')334 b(This)33 b(option)h(is)f(supp)s(orted)f(for)h(compatibilit)m(y)j(with) ! d(previous)g(releases)i(of)f Fn(gperf)p Fs(.)49 b(It)630 ! 905 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 1182 y ! Fr(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f(Algorithms)h(emplo)l ! (y)l(ed)g(b)l(y)f Fk(gperf)150 1412 y Fs(`)p Fn(-k)30 ! b Fo(selected-b)m(yte-p)s(ositions)t Fs(')150 1521 y(`)p ! Fn(--key-positions=)p Fo(selected-b)m(yte-p)s(ositions)t ! Fs(')630 1631 y(Allo)m(ws)e(selection)h(of)e(the)g(b)m(yte)h(p)s (ositions)f(used)f(in)h(the)g(k)m(eyw)m(ords')h(hash)e(function.)39 ! b(The)630 1740 y(allo)m(w)m(able)24 b(c)m(hoices)g(range)e(b)s(et)m(w)m (een)h(1-255,)j(inclusiv)m(e.)38 b(The)22 b(p)s(ositions)f(are)i ! (separated)f(b)m(y)630 1850 y(commas,)27 b(e.g.,)i(`)p ! Fn(-k)h(9,4,13,14)p Fs(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,) ! i(`)p Fn(-k)i(2-7)p Fs(';)d(and)e(p)s(ositions)630 1960 y(ma)m(y)c(o)s(ccur)f(in)h(an)m(y)g(order.)37 b(F)-8 b(urthermore,)22 b(the)f(wildcard)f('*')h(causes)g(the)g(generated)h ! (hash)630 2069 y(function)37 b(to)h(consider)g Fe(all)g ! Fs(b)m(yte)g(p)s(ositions)f(in)g(eac)m(h)i(k)m(eyw)m(ord,)h(whereas)d ! ('$')h(instructs)630 2179 y(the)31 b(hash)g(function)f(to)i(use)f(the)g (\\\014nal)h(b)m(yte")g(of)f(a)h(k)m(eyw)m(ord)f(\(this)g(is)h(the)f ! (only)g(w)m(a)m(y)h(to)630 2288 y(use)e(a)h(b)m(yte)g(p)s(osition)f ! (greater)i(than)e(255,)i(inciden)m(tally\).)630 2427 ! y(F)-8 b(or)37 b(instance,)h(the)e(option)h(`)p Fn(-k)30 ! b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)f(that)630 ! 2536 y(considers)g(p)s(ositions)g(1,2,4,6,7,8,9,10,)42 b(plus)34 b(the)i(last)g(b)m(yte)f(in)g(eac)m(h)h(k)m(eyw)m(ord)g ! (\(whic)m(h)630 2646 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s (osition)g(for)f(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)67 ! b(Keyw)m(ords)38 b(with)630 2756 y(length)30 b(less)g(than)f(the)g (indicated)h(b)m(yte)h(p)s(ositions)e(w)m(ork)g(prop)s(erly)-8 ! b(,)30 b(since)f(selected)i(b)m(yte)630 2865 y(p)s(ositions)k (exceeding)h(the)g(k)m(eyw)m(ord)f(length)g(are)h(simply)e(not)i ! (referenced)f(in)f(the)i(hash)630 2975 y(function.)630 ! 3113 y(This)28 b(option)i(is)f(not)g(normally)g(needed)g(since)g(v)m ! (ersion)g(2.8)i(of)e Fn(gperf)p Fs(;)f(the)h(default)g(b)m(yte)630 ! 3223 y(p)s(ositions)36 b(are)g(computed)f(dep)s(ending)f(on)i(the)f(k)m (eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630 ! 3332 y(minimizes)31 b(the)f(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s ! (ositions.)150 3500 y(`)p Fn(-D)p Fs(')150 3609 y(`)p ! Fn(--duplicates)p Fs(')630 3719 y(Handle)h(k)m(eyw)m(ords)h(whose)f (selected)i(b)m(yte)e(sets)h(hash)e(to)i(duplicate)g(v)-5 ! b(alues.)46 b(Duplicate)630 3829 y(hash)33 b(v)-5 b(alues)34 b(can)h(o)s(ccur)e(if)h(a)g(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g ! (same)g(names,)h(but)e(p)s(ossesses)630 3938 y(di\013eren)m(t)f (attributes,)g(or)f(if)h(the)f(selected)i(b)m(yte)f(p)s(ositions)f(are) ! h(not)f(w)m(ell)h(c)m(hosen.)44 b(With)630 4048 y(the)36 ! b(-D)g(option)g Fn(gperf)e Fs(treats)j(all)f(these)h(k)m(eyw)m(ords)e (as)h(part)g(of)g(an)f(equiv)-5 b(alence)37 b(class)630 ! 4157 y(and)31 b(generates)i(a)f(p)s(erfect)g(hash)f(function)g(with)h ! (m)m(ultiple)g(comparisons)g(for)f(duplicate)630 4267 y(k)m(eyw)m(ords.)38 b(It)21 b(is)f(up)g(to)h(y)m(ou)g(to)h(completely) g(disam)m(biguate)g(the)f(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630 ! 4377 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 ! b Fn(gperf)c Fs(helps)h(y)m(ou)g(out)h(b)m(y)f(organizing)i(the)e ! (output.)630 4515 y(Using)32 b(this)g(option)g(usually)g(means)g(that)g (the)g(generated)h(hash)e(function)h(is)g(no)f(longer)630 ! 4625 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)g(p)s(ermits)f ! Fn(gperf)f Fs(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 ! 4734 y(otherwise)e(could)f(not)h(handle.)150 4902 y(`)p ! Fn(-m)f Fo(iterations)t Fs(')150 5011 y(`)p Fn(--multiple-iterations=)p ! Fo(iterations)t Fs(')630 5121 y(P)m(erform)24 b(m)m(ultiple)h(c)m ! (hoices)h(of)e(the)h(`)p Fn(-i)p Fs(')f(and)g(`)p Fn(-j)p ! Fs(')g(v)-5 b(alues,)26 b(and)d(c)m(ho)s(ose)j(the)e(b)s(est)g ! (results.)630 5230 y(This)34 b(increases)i(the)f(running)e(time)i(b)m ! (y)g(a)g(factor)h(of)f Fo(iterations)40 b Fs(but)34 b(do)s(es)g(a)i(go) ! s(o)s(d)e(job)630 5340 y(minimizing)d(the)f(generated)i(table)f(size.)p ! eop end %%Page: 24 26 ! TeXDict begin 24 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(24)150 299 y(`)p ! Fn(-i)30 b Fo(initial-v)-5 b(alue)5 b Fs(')150 408 y(`)p ! Fn(--initial-asso=)p Fo(initial-v)-5 b(alue)5 b Fs(')630 ! 518 y(Pro)m(vides)29 b(an)f(initial)h Fo(v)-5 b(alue)34 ! b Fs(for)28 b(the)g(asso)s(ciate)i(v)-5 b(alues)29 b(arra)m(y)-8 ! b(.)41 b(Default)29 b(is)f(0.)41 b(Increasing)630 628 ! y(the)30 b(initial)h(v)-5 b(alue)31 b(helps)e(in\015ate)h(the)g (\014nal)g(table)h(size,)g(p)s(ossibly)e(leading)i(to)f(more)g(time)630 ! 737 y(e\016cien)m(t)f(k)m(eyw)m(ord)e(lo)s(okups.)39 b(Note)29 b(that)e(this)g(option)h(is)f(not)g(particularly)h(useful)e ! (when)630 847 y(`)p Fn(-S)p Fs(')i(\(or,)i(equiv)-5 b(alen)m(tly)d(,)31 ! b(`)p Fn(\045switch)p Fs('\))c(is)i(used.)39 b(Also,)30 ! b(`)p Fn(-i)p Fs(')e(is)g(o)m(v)m(erridden)h(when)e(the)i(`)p ! Fn(-r)p Fs(')630 956 y(option)i(is)f(used.)150 1150 y(`)p ! Fn(-j)g Fo(jump-v)-5 b(alue)5 b Fs(')150 1260 y(`)p Fn(--jump=)p ! Fo(jump-v)-5 b(alue)5 b Fs(')630 1369 y(A\013ects)41 b(the)f(\\jump)f(v)-5 b(alue",)44 b(i.e.,)g(ho)m(w)c(far)g(to)g(adv)-5 b(ance)41 b(the)f(asso)s(ciated)i(b)m(yte)e(v)-5 b(alue)630 ! 1479 y(up)s(on)29 b(collisions.)43 b Fo(Jump-v)-5 b(alue)35 ! b Fs(is)30 b(rounded)f(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s(er,)f(the)i ! (default)g(is)f(5.)630 1588 y(If)g(the)g Fo(jump-v)-5 ! b(alue)35 b Fs(is)c(0)f Fn(gperf)f Fs(jumps)g(b)m(y)h(random)g(amoun)m ! (ts.)150 1782 y(`)p Fn(-n)p Fs(')150 1892 y(`)p Fn(--no-strlen)p ! Fs(')630 2001 y(Instructs)c(the)i(generator)g(not)f(to)h(include)f(the) h(length)f(of)g(a)h(k)m(eyw)m(ord)g(when)e(computing)630 ! 2111 y(its)41 b(hash)f(v)-5 b(alue.)72 b(This)40 b(ma)m(y)h(sa)m(v)m(e) h(a)f(few)f(assem)m(bly)h(instructions)g(in)f(the)h(generated)630 ! 2221 y(lo)s(okup)30 b(table.)150 2414 y(`)p Fn(-r)p Fs(')150 ! 2524 y(`)p Fn(--random)p Fs(')630 2633 y(Utilizes)40 b(randomness)e(to)h(initialize)h(the)f(asso)s(ciated)h(v)-5 b(alues)38 b(table.)66 b(This)38 b(frequen)m(tly)630 ! 2743 y(generates)23 b(solutions)e(faster)h(than)f(using)g (deterministic)h(initialization)i(\(whic)m(h)d(starts)h(all)630 ! 2853 y(asso)s(ciated)28 b(v)-5 b(alues)28 b(at)f(0\).)40 b(F)-8 b(urthermore,)28 b(using)f(the)g(randomization)g(option)h ! (generally)630 2962 y(increases)j(the)g(size)g(of)f(the)h(table.)150 ! 3156 y(`)p Fn(-s)f Fo(size-m)m(ultiple)5 b Fs(')150 3266 ! y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultiple)g Fs(')630 ! 3375 y(A\013ects)40 b(the)e(size)h(of)g(the)f(generated)i(hash)d (table.)66 b(The)38 b(n)m(umeric)g(argumen)m(t)h(for)f(this)630 ! 3485 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g (or)f(smaller")i(the)e(maxim)m(um)g(asso)s(ciated)630 ! 3594 y(v)-5 b(alue)38 b(range)g(should)e(b)s(e,)j(in)e(relationship)h (to)g(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62 ! b(It)38 b(can)g(b)s(e)630 3704 y(written)g(as)h(an)f(in)m(teger,)43 b(a)38 b(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er)d(or)i(a)f(fraction.) ! 66 b(F)-8 b(or)39 b(example,)j(a)630 3814 y(v)-5 b(alue)40 b(of)f(3)h(means)f(\\allo)m(w)i(the)f(maxim)m(um)f(asso)s(ciated)h(v)-5 ! b(alue)40 b(to)g(b)s(e)f(ab)s(out)g(3)g(times)630 3923 y(larger)33 b(than)g(the)g(n)m(um)m(b)s(er)e(of)i(input)f(k)m(eyw)m (ords".)49 b(Con)m(v)m(ersely)-8 b(,)35 b(a)e(v)-5 b(alue)33 ! b(of)g(1/3)h(means)630 4033 y(\\allo)m(w)43 b(the)e(maxim)m(um)f(asso)s (ciated)j(v)-5 b(alue)41 b(to)h(b)s(e)e(ab)s(out)g(3)h(times)h(smaller) ! f(than)g(the)630 4142 y(n)m(um)m(b)s(er)33 b(of)i(input)f(k)m(eyw)m (ords".)55 b(V)-8 b(alues)35 b(smaller)h(than)e(1)h(are)g(useful)f(for) ! h(limiting)h(the)630 4252 y(o)m(v)m(erall)31 b(size)e(of)g(the)f (generated)i(hash)e(table,)i(though)e(the)g(option)h(`)p ! Fn(-m)p Fs(')g(is)f(b)s(etter)h(at)g(this)630 4361 y(purp)s(ose.)630 ! 4513 y(If)44 b(`generate)h(switc)m(h')g(option)g(`)p ! Fn(-S)p Fs(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)49 b(`)p ! Fn(\045switch)p Fs('\))43 b(is)h Fl(not)54 b Fs(enabled,)630 ! 4623 y(the)45 b(maxim)m(um)h(asso)s(ciated)g(v)-5 b(alue)46 b(in\015uences)f(the)g(static)i(arra)m(y)f(table)g(size,)k(and)45 ! b(a)630 4732 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h (required)e(for)h(an)f(unsuccessful)g(searc)m(h,)j(at)f(the)630 ! 4842 y(exp)s(ense)j(of)g(extra)i(table)f(space.)630 4994 ! y(The)k(default)g(v)-5 b(alue)36 b(is)f(1,)i(th)m(us)e(the)h(default)f ! (maxim)m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630 ! 5103 y(same)h(size)g(as)f(the)h(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m(ords)h (\(for)g(e\016ciency)-8 b(,)38 b(the)d(maxim)m(um)g(asso)s(ciated)630 ! 5213 y(v)-5 b(alue)36 b(is)g(alw)m(a)m(ys)h(rounded)d(up)g(to)i(a)g(p)s (o)m(w)m(er)g(of)f(2\).)57 b(The)35 b(actual)i(table)g(size)f(ma)m(y)g ! (v)-5 b(ary)630 5322 y(somewhat,)31 b(since)g(this)f(tec)m(hnique)h(is) ! g(essen)m(tially)h(a)f(heuristic.)p eop end ! %%Page: 25 27 ! TeXDict begin 25 26 bop 150 -116 a Fs(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fn(gperf)2433 b Fs(25)150 299 y ! Fr(4.6)68 b(Informativ)l(e)47 b(Output)150 516 y Fs(`)p ! Fn(-h)p Fs(')150 626 y(`)p Fn(--help)p Fs(')142 b(Prin)m(ts)24 b(a)g(short)f(summary)g(on)h(the)g(meaning)g(of)g(eac)m(h)h(program)e ! (option.)39 b(Ab)s(orts)23 b(further)630 736 y(program)30 ! b(execution.)150 895 y(`)p Fn(-v)p Fs(')150 1005 y(`)p ! Fn(--version)p Fs(')630 1114 y(Prin)m(ts)g(out)h(the)f(curren)m(t)h(v)m ! (ersion)f(n)m(um)m(b)s(er.)150 1274 y(`)p Fn(-d)p Fs(')150 ! 1383 y(`)p Fn(--debug)p Fs(')94 b(Enables)28 b(the)h(debugging)f (option.)40 b(This)28 b(pro)s(duces)f(v)m(erb)s(ose)i(diagnostics)g(to) ! g(\\standard)630 1493 y(error")i(when)g Fn(gperf)f Fs(is)h(executing.) 45 b(It)32 b(is)f(useful)g(b)s(oth)g(for)g(main)m(taining)i(the)e ! (program)630 1602 y(and)f(for)h(determining)g(whether)f(a)h(giv)m(en)h (set)f(of)g(options)g(is)g(actually)i(sp)s(eeding)d(up)g(the)630 ! 1712 y(searc)m(h)41 b(for)e(a)h(solution.)70 b(Some)40 b(useful)f(information)h(is)g(dump)s(ed)e(at)i(the)g(end)g(of)g(the)630 ! 1822 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)h(is)g (enabled.)p eop end %%Page: 26 28 ! TeXDict begin 26 27 bop 150 -116 a Fs(Chapter)30 b(5:)41 ! b(Kno)m(wn)30 b(Bugs)g(and)g(Limitations)h(with)f Fn(gperf)1397 ! b Fs(26)150 299 y Fp(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)f ! (with)f Fm(gperf)275 533 y Fs(The)29 b(follo)m(wing)j(are)f(some)g (limitations)h(with)e(the)g(curren)m(t)h(release)g(of)g ! Fn(gperf)p Fs(:)225 667 y Fq(\017)60 b Fs(The)31 b Fn(gperf)g ! Fs(utilit)m(y)i(is)f(tuned)f(to)h(execute)h(quic)m(kly)-8 b(,)34 b(and)d(w)m(orks)h(quic)m(kly)g(for)g(small)g(to)h(medium)330 777 y(size)i(data)g(sets)g(\(around)f(1000)i(k)m(eyw)m(ords\).)54 --- 4551,4825 ---- (di\013eren)m(t)h(lo)s(okup)f(functions)g(can)g(reside)g(in)630 5340 y(the)31 b(same)f(\014le.)41 b(Thanks)29 b(to)j(James)e(Clark)g ! Fl()p Fq(.)p eop end %%Page: 22 24 ! TeXDict begin 22 23 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(22)150 299 y(`)p ! Fl(-I)p Fq(')150 408 y(`)p Fl(--includes)p Fq(')630 518 y(Include)30 b(the)h(necessary)h(system)f(include)g(\014le,)g ! Fl()p Fq(,)e(at)i(the)g(b)s(eginning)g(of)g(the)630 628 y(co)s(de.)39 b(By)27 b(default,)g(this)f(is)g(not)g(done;)i(the)e (user)f(m)m(ust)h(include)g(this)f(header)h(\014le)g(himself)630 737 y(to)31 b(allo)m(w)h(compilation)g(of)e(the)h(co)s(de.)150 ! 897 y(`)p Fl(-G)p Fq(')150 1007 y(`)p Fl(--global-table)p ! Fq(')630 1117 y(Generate)38 b(the)f(static)h(table)f(of)g(k)m(eyw)m (ords)g(as)g(a)g(static)h(global)g(v)-5 b(ariable,)39 ! b(rather)d(than)630 1226 y(hiding)30 b(it)h(inside)f(of)g(the)h(lo)s (okup)f(function)g(\(whic)m(h)g(is)h(the)f(default)h(b)s(eha)m(vior\).) ! 150 1386 y(`)p Fl(-P)p Fq(')150 1496 y(`)p Fl(--pic)p ! Fq(')190 b(Optimize)42 b(the)f(generated)h(table)g(for)f(inclusion)g (in)g(shared)f(libraries.)73 b(This)40 b(reduces)630 ! 1606 y(the)35 b(startup)g(time)h(of)f(programs)g(using)g(a)h(shared)e ! (library)h(con)m(taining)i(the)e(generated)630 1715 y(co)s(de.)j(If)21 ! b(the)h(option)h(`)p Fl(-t)p Fq(')e(\(or,)k(equiv)-5 ! b(alen)m(tly)d(,)25 b(the)d(`)p Fl(\045struct-type)p ! Fq(')d(declaration\))24 b(is)e(also)630 1825 y(giv)m(en,)32 b(the)f(\014rst)e(\014eld)i(of)f(the)h(user-de\014ned)e(struct)i(m)m ! (ust)f(b)s(e)g(of)h(t)m(yp)s(e)g(`)p Fl(int)p Fq(',)f(not)h(`)p ! Fl(char)630 1934 y(*)p Fq(',)h(b)s(ecause)f(it)i(will)e(con)m(tain)i (o\013sets)g(in)m(to)f(the)g(string)f(p)s(o)s(ol)h(instead)f(of)h ! (actual)h(strings.)630 2044 y(T)-8 b(o)33 b(con)m(v)m(ert)h(suc)m(h)f (an)f(o\013set)i(to)f(a)g(string,)h(y)m(ou)f(can)g(use)f(the)h ! (expression)f(`)p Fl(stringpool)630 2153 y(+)e Fm(o)5 ! b Fq(',)34 b(where)f Fm(o)38 b Fq(is)33 b(the)g(o\013set.)50 b(The)32 b(string)h(p)s(o)s(ol)g(name)g(can)g(b)s(e)g(c)m(hanged)g ! (through)g(the)630 2263 y(option)e(`)p Fl(--string-pool-name)p ! Fq('.)150 2423 y(`)p Fl(-Q)f Fm(string-p)s(o)s(ol-name)5 ! b Fq(')150 2533 y(`)p Fl(--string-pool-name=)p Fm(string-p)s(o)s ! (ol-name)g Fq(')630 2642 y(Allo)m(ws)32 b(y)m(ou)g(to)g(sp)s(ecify)f (the)g(name)h(of)f(the)h(generated)g(string)f(p)s(o)s(ol)g(created)h(b) ! m(y)f(option)630 2752 y(`)p Fl(-P)p Fq('.)38 b(The)21 ! b(default)g(name)h(is)f(`)p Fl(stringpool)p Fq('.)36 b(This)20 b(option)i(p)s(ermits)f(the)g(use)g(of)h(t)m(w)m(o)h(hash)630 ! 2862 y(tables)i(in)e(the)h(same)g(\014le,)i(with)d(`)p ! Fl(-P)p Fq(')h(and)f(ev)m(en)h(when)f(the)h(option)g(`)p ! Fl(-G)p Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 ! 2971 y(the)31 b(`)p Fl(\045global-table)p Fq(')c(declaration\))32 ! b(is)f(giv)m(en.)150 3131 y(`)p Fl(--null-strings)p Fq(')630 ! 3241 y(Use)39 b(NULL)g(strings)f(instead)i(of)e(empt)m(y)i(strings)e (for)h(empt)m(y)g(k)m(eyw)m(ord)g(table)h(en)m(tries.)630 ! 3351 y(This)e(reduces)g(the)h(startup)g(time)g(of)g(programs)g(using)f ! (a)h(shared)f(library)g(con)m(taining)630 3460 y(the)j(generated)g(co)s (de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)g(`)p ! Fl(-P)p Fq('\),)i(at)e(the)g(exp)s(ense)f(of)h(one)630 ! 3570 y(more)31 b(test-and-branc)m(h)f(instruction)h(at)g(run)e(time.) ! 150 3730 y(`)p Fl(-W)h Fm(hash-table-arra)m(y-name)5 ! b Fq(')150 3839 y(`)p Fl(--word-array-name=)p Fm(hash-table-arra)m ! (y-name)g Fq(')630 3949 y(Allo)m(ws)41 b(y)m(ou)f(to)h(sp)s(ecify)f (the)g(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)i(the)e ! (hash)630 4059 y(table.)106 b(Default)53 b(name)e(is)h(`)p ! Fl(wordlist)p Fq('.)103 b(This)51 b(option)h(p)s(ermits)f(the)h(use)g ! (of)g(t)m(w)m(o)630 4168 y(hash)37 b(tables)h(in)g(the)g(same)g ! (\014le,)i(ev)m(en)e(when)f(the)h(option)g(`)p Fl(-G)p ! Fq(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)42 b(the)630 ! 4278 y(`)p Fl(\045global-table)p Fq(')27 b(declaration\))33 ! b(is)d(giv)m(en.)150 4413 y(`)p Fl(--length-table-name=)p ! Fm(length-table-arra)m(y-name)5 b Fq(')630 4522 y(Allo)m(ws)36 ! b(y)m(ou)e(to)i(sp)s(ecify)e(the)h(name)f(for)g(the)h(generated)h(arra) ! m(y)f(con)m(taining)h(the)f(length)630 4632 y(table.)77 ! b(Default)43 b(name)g(is)f(`)p Fl(lengthtable)p Fq('.)74 ! b(This)41 b(option)i(p)s(ermits)e(the)h(use)g(of)h(t)m(w)m(o)630 ! 4741 y(length)33 b(tables)h(in)f(the)g(same)g(\014le,)h(ev)m(en)g(when) ! e(the)h(option)h(`)p Fl(-G)p Fq(')f(\(or,)h(equiv)-5 ! b(alen)m(tly)d(,)36 b(the)630 4851 y(`)p Fl(\045global-table)p ! Fq(')27 b(declaration\))33 b(is)d(giv)m(en.)150 5011 ! y(`)p Fl(-S)g Fm(total-switc)m(h-statemen)m(ts)t Fq(')150 ! 5121 y(`)p Fl(--switch=)p Fm(total-switc)m(h-statemen)m(ts)t ! Fq(')630 5230 y(Causes)35 b(the)h(generated)h(C)e(co)s(de)h(to)h(use)e ! (a)h Fl(switch)e Fq(statemen)m(t)k(sc)m(heme,)g(rather)d(than)630 ! 5340 y(an)j(arra)m(y)g(lo)s(okup)g(table.)64 b(This)37 ! b(can)h(lead)h(to)f(a)h(reduction)f(in)f(b)s(oth)g(time)i(and)e(space)p ! eop end %%Page: 23 25 ! TeXDict begin 23 24 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(23)630 299 y(requiremen)m(ts) ! 43 b(for)h(some)f(input)g(\014les.)80 b(The)43 b(argumen)m(t)h(to)g ! (this)f(option)h(determines)630 408 y(ho)m(w)33 b(man)m(y)f ! Fl(switch)f Fq(statemen)m(ts)k(are)e(generated.)49 b(A)32 ! b(v)-5 b(alue)34 b(of)e(1)i(generates)g(1)f Fl(switch)630 ! 518 y Fq(con)m(taining)25 b(all)e(the)h(elemen)m(ts,)i(a)d(v)-5 ! b(alue)23 b(of)h(2)f(generates)h(2)g(tables)f(with)g(1/2)h(the)g ! (elemen)m(ts)630 628 y(in)38 b(eac)m(h)h Fl(switch)p ! Fq(,)g(etc.)65 b(This)37 b(is)h(useful)g(since)g(man)m(y)h(C)e ! (compilers)i(cannot)g(correctly)630 737 y(generate)29 ! b(co)s(de)f(for)f(large)h Fl(switch)e Fq(statemen)m(ts.)41 ! b(This)27 b(option)h(w)m(as)g(inspired)e(in)h(part)g(b)m(y)630 ! 847 y(Keith)k(Bostic's)h(original)f(C)f(program.)150 ! 1000 y(`)p Fl(-T)p Fq(')150 1110 y(`)p Fl(--omit-struct-type)p ! Fq(')630 1219 y(Prev)m(en)m(ts)f(the)e(transfer)h(of)f(the)h(t)m(yp)s ! (e)g(declaration)h(to)g(the)f(output)f(\014le.)40 b(Use)28 ! b(this)f(option)630 1329 y(if)j(the)h(t)m(yp)s(e)f(is)h(already)g ! (de\014ned)e(elsewhere.)150 1483 y(`)p Fl(-p)p Fq(')334 b(This)33 b(option)h(is)f(supp)s(orted)f(for)h(compatibilit)m(y)j(with) ! d(previous)g(releases)i(of)f Fl(gperf)p Fq(.)49 b(It)630 ! 1592 y(do)s(es)30 b(not)h(do)f(an)m(ything.)150 1841 ! y Fp(4.5)68 b(Options)45 b(for)g(c)l(hanging)h(the)f(Algorithms)h ! (emplo)l(y)l(ed)g(b)l(y)f Fi(gperf)150 2052 y Fq(`)p ! Fl(-k)30 b Fm(selected-b)m(yte-p)s(ositions)t Fq(')150 ! 2162 y(`)p Fl(--key-positions=)p Fm(selected-b)m(yte-p)s(ositions)t ! Fq(')630 2271 y(Allo)m(ws)e(selection)h(of)e(the)g(b)m(yte)h(p)s (ositions)f(used)f(in)h(the)g(k)m(eyw)m(ords')h(hash)e(function.)39 ! b(The)630 2381 y(allo)m(w)m(able)24 b(c)m(hoices)g(range)e(b)s(et)m(w)m (een)h(1-255,)j(inclusiv)m(e.)38 b(The)22 b(p)s(ositions)f(are)i ! (separated)f(b)m(y)630 2491 y(commas,)27 b(e.g.,)i(`)p ! Fl(-k)h(9,4,13,14)p Fq(';)25 b(ranges)h(ma)m(y)g(b)s(e)f(used,)h(e.g.,) ! i(`)p Fl(-k)i(2-7)p Fq(';)d(and)e(p)s(ositions)630 2600 y(ma)m(y)c(o)s(ccur)f(in)h(an)m(y)g(order.)37 b(F)-8 b(urthermore,)22 b(the)f(wildcard)f('*')h(causes)g(the)g(generated)h ! (hash)630 2710 y(function)37 b(to)h(consider)g Fc(all)g ! Fq(b)m(yte)g(p)s(ositions)f(in)g(eac)m(h)i(k)m(eyw)m(ord,)h(whereas)d ! ('$')h(instructs)630 2819 y(the)31 b(hash)g(function)f(to)i(use)f(the)g (\\\014nal)h(b)m(yte")g(of)f(a)h(k)m(eyw)m(ord)f(\(this)g(is)h(the)f ! (only)g(w)m(a)m(y)h(to)630 2929 y(use)e(a)h(b)m(yte)g(p)s(osition)f ! (greater)i(than)e(255,)i(inciden)m(tally\).)630 3060 ! y(F)-8 b(or)37 b(instance,)h(the)e(option)h(`)p Fl(-k)30 ! b(1,2,4,6-10,'$')p Fq(')i(generates)38 b(a)e(hash)g(function)f(that)630 ! 3170 y(considers)g(p)s(ositions)g(1,2,4,6,7,8,9,10,)42 b(plus)34 b(the)i(last)g(b)m(yte)f(in)g(eac)m(h)h(k)m(eyw)m(ord)g ! (\(whic)m(h)630 3280 y(ma)m(y)j(b)s(e)f(at)i(a)f(di\013eren)m(t)g(p)s (osition)g(for)f(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)67 ! b(Keyw)m(ords)38 b(with)630 3389 y(length)30 b(less)g(than)f(the)g (indicated)h(b)m(yte)h(p)s(ositions)e(w)m(ork)g(prop)s(erly)-8 ! b(,)30 b(since)f(selected)i(b)m(yte)630 3499 y(p)s(ositions)k (exceeding)h(the)g(k)m(eyw)m(ord)f(length)g(are)h(simply)e(not)i ! (referenced)f(in)f(the)i(hash)630 3608 y(function.)630 ! 3740 y(This)28 b(option)i(is)f(not)g(normally)g(needed)g(since)g(v)m ! (ersion)g(2.8)i(of)e Fl(gperf)p Fq(;)f(the)h(default)g(b)m(yte)630 ! 3849 y(p)s(ositions)36 b(are)g(computed)f(dep)s(ending)f(on)i(the)f(k)m (eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630 ! 3959 y(minimizes)31 b(the)f(n)m(um)m(b)s(er)f(of)i(b)m(yte)g(p)s ! (ositions.)150 4113 y(`)p Fl(-D)p Fq(')150 4222 y(`)p ! Fl(--duplicates)p Fq(')630 4332 y(Handle)h(k)m(eyw)m(ords)h(whose)f (selected)i(b)m(yte)e(sets)h(hash)e(to)i(duplicate)g(v)-5 ! b(alues.)46 b(Duplicate)630 4441 y(hash)33 b(v)-5 b(alues)34 b(can)h(o)s(ccur)e(if)h(a)g(set)h(of)f(k)m(eyw)m(ords)g(has)g(the)g ! (same)g(names,)h(but)e(p)s(ossesses)630 4551 y(di\013eren)m(t)f (attributes,)g(or)f(if)h(the)f(selected)i(b)m(yte)f(p)s(ositions)f(are) ! h(not)f(w)m(ell)h(c)m(hosen.)44 b(With)630 4660 y(the)36 ! b(-D)g(option)g Fl(gperf)e Fq(treats)j(all)f(these)h(k)m(eyw)m(ords)e (as)h(part)g(of)g(an)f(equiv)-5 b(alence)37 b(class)630 ! 4770 y(and)31 b(generates)i(a)f(p)s(erfect)g(hash)f(function)g(with)h ! (m)m(ultiple)g(comparisons)g(for)f(duplicate)630 4880 y(k)m(eyw)m(ords.)38 b(It)21 b(is)f(up)g(to)h(y)m(ou)g(to)h(completely) g(disam)m(biguate)g(the)f(k)m(eyw)m(ords)g(b)m(y)g(mo)s(difying)630 ! 4989 y(the)28 b(generated)g(C)f(co)s(de.)40 b(Ho)m(w)m(ev)m(er,)30 ! b Fl(gperf)c Fq(helps)h(y)m(ou)g(out)h(b)m(y)f(organizing)i(the)e ! (output.)630 5121 y(Using)32 b(this)g(option)g(usually)g(means)g(that)g (the)g(generated)h(hash)e(function)h(is)g(no)f(longer)630 ! 5230 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)g(p)s(ermits)f ! Fl(gperf)f Fq(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 ! 5340 y(otherwise)e(could)f(not)h(handle.)p eop end %%Page: 24 26 ! TeXDict begin 24 25 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(24)150 299 y(`)p ! Fl(-m)30 b Fm(iterations)t Fq(')150 408 y(`)p Fl ! (--multiple-iterations=)p Fm(iterations)t Fq(')630 518 ! y(P)m(erform)24 b(m)m(ultiple)h(c)m(hoices)h(of)e(the)h(`)p ! Fl(-i)p Fq(')f(and)g(`)p Fl(-j)p Fq(')g(v)-5 b(alues,)26 ! b(and)d(c)m(ho)s(ose)j(the)e(b)s(est)g(results.)630 628 ! y(This)34 b(increases)i(the)f(running)e(time)i(b)m(y)g(a)g(factor)h(of) ! f Fm(iterations)40 b Fq(but)34 b(do)s(es)g(a)i(go)s(o)s(d)e(job)630 ! 737 y(minimizing)d(the)f(generated)i(table)f(size.)150 ! 907 y(`)p Fl(-i)f Fm(initial-v)-5 b(alue)5 b Fq(')150 ! 1016 y(`)p Fl(--initial-asso=)p Fm(initial-v)-5 b(alue)5 ! b Fq(')630 1126 y(Pro)m(vides)29 b(an)f(initial)h Fm(v)-5 ! b(alue)34 b Fq(for)28 b(the)g(asso)s(ciate)i(v)-5 b(alues)29 ! b(arra)m(y)-8 b(.)41 b(Default)29 b(is)f(0.)41 b(Increasing)630 ! 1235 y(the)30 b(initial)h(v)-5 b(alue)31 b(helps)e(in\015ate)h(the)g (\014nal)g(table)h(size,)g(p)s(ossibly)e(leading)i(to)f(more)g(time)630 ! 1345 y(e\016cien)m(t)f(k)m(eyw)m(ord)e(lo)s(okups.)39 b(Note)29 b(that)e(this)g(option)h(is)f(not)g(particularly)h(useful)e ! (when)630 1455 y(`)p Fl(-S)p Fq(')i(\(or,)i(equiv)-5 ! b(alen)m(tly)d(,)31 b(`)p Fl(\045switch)p Fq('\))c(is)i(used.)39 ! b(Also,)30 b(`)p Fl(-i)p Fq(')e(is)g(o)m(v)m(erridden)h(when)e(the)i(`) ! p Fl(-r)p Fq(')630 1564 y(option)i(is)f(used.)150 1733 ! y(`)p Fl(-j)g Fm(jump-v)-5 b(alue)5 b Fq(')150 1843 y(`)p ! Fl(--jump=)p Fm(jump-v)-5 b(alue)5 b Fq(')630 1953 y(A\013ects)41 b(the)f(\\jump)f(v)-5 b(alue",)44 b(i.e.,)g(ho)m(w)c(far)g(to)g(adv)-5 b(ance)41 b(the)f(asso)s(ciated)i(b)m(yte)e(v)-5 b(alue)630 ! 2062 y(up)s(on)29 b(collisions.)43 b Fm(Jump-v)-5 b(alue)35 ! b Fq(is)30 b(rounded)f(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s(er,)f(the)i ! (default)g(is)f(5.)630 2172 y(If)g(the)g Fm(jump-v)-5 ! b(alue)35 b Fq(is)c(0)f Fl(gperf)f Fq(jumps)g(b)m(y)h(random)g(amoun)m ! (ts.)150 2341 y(`)p Fl(-n)p Fq(')150 2451 y(`)p Fl(--no-strlen)p ! Fq(')630 2560 y(Instructs)c(the)i(generator)g(not)f(to)h(include)f(the) h(length)f(of)g(a)h(k)m(eyw)m(ord)g(when)e(computing)630 ! 2670 y(its)41 b(hash)f(v)-5 b(alue.)72 b(This)40 b(ma)m(y)h(sa)m(v)m(e) h(a)f(few)f(assem)m(bly)h(instructions)g(in)f(the)h(generated)630 ! 2780 y(lo)s(okup)30 b(table.)150 2949 y(`)p Fl(-r)p Fq(')150 ! 3059 y(`)p Fl(--random)p Fq(')630 3168 y(Utilizes)40 b(randomness)e(to)h(initialize)h(the)f(asso)s(ciated)h(v)-5 b(alues)38 b(table.)66 b(This)38 b(frequen)m(tly)630 ! 3278 y(generates)23 b(solutions)e(faster)h(than)f(using)g (deterministic)h(initialization)i(\(whic)m(h)d(starts)h(all)630 ! 3387 y(asso)s(ciated)28 b(v)-5 b(alues)28 b(at)f(0\).)40 b(F)-8 b(urthermore,)28 b(using)f(the)g(randomization)g(option)h ! (generally)630 3497 y(increases)j(the)g(size)g(of)f(the)h(table.)150 ! 3666 y(`)p Fl(-s)f Fm(size-m)m(ultiple)5 b Fq(')150 3776 ! y(`)p Fl(--size-multiple=)p Fm(size-m)m(ultiple)g Fq(')630 ! 3885 y(A\013ects)40 b(the)e(size)h(of)g(the)f(generated)i(hash)d (table.)66 b(The)38 b(n)m(umeric)g(argumen)m(t)h(for)f(this)630 ! 3995 y(option)33 b(indicates)g(\\ho)m(w)g(man)m(y)g(times)g(larger)g (or)f(smaller")i(the)e(maxim)m(um)g(asso)s(ciated)630 ! 4105 y(v)-5 b(alue)38 b(range)g(should)e(b)s(e,)j(in)e(relationship)h (to)g(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eyw)m(ords.)62 ! b(It)38 b(can)g(b)s(e)630 4214 y(written)g(as)h(an)f(in)m(teger,)43 b(a)38 b(\015oating-p)s(oin)m(t)i(n)m(um)m(b)s(er)d(or)i(a)f(fraction.) ! 66 b(F)-8 b(or)39 b(example,)j(a)630 4324 y(v)-5 b(alue)40 b(of)f(3)h(means)f(\\allo)m(w)i(the)f(maxim)m(um)f(asso)s(ciated)h(v)-5 ! b(alue)40 b(to)g(b)s(e)f(ab)s(out)g(3)g(times)630 4433 y(larger)33 b(than)g(the)g(n)m(um)m(b)s(er)e(of)i(input)f(k)m(eyw)m (ords".)49 b(Con)m(v)m(ersely)-8 b(,)35 b(a)e(v)-5 b(alue)33 ! b(of)g(1/3)h(means)630 4543 y(\\allo)m(w)43 b(the)e(maxim)m(um)f(asso)s (ciated)j(v)-5 b(alue)41 b(to)h(b)s(e)e(ab)s(out)g(3)h(times)h(smaller) ! f(than)g(the)630 4653 y(n)m(um)m(b)s(er)33 b(of)i(input)f(k)m(eyw)m (ords".)55 b(V)-8 b(alues)35 b(smaller)h(than)e(1)h(are)g(useful)f(for) ! h(limiting)h(the)630 4762 y(o)m(v)m(erall)31 b(size)e(of)g(the)f (generated)i(hash)e(table,)i(though)e(the)g(option)h(`)p ! Fl(-m)p Fq(')g(is)f(b)s(etter)h(at)g(this)630 4872 y(purp)s(ose.)630 ! 5011 y(If)44 b(`generate)h(switc)m(h')g(option)g(`)p ! Fl(-S)p Fq(')f(\(or,)k(equiv)-5 b(alen)m(tly)d(,)49 b(`)p ! Fl(\045switch)p Fq('\))43 b(is)h Fj(not)54 b Fq(enabled,)630 ! 5121 y(the)45 b(maxim)m(um)h(asso)s(ciated)g(v)-5 b(alue)46 b(in\015uences)f(the)g(static)i(arra)m(y)f(table)g(size,)k(and)45 ! b(a)630 5230 y(larger)27 b(table)g(should)e(decrease)i(the)f(time)h (required)e(for)h(an)f(unsuccessful)g(searc)m(h,)j(at)f(the)630 ! 5340 y(exp)s(ense)j(of)g(extra)i(table)f(space.)p eop ! end ! %%Page: 25 27 ! TeXDict begin 25 26 bop 150 -116 a Fq(Chapter)30 b(4:)41 ! b(In)m(v)m(oking)31 b Fl(gperf)2433 b Fq(25)630 299 y(The)35 ! b(default)g(v)-5 b(alue)36 b(is)f(1,)i(th)m(us)e(the)h(default)f(maxim) ! m(um)g(asso)s(ciated)i(v)-5 b(alue)36 b(ab)s(out)f(the)630 ! 408 y(same)h(size)g(as)f(the)h(n)m(um)m(b)s(er)e(of)h(k)m(eyw)m(ords)h (\(for)g(e\016ciency)-8 b(,)38 b(the)d(maxim)m(um)g(asso)s(ciated)630 ! 518 y(v)-5 b(alue)36 b(is)g(alw)m(a)m(ys)h(rounded)d(up)g(to)i(a)g(p)s (o)m(w)m(er)g(of)f(2\).)57 b(The)35 b(actual)i(table)g(size)f(ma)m(y)g ! (v)-5 b(ary)630 628 y(somewhat,)31 b(since)g(this)f(tec)m(hnique)h(is)g ! (essen)m(tially)h(a)f(heuristic.)150 885 y Fp(4.6)68 ! b(Informativ)l(e)47 b(Output)150 1103 y Fq(`)p Fl(-h)p ! Fq(')150 1212 y(`)p Fl(--help)p Fq(')142 b(Prin)m(ts)24 b(a)g(short)f(summary)g(on)h(the)g(meaning)g(of)g(eac)m(h)h(program)e ! (option.)39 b(Ab)s(orts)23 b(further)630 1322 y(program)30 ! b(execution.)150 1481 y(`)p Fl(-v)p Fq(')150 1591 y(`)p ! Fl(--version)p Fq(')630 1700 y(Prin)m(ts)g(out)h(the)f(curren)m(t)h(v)m ! (ersion)f(n)m(um)m(b)s(er.)150 1860 y(`)p Fl(-d)p Fq(')150 ! 1969 y(`)p Fl(--debug)p Fq(')94 b(Enables)28 b(the)h(debugging)f (option.)40 b(This)28 b(pro)s(duces)f(v)m(erb)s(ose)i(diagnostics)g(to) ! g(\\standard)630 2079 y(error")i(when)g Fl(gperf)f Fq(is)h(executing.) 45 b(It)32 b(is)f(useful)g(b)s(oth)g(for)g(main)m(taining)i(the)e ! (program)630 2188 y(and)f(for)h(determining)g(whether)f(a)h(giv)m(en)h (set)f(of)g(options)g(is)g(actually)i(sp)s(eeding)d(up)g(the)630 ! 2298 y(searc)m(h)41 b(for)e(a)h(solution.)70 b(Some)40 b(useful)f(information)h(is)g(dump)s(ed)e(at)i(the)g(end)g(of)g(the)630 ! 2408 y(program)30 b(when)g(the)g(`)p Fl(-d)p Fq(')g(option)h(is)g (enabled.)p eop end %%Page: 26 28 ! TeXDict begin 26 27 bop 150 -116 a Fq(Chapter)30 b(5:)41 ! b(Kno)m(wn)30 b(Bugs)g(and)g(Limitations)h(with)f Fl(gperf)1397 ! b Fq(26)150 299 y Fn(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)f ! (with)f Fk(gperf)275 533 y Fq(The)29 b(follo)m(wing)j(are)f(some)g (limitations)h(with)e(the)g(curren)m(t)h(release)g(of)g ! Fl(gperf)p Fq(:)225 667 y Fo(\017)60 b Fq(The)31 b Fl(gperf)g ! Fq(utilit)m(y)i(is)f(tuned)f(to)h(execute)h(quic)m(kly)-8 b(,)34 b(and)d(w)m(orks)h(quic)m(kly)g(for)g(small)g(to)h(medium)330 777 y(size)i(data)g(sets)g(\(around)f(1000)i(k)m(eyw)m(ords\).)54 *************** *** 5099,5124 **** 330 887 y(hash)k(functions)h(for)f(compiler)i(k)m(eyw)m(ord)f(sets.)72 b(Sev)m(eral)42 b(recen)m(t)g(enhancemen)m(ts)g(no)m(w)e(enable)330 ! 996 y Fn(gperf)31 b Fs(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m (h)h(larger)g(k)m(eyw)m(ord)g(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m (ords\).)48 b(When)330 1106 y(pro)s(cessing)30 b(large)i(k)m(eyw)m(ord) e(sets)h(it)g(helps)f(greatly)i(to)f(ha)m(v)m(e)g(o)m(v)m(er)h(8)f ! (megs)g(of)f(RAM.)225 1240 y Fq(\017)60 b Fs(The)43 b(size)i(of)f(the)g (generate)h(static)h(k)m(eyw)m(ord)e(arra)m(y)g(can)g(get)h ! Fl(extr)-5 b(emely)53 b Fs(large)45 b(if)f(the)g(input)330 1350 y(k)m(eyw)m(ord)d(\014le)f(is)g(large)i(or)e(if)g(the)h(k)m(eyw)m (ords)f(are)h(quite)g(similar.)70 b(This)40 b(tends)g(to)h(slo)m(w)f (do)m(wn)330 1460 y(the)35 b(compilation)h(of)f(the)f(generated)i(C)e ! (co)s(de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(in\015ates)35 b(the)g(ob)5 b(ject)35 b(co)s(de)g(size.)54 b(If)330 1569 y(this)40 b(situation)h(o)s(ccurs,)h(consider)e(using)f(the)h(`)p ! Fn(-S)p Fs(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially) 330 1679 y(increasing)h(k)m(eyw)m(ord)g(recognition)h(time)f(a)g (negligible)i(amoun)m(t.)80 b(Since)44 b(man)m(y)f(C)h(compilers)330 1788 y(cannot)37 b(correctly)i(generate)f(co)s(de)f(for)g(large)h (switc)m(h)f(statemen)m(ts)i(it)e(is)g(imp)s(ortan)m(t)g(to)h(qualify) ! 330 1898 y(the)i Fo(-S)46 b Fs(option)40 b(with)g(an)g(appropriate)g(n) m(umerical)h(argumen)m(t)f(that)h(con)m(trols)h(the)e(n)m(um)m(b)s(er)f (of)330 2007 y(switc)m(h)31 b(statemen)m(ts)h(generated.)225 ! 2142 y Fq(\017)60 b Fs(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i (selected)h(b)m(yte)f(p)s(ositions)f(has)g(an)h(arbitrary)f(limit)h(of) g(255.)57 b(This)330 2252 y(restriction)29 b(should)e(b)s(e)g(remo)m(v) --- 4827,4852 ---- 330 887 y(hash)k(functions)h(for)f(compiler)i(k)m(eyw)m(ord)f(sets.)72 b(Sev)m(eral)42 b(recen)m(t)g(enhancemen)m(ts)g(no)m(w)e(enable)330 ! 996 y Fl(gperf)31 b Fq(to)j(w)m(ork)e(e\016cien)m(tly)j(on)d(m)m(uc)m (h)h(larger)g(k)m(eyw)m(ord)g(sets)g(\(o)m(v)m(er)i(15,000)g(k)m(eyw)m (ords\).)48 b(When)330 1106 y(pro)s(cessing)30 b(large)i(k)m(eyw)m(ord) e(sets)h(it)g(helps)f(greatly)i(to)f(ha)m(v)m(e)g(o)m(v)m(er)h(8)f ! (megs)g(of)f(RAM.)225 1240 y Fo(\017)60 b Fq(The)43 b(size)i(of)f(the)g (generate)h(static)h(k)m(eyw)m(ord)e(arra)m(y)g(can)g(get)h ! Fj(extr)-5 b(emely)53 b Fq(large)45 b(if)f(the)g(input)330 1350 y(k)m(eyw)m(ord)d(\014le)f(is)g(large)i(or)e(if)g(the)h(k)m(eyw)m (ords)f(are)h(quite)g(similar.)70 b(This)40 b(tends)g(to)h(slo)m(w)f (do)m(wn)330 1460 y(the)35 b(compilation)h(of)f(the)f(generated)i(C)e ! (co)s(de,)i(and)e Fj(gr)-5 b(e)g(atly)44 b Fq(in\015ates)35 b(the)g(ob)5 b(ject)35 b(co)s(de)g(size.)54 b(If)330 1569 y(this)40 b(situation)h(o)s(ccurs,)h(consider)e(using)f(the)h(`)p ! Fl(-S)p Fq(')g(option)g(to)h(reduce)e(data)i(size,)i(p)s(oten)m(tially) 330 1679 y(increasing)h(k)m(eyw)m(ord)g(recognition)h(time)f(a)g (negligible)i(amoun)m(t.)80 b(Since)44 b(man)m(y)f(C)h(compilers)330 1788 y(cannot)37 b(correctly)i(generate)f(co)s(de)f(for)g(large)h (switc)m(h)f(statemen)m(ts)i(it)e(is)g(imp)s(ortan)m(t)g(to)h(qualify) ! 330 1898 y(the)i Fm(-S)46 b Fq(option)40 b(with)g(an)g(appropriate)g(n) m(umerical)h(argumen)m(t)f(that)h(con)m(trols)h(the)e(n)m(um)m(b)s(er)f (of)330 2007 y(switc)m(h)31 b(statemen)m(ts)h(generated.)225 ! 2142 y Fo(\017)60 b Fq(The)35 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i (selected)h(b)m(yte)f(p)s(ositions)f(has)g(an)h(arbitrary)f(limit)h(of) g(255.)57 b(This)330 2252 y(restriction)29 b(should)e(b)s(e)g(remo)m(v) *************** *** 5127,5134 **** (v)m(e)i(the)f(constrain)m(t.)p eop end %%Page: 27 29 ! TeXDict begin 27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)29 b(Still)i(Left)g(to)g(Do)2133 b(27)150 299 ! y Fp(6)80 b(Things)53 b(Still)g(Left)g(to)g(Do)275 533 ! y Fs(It)24 b(should)f(b)s(e)h(\\relativ)m(ely")k(easy)d(to)g(replace)g (the)g(curren)m(t)f(p)s(erfect)g(hash)g(function)g(algorithm)h(with)150 643 y(a)35 b(more)f(exhaustiv)m(e)h(approac)m(h;)i(the)d(p)s(erfect)h --- 4855,4862 ---- (v)m(e)i(the)f(constrain)m(t.)p eop end %%Page: 27 29 ! TeXDict begin 27 28 bop 150 -116 a Fq(Chapter)30 b(6:)41 b(Things)29 b(Still)i(Left)g(to)g(Do)2133 b(27)150 299 ! y Fn(6)80 b(Things)53 b(Still)g(Left)g(to)g(Do)275 533 ! y Fq(It)24 b(should)f(b)s(e)h(\\relativ)m(ely")k(easy)d(to)g(replace)g (the)g(curren)m(t)f(p)s(erfect)g(hash)g(function)g(algorithm)h(with)150 643 y(a)35 b(more)f(exhaustiv)m(e)h(approac)m(h;)i(the)d(p)s(erfect)h *************** *** 5136,5140 **** (other)150 752 y(program)c(mo)s(dules.)40 b(Additional)31 b(w)m(orth)m(while)g(impro)m(v)m(emen)m(ts)h(include:)225 ! 887 y Fq(\017)60 b Fs(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m (es)i(mo)s(difying)d(the)h(program)f(to)i(generate)g(\\minimal")g(p)s (er-)330 996 y(fect)42 b(hash)f(functions)f(\(under)h(certain)h --- 4864,4868 ---- (other)150 752 y(program)c(mo)s(dules.)40 b(Additional)31 b(w)m(orth)m(while)g(impro)m(v)m(emen)m(ts)h(include:)225 ! 887 y Fo(\017)60 b Fq(Another)34 b(useful)f(extension)h(in)m(v)m(olv)m (es)i(mo)s(difying)d(the)h(program)f(to)i(generate)g(\\minimal")g(p)s (er-)330 996 y(fect)42 b(hash)f(functions)f(\(under)h(certain)h *************** *** 5143,5422 **** (size\).)60 b(This)36 b(is)g(mostly)h(of)g(theoretical)h(in)m(terest,)i (since)330 1215 y(a)f(sparse)f(table)h(often)g(pro)s(duces)e(faster)i ! (lo)s(okups,)h(and)e(use)g(of)h(the)g(`)p Fn(-S)p Fs(')f ! Fn(switch)f Fs(option)i(can)330 1325 y(minimize)g(the)g(data)g(size,)j (at)d(the)g(exp)s(ense)f(of)h(sligh)m(tly)h(longer)f(lo)s(okups)f (\(note)i(that)f(the)g(gcc)330 1435 y(compiler)e(generally)g(pro)s ! (duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fn(switch)f Fs(statemen)m(ts,)k (reducing)d(the)g(need)g(for)330 1544 y(more)31 b(complex)g(sc)m ! (hemes\).)225 1679 y Fq(\017)60 b Fs(In)38 b(addition)h(to)h(impro)m (ving)f(the)h(algorithm,)i(it)d(w)m(ould)g(also)h(b)s(e)f(useful)f(to)h (generate)i(an)e(Ada)330 1788 y(pac)m(k)-5 b(age)32 b(as)f(the)g(co)s (de)f(output,)g(in)g(addition)h(to)g(the)g(curren)m(t)f(C)g(and)g(C)p ! Fn(++)f Fs(routines.)p eop end %%Page: 28 30 ! TeXDict begin 28 29 bop 150 -116 a Fs(Chapter)30 b(7:)41 ! b(Bibliograph)m(y)2536 b(28)150 299 y Fp(7)80 b(Bibliograph)l(y)275 ! 533 y Fs([1])22 b(Chang,)h(C.C.:)36 b Fl(A)24 b(Scheme)h(for)g (Constructing)h(Or)-5 b(der)g(e)g(d)26 b(Minimal)f(Perfe)-5 ! b(ct)24 b(Hashing)h(F)-7 b(unctions)150 643 y Fs(Information)30 b(Sciences)h(39\(1986\),)j(187-195.)275 777 y([2])26 ! b(Cic)m(helli,)i(Ric)m(hard)e(J.)f Fl(A)n(uthor's)k(R)-5 b(esp)g(onse)30 b(to)f(\\On)f(Cichel)5 b(li's)28 b(Minimal)h(Perfe)-5 b(ct)28 b(Hash)g(F)-7 b(unc-)150 887 y(tions)33 b(Metho)-5 ! b(d")38 b Fs(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(23,)h (12\(Decem)m(b)s(er)g(1980\),)h(729.)275 1021 y([3])f(Cic)m(helli,)i ! (Ric)m(hard)d(J.)h Fl(Minimal)i(Perfe)-5 b(ct)33 b(Hash)i(F)-7 ! b(unctions)34 b(Made)g(Simple)39 b Fs(Comm)m(unications)150 1131 y(of)31 b(the)f(A)m(CM,)h(23,)h(1\(Jan)m(uary)f(1980\),)h(17-19.) 275 1265 y([4])22 b(Co)s(ok,)h(C.)e(R.)g(and)f(Oldeho)s(eft,)j(R.R.)f ! Fl(A)h(L)-5 b(etter)25 b(Oriente)-5 b(d)25 b(Minimal)f(Perfe)-5 ! b(ct)24 b(Hashing)g(F)-7 b(unction)150 1375 y Fs(SIGPLAN)30 b(Notices,)i(17,)g(9\(Septem)m(b)s(er)f(1982\),)h(18-27.)275 1509 y([5])22 b(Cormac)m(k,)j(G.)d(V.)g(and)g(Horsp)s(o)s(ol,)h(R.)f ! (N.)g(S.)g(and)f(Kaiserw)m(erth,)j(M.)f Fl(Pr)-5 b(actic)g(al)26 ! b(Perfe)-5 b(ct)25 b(Hashing)150 1619 y Fs(Computer)30 b(Journal,)g(28,)h(1\(Jan)m(uary)g(1985\),)i(54-58.)275 ! 1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fl(R)-5 b(e)g(cipr)g(o)g(c)g(al) 34 b(Hashing:)41 b(A)30 b(Metho)-5 b(d)31 b(for)g(Gener)-5 b(ating)32 b(Minimal)e(Perfe)-5 b(ct)31 b(Hashing)150 ! 1863 y(F)-7 b(unctions)39 b Fs(Comm)m(unications)31 b(of)f(the)h(A)m (CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)g(829-833.)275 1998 y([7])22 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)h(G.)g ! Fl(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 b(ct)24 b(Hash)h(F)-7 b(unctions)25 b(Metho)-5 b(d)150 2107 y ! Fs(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)h(12\(Decem)m(b)s (er)g(1980\),)h(728-729.)275 2242 y([8])25 b(Sager,)h(Thomas)e(J.)h ! Fl(A)h(Polynomial)j(Time)f(Gener)-5 b(ator)29 b(for)f(Minimal)f(Perfe) ! -5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fs(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)275 ! 2486 y([9])f(Sc)m(hmidt,)f(Douglas)h(C.)f Fl(GPERF:)i(A)g(Perfe)-5 b(ct)32 b(Hash)h(F)-7 b(unction)33 b(Gener)-5 b(ator)42 ! b Fs(Second)30 b(USENIX)150 2595 y(C)p Fn(++)f Fs(Conference)i(Pro)s (ceedings,)g(April)f(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)i(Douglas)e ! (C.)f Fl(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 ! b(unction)43 b(Gener)-5 b(ator)53 b Fs(C)p Fn(++)40 b ! Fs(Rep)s(ort,)150 2839 y(SIGS)29 b(10)j(10)f(\(No)m(v)m(em)m(b)s (er/Decem)m(b)s(er)i(1998\).)275 2974 y([11])24 b(Seb)s(esta,)h(R.W.)e ! (and)g(T)-8 b(a)m(ylor,)26 b(M.A.)e Fl(Minimal)i(Perfe)-5 b(ct)26 b(Hash)g(F)-7 b(unctions)27 b(for)g(R)-5 b(eserve)g(d)27 ! b(Wor)-5 b(d)150 3083 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)j(20,)e (12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 3218 y([12])43 ! b(Sprugnoli,)h(R.)e Fl(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 b(unctions:)64 b(A)43 b(Single)g(Pr)-5 b(ob)g(e)44 b(R)-5 b(etrieving)44 b(Metho)-5 b(d)44 b(for)150 3328 y(Static)33 ! b(Sets)38 b Fs(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)i(20)f(11\(No) m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3462 y([13])27 ! b(Stallman,)h(Ric)m(hard)e(M.)h Fl(Using)h(and)i(Porting)f(GNU)g(CC)39 ! b Fs(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)28 ! b(1988.)275 3597 y([14])j(Stroustrup,)e(Bjarne)i Fl(The)h(C)p ! Fn(++)g Fl(Pr)-5 b(o)g(gr)g(amming)36 b(L)-5 b(anguage.)40 ! b Fs(Addison-W)-8 b(esley)g(,)33 b(1986.)275 3731 y([15])e(Tiemann,)f ! (Mic)m(hael)j(D.)e Fl(User's)h(Guide)h(to)g(GNU)f(C)p ! Fn(++)e Fs(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(1989.)p eop end %%Page: 29 31 ! TeXDict begin 29 30 bop 150 -116 a Fs(Concept)31 b(Index)2927 ! b(29)150 299 y Fp(Concept)52 b(Index)150 642 y Fr(\045)150 ! 777 y Fd(`)p Fc(\045\045)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) ! h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 ! b Fd(12)150 874 y(`)p Fc(\045{)p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 ! b Fd(15)150 972 y(`)p Fc(\045})p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)38 ! b Fd(15)150 1069 y(`)p Fc(\0457bit)p Fd(')8 b Fb(.)14 ! b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)33 b Fd(14)150 1167 y(`)p Fc(\045compare-lengths)p ! Fd(')10 b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 ! b Fd(14)150 1264 y(`)p Fc(\045compare-strncmp)p Fd(')10 ! b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 ! 1361 y(`)p Fc(\045define)28 b(class-name)p Fd(')14 b ! Fb(.)g(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)39 b Fd(14)150 1459 y(`)p ! Fc(\045define)28 b(hash-function-name)p Fd(')c Fb(.)13 ! b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 ! b Fd(13)150 1556 y(`)p Fc(\045define)28 b(initializer-suffix)p ! Fd(')c Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! 46 b Fd(13)150 1654 y(`)p Fc(\045define)28 b(lookup-function-name)p ! Fd(')18 b Fb(.)e(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)43 ! b Fd(13)150 1751 y(`)p Fc(\045define)28 b(slot-name)p ! Fd(')15 b Fb(.)g(.)d(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)41 b Fd(13)150 ! 1849 y(`)p Fc(\045define)28 b(string-pool-name)p Fd(')f ! Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f ! (.)49 b Fd(15)150 1946 y(`)p Fc(\045define)28 b(word-array-name)p ! Fd(')7 b Fb(.)15 b(.)e(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)g(.)h(.)32 b Fd(15)150 2044 y(`)p Fc(\045delimiters)p ! Fd(')17 b Fb(.)f(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)43 ! b Fd(13)150 2141 y(`)p Fc(\045enum)p Fd(')8 b Fb(.)14 ! b(.)e(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)33 b Fd(14)150 2239 y(`)p Fc(\045global-table)p ! Fd(')14 b Fb(.)i(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 ! b Fd(14)150 2336 y(`)p Fc(\045ignore-case)p Fd(')16 b ! Fb(.)g(.)c(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)41 ! b Fd(13)150 2434 y(`)p Fc(\045includes)p Fd(')23 b Fb(.)12 ! b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 ! b Fd(14)150 2531 y(`)p Fc(\045language)p Fd(')23 b Fb(.)12 ! b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 ! b Fd(13)150 2629 y(`)p Fc(\045null-strings)p Fd(')14 ! b Fb(.)i(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) ! h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)40 b ! Fd(15)150 2726 y(`)p Fc(\045omit-struct-type)p Fd(')9 ! b Fb(.)16 b(.)d(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)34 b Fd(15)150 2824 ! y(`)p Fc(\045pic)p Fd(')9 b Fb(.)14 b(.)f(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) ! h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)35 b ! Fd(14)150 2921 y(`)p Fc(\045readonly-tables)p Fd(')10 ! b Fb(.)17 b(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)36 b Fd(14)150 ! 3019 y(`)p Fc(\045struct-type)p Fd(')16 b Fb(.)g(.)c(.)g(.)h(.)f(.)g(.) ! h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)41 b Fd(13)150 3116 y(`)p Fc(\045switch)p ! Fd(')25 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) ! h(.)f(.)g(.)49 b Fd(15)150 3394 y Fr(A)150 3528 y Fd(Arra)n(y)25 ! b(name)19 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) ! h(.)f(.)44 b Fd(22)150 3819 y Fr(B)150 3953 y Fd(Bugs)9 ! b Fb(.)k(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)g(.)h(.)f(.)g(.)h(.)35 b Fd(8)150 4243 y Fr(C)150 ! 4378 y Fd(Class)27 b(name)10 b Fb(.)j(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(21)2025 642 y Fr(D)2025 ! 764 y Fd(Declaration)27 b(section)d Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) ! f(.)49 b Fd(11)2025 855 y(Delimiters)9 b Fb(.)k(.)g(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)35 b Fd(19)2025 ! 946 y(Duplicates)23 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) ! h(.)f(.)g(.)h(.)f(.)49 b Fd(23)2025 1203 y Fr(F)2025 ! 1325 y Fd(F)-6 b(ormat)23 b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)49 b Fd(11)2025 ! 1416 y(F)-6 b(unctions)25 b(section)18 b Fb(.)13 b(.)f(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.) ! g(.)h(.)f(.)g(.)44 b Fd(11)2025 1660 y Fr(H)2025 1781 ! y Fc(hash)13 b Fb(.)g(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)38 b Fd(17)2025 1873 ! y(hash)25 b(table)9 b Fb(.)k(.)f(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f ! (.)g(.)h(.)f(.)g(.)h(.)34 b Fd(17)2025 2117 y Fr(I)2025 ! 2238 y Fc(in_word_set)23 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g ! (.)h(.)f(.)g(.)h(.)46 b Fd(17)2025 2330 y(Initializers)25 ! b Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.) ! 49 b Fd(20)2025 2573 y Fr(J)2025 2695 y Fd(Jump)25 b(v)l(alue)6 ! b Fb(.)13 b(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! 32 b Fd(24)2025 2952 y Fr(K)2025 3073 y Fd(Keyw)n(ords)25 ! b(section)16 b Fb(.)e(.)e(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)42 ! b Fd(11)2025 3330 y Fr(M)2025 3452 y Fd(Minimal)27 b(p)r(erfect)f(hash) ! g(functions)c Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f ! (.)g(.)48 b Fd(10)2025 3708 y Fr(N)2025 3830 y Fd(NUL)9 ! b Fb(.)j(.)g(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.) ! h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g ! (.)h(.)f(.)g(.)h(.)f(.)35 b Fd(18)2025 4074 y Fr(S)2025 ! 4195 y Fd(Slot)26 b(name)13 b Fb(.)f(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) ! g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)39 b Fd(20)2025 4287 y(Static)26 ! b(searc)n(h)g(structure)20 b Fb(.)12 b(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)46 ! b Fd(10)2025 4378 y Fc(switch)22 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.) ! f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h ! (.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(18,)27 b(22)p ! eop end %%Page: -1 32 ! TeXDict begin -1 31 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 ! b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fr(GNU)45 b(GENERAL)g(PUBLIC) g(LICENSE)31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 ! b Fr(1)449 778 y Fs(Pream)m(ble)16 b Fl(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fs(1)449 888 y(TERMS)29 b(AND)j(CONDITIONS)d(F)m(OR)h(COPYING,)h(DISTRIBUTION)631 ! 997 y(AND)g(MODIFICA)-8 b(TION)24 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fs(2)449 1107 y(Ho)m(w)31 b(to)g(Apply)f(These)g(T)-8 b(erms)30 b(to)h(Y)-8 ! b(our)31 b(New)f(Programs)16 b Fl(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)46 b Fs(6)150 1349 y Fr(Con)l(tributors)g(to)f(GNU)g ! Fk(gperf)e Fr(Utilit)l(y)16 b Fa(.)21 b(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h ! (.)f(.)g(.)h(.)60 b Fr(8)150 1619 y(1)135 b(In)l(tro)t(duction)15 b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)60 ! b Fr(9)150 1889 y(2)135 b(Static)45 b(searc)l(h)h(structures)f(and)f ! (GNU)h Fk(gperf)15 b Fa(.)i(.)j(.)f(.)60 b Fr(10)150 2159 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)g ! Fk(gperf)21 b Fa(.)c(.)i(.)h(.)f(.)h(.)65 b Fr(11)449 ! 2296 y Fs(3.1)92 b(Input)29 b(F)-8 b(ormat)32 b(to)f ! Fn(gperf)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)g(.)54 b Fs(11)748 2405 y(3.1.1)93 b(Declarations)9 ! b Fl(.)17 b(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)39 b Fs(11)1047 2515 y(3.1.1.1)93 b(User-supplied)30 ! b Fn(struct)10 b Fl(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)39 b Fs(12)1047 2624 y(3.1.1.2)93 ! b(Gp)s(erf)30 b(Declarations)18 b Fl(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fs(12)1047 ! 2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)f Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)59 b Fs(15)748 2844 y(3.1.2)93 b(F)-8 b(ormat)31 ! b(for)f(Keyw)m(ord)g(En)m(tries)17 b Fl(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fs(16)748 2953 y(3.1.3)93 b(Including)29 b(Additional)i(C)f(F)-8 ! b(unctions)19 b Fl(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)49 b Fs(16)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)h ! (directiv)m(es)f(for)g(GNU)g Fn(indent)p Fs(.)17 b Fl(.)c(.)i(.)g(.)g ! (.)g(.)46 b Fs(16)449 3172 y(3.2)92 b(Output)29 b(F)-8 ! b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)g Fn(gperf)23 ! b Fl(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 b Fs(17)449 ! 3282 y(3.3)92 b(Use)31 b(of)f(NUL)h(b)m(ytes)22 b Fl(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.) ! f(.)g(.)51 b Fs(18)150 3524 y Fr(4)135 b(In)l(v)l(oking)45 ! b Fk(gperf)16 b Fa(.)i(.)h(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)61 ! b Fr(19)449 3661 y Fs(4.1)92 b(Sp)s(ecifying)30 b(the)g(Lo)s(cation)i ! (of)e(the)h(Output)e(File)19 b Fl(.)e(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)g(.)49 b Fs(19)449 3771 y(4.2)92 b(Options)30 b(that)h(a\013ect)h(In)m(terpretation)f(of)g(the)f(Input)f(File)g ! Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fs(19)449 3880 y(4.3)92 b(Options)30 b(to)h(sp)s(ecify)f(the)h(Language)g(for)f(the)h(Output)e ! (Co)s(de)14 b Fl(.)g(.)h(.)g(.)g(.)43 b Fs(19)449 3990 y(4.4)92 b(Options)30 b(for)g(\014ne)g(tuning)g(Details)i(in)e(the)h ! (Output)e(Co)s(de)23 b Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)53 ! b Fs(20)449 4100 y(4.5)92 b(Options)30 b(for)g(c)m(hanging)h(the)g ! (Algorithms)g(emplo)m(y)m(ed)g(b)m(y)g Fn(gperf)21 b ! Fl(.)14 b(.)50 b Fs(23)449 4209 y(4.6)92 b(Informativ)m(e)31 ! b(Output)c Fl(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)58 b Fs(25)150 4452 y Fr(5)135 b(Kno)l(wn)45 ! b(Bugs)f(and)h(Limitations)i(with)e Fk(gperf)32 b Fa(.)19 ! b(.)g(.)79 b Fr(26)150 4721 y(6)135 b(Things)44 b(Still)i(Left)g(to)f (Do)23 b Fa(.)d(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h ! (.)f(.)g(.)h(.)f(.)68 b Fr(27)150 4991 y(7)135 b(Bibliograph)l(y)38 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)82 ! b Fr(28)150 5261 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) ! f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fr(29)p eop end %%Trailer --- 4871,5026 ---- (size\).)60 b(This)36 b(is)g(mostly)h(of)g(theoretical)h(in)m(terest,)i (since)330 1215 y(a)f(sparse)f(table)h(often)g(pro)s(duces)e(faster)i ! (lo)s(okups,)h(and)e(use)g(of)h(the)g(`)p Fl(-S)p Fq(')f ! Fl(switch)f Fq(option)i(can)330 1325 y(minimize)g(the)g(data)g(size,)j (at)d(the)g(exp)s(ense)f(of)h(sligh)m(tly)h(longer)f(lo)s(okups)f (\(note)i(that)f(the)g(gcc)330 1435 y(compiler)e(generally)g(pro)s ! (duces)e(go)s(o)s(d)h(co)s(de)g(for)g Fl(switch)f Fq(statemen)m(ts,)k (reducing)d(the)g(need)g(for)330 1544 y(more)31 b(complex)g(sc)m ! (hemes\).)225 1679 y Fo(\017)60 b Fq(In)38 b(addition)h(to)h(impro)m (ving)f(the)h(algorithm,)i(it)d(w)m(ould)g(also)h(b)s(e)f(useful)f(to)h (generate)i(an)e(Ada)330 1788 y(pac)m(k)-5 b(age)32 b(as)f(the)g(co)s (de)f(output,)g(in)g(addition)h(to)g(the)g(curren)m(t)f(C)g(and)g(C)p ! Fl(++)f Fq(routines.)p eop end %%Page: 28 30 ! TeXDict begin 28 29 bop 150 -116 a Fq(Chapter)30 b(7:)41 ! b(Bibliograph)m(y)2536 b(28)150 299 y Fn(7)80 b(Bibliograph)l(y)275 ! 533 y Fq([1])22 b(Chang,)h(C.C.:)36 b Fj(A)24 b(Scheme)h(for)g (Constructing)h(Or)-5 b(der)g(e)g(d)26 b(Minimal)f(Perfe)-5 ! b(ct)24 b(Hashing)h(F)-7 b(unctions)150 643 y Fq(Information)30 b(Sciences)h(39\(1986\),)j(187-195.)275 777 y([2])26 ! b(Cic)m(helli,)i(Ric)m(hard)e(J.)f Fj(A)n(uthor's)k(R)-5 b(esp)g(onse)30 b(to)f(\\On)f(Cichel)5 b(li's)28 b(Minimal)h(Perfe)-5 b(ct)28 b(Hash)g(F)-7 b(unc-)150 887 y(tions)33 b(Metho)-5 ! b(d")38 b Fq(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)h(23,)h (12\(Decem)m(b)s(er)g(1980\),)h(729.)275 1021 y([3])f(Cic)m(helli,)i ! (Ric)m(hard)d(J.)h Fj(Minimal)i(Perfe)-5 b(ct)33 b(Hash)i(F)-7 ! b(unctions)34 b(Made)g(Simple)39 b Fq(Comm)m(unications)150 1131 y(of)31 b(the)f(A)m(CM,)h(23,)h(1\(Jan)m(uary)f(1980\),)h(17-19.) 275 1265 y([4])22 b(Co)s(ok,)h(C.)e(R.)g(and)f(Oldeho)s(eft,)j(R.R.)f ! Fj(A)h(L)-5 b(etter)25 b(Oriente)-5 b(d)25 b(Minimal)f(Perfe)-5 ! b(ct)24 b(Hashing)g(F)-7 b(unction)150 1375 y Fq(SIGPLAN)30 b(Notices,)i(17,)g(9\(Septem)m(b)s(er)f(1982\),)h(18-27.)275 1509 y([5])22 b(Cormac)m(k,)j(G.)d(V.)g(and)g(Horsp)s(o)s(ol,)h(R.)f ! (N.)g(S.)g(and)f(Kaiserw)m(erth,)j(M.)f Fj(Pr)-5 b(actic)g(al)26 ! b(Perfe)-5 b(ct)25 b(Hashing)150 1619 y Fq(Computer)30 b(Journal,)g(28,)h(1\(Jan)m(uary)g(1985\),)i(54-58.)275 ! 1753 y([6])28 b(Jaesc)m(hk)m(e,)j(G.)d Fj(R)-5 b(e)g(cipr)g(o)g(c)g(al) 34 b(Hashing:)41 b(A)30 b(Metho)-5 b(d)31 b(for)g(Gener)-5 b(ating)32 b(Minimal)e(Perfe)-5 b(ct)31 b(Hashing)150 ! 1863 y(F)-7 b(unctions)39 b Fq(Comm)m(unications)31 b(of)f(the)h(A)m (CM,)g(24,)g(12\(Decem)m(b)s(er)i(1981\),)g(829-833.)275 1998 y([7])22 b(Jaesc)m(hk)m(e,)i(G.)e(and)f(Osterburg,)h(G.)g ! Fj(On)h(Cichel)5 b(li's)25 b(Minimal)f(Perfe)-5 b(ct)24 b(Hash)h(F)-7 b(unctions)25 b(Metho)-5 b(d)150 2107 y ! Fq(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(23,)h(12\(Decem)m(b)s (er)g(1980\),)h(728-729.)275 2242 y([8])25 b(Sager,)h(Thomas)e(J.)h ! Fj(A)h(Polynomial)j(Time)f(Gener)-5 b(ator)29 b(for)f(Minimal)f(Perfe) ! -5 b(ct)27 b(Hash)h(F)-7 b(unctions)150 2351 y Fq(Comm)m(unications)31 b(of)f(the)h(A)m(CM,)g(28,)h(5\(Decem)m(b)s(er)g(1985\),)g(523-532)275 ! 2486 y([9])f(Sc)m(hmidt,)f(Douglas)h(C.)f Fj(GPERF:)i(A)g(Perfe)-5 b(ct)32 b(Hash)h(F)-7 b(unction)33 b(Gener)-5 b(ator)42 ! b Fq(Second)30 b(USENIX)150 2595 y(C)p Fl(++)f Fq(Conference)i(Pro)s (ceedings,)g(April)f(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)i(Douglas)e ! (C.)f Fj(GPERF:)i(A)e(Perfe)-5 b(ct)43 b(Hash)g(F)-7 ! b(unction)43 b(Gener)-5 b(ator)53 b Fq(C)p Fl(++)40 b ! Fq(Rep)s(ort,)150 2839 y(SIGS)29 b(10)j(10)f(\(No)m(v)m(em)m(b)s (er/Decem)m(b)s(er)i(1998\).)275 2974 y([11])24 b(Seb)s(esta,)h(R.W.)e ! (and)g(T)-8 b(a)m(ylor,)26 b(M.A.)e Fj(Minimal)i(Perfe)-5 b(ct)26 b(Hash)g(F)-7 b(unctions)27 b(for)g(R)-5 b(eserve)g(d)27 ! b(Wor)-5 b(d)150 3083 y(Lists)38 b Fq(SIGPLAN)30 b(Notices,)j(20,)e (12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 3218 y([12])43 ! b(Sprugnoli,)h(R.)e Fj(Perfe)-5 b(ct)43 b(Hashing)h(F)-7 b(unctions:)64 b(A)43 b(Single)g(Pr)-5 b(ob)g(e)44 b(R)-5 b(etrieving)44 b(Metho)-5 b(d)44 b(for)150 3328 y(Static)33 ! b(Sets)38 b Fq(Comm)m(unications)31 b(of)g(the)f(A)m(CM,)i(20)f(11\(No) m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3462 y([13])27 ! b(Stallman,)h(Ric)m(hard)e(M.)h Fj(Using)h(and)i(Porting)f(GNU)g(CC)39 ! b Fq(F)-8 b(ree)28 b(Soft)m(w)m(are)f(F)-8 b(oundation,)28 ! b(1988.)275 3597 y([14])j(Stroustrup,)e(Bjarne)i Fj(The)h(C)p ! Fl(++)g Fj(Pr)-5 b(o)g(gr)g(amming)36 b(L)-5 b(anguage.)40 ! b Fq(Addison-W)-8 b(esley)g(,)33 b(1986.)275 3731 y([15])e(Tiemann,)f ! (Mic)m(hael)j(D.)e Fj(User's)h(Guide)h(to)g(GNU)f(C)p ! Fl(++)e Fq(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(1989.)p eop end %%Page: 29 31 ! TeXDict begin 29 30 bop 150 -116 a Fq(Concept)31 b(Index)2927 ! b(29)150 299 y Fn(Concept)52 b(Index)275 658 y Fb(\(Index)24 ! b(is)i(nonexisten)n(t\))p eop end %%Page: -1 32 ! TeXDict begin -1 31 bop 3725 -116 a Fq(i)150 299 y Fn(T)-13 ! b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fp(GNU)45 b(GENERAL)g(PUBLIC) g(LICENSE)31 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)75 ! b Fp(1)449 778 y Fq(Pream)m(ble)16 b Fj(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)45 b Fq(1)449 888 y(TERMS)29 b(AND)j(CONDITIONS)d(F)m(OR)h(COPYING,)h(DISTRIBUTION)631 ! 997 y(AND)g(MODIFICA)-8 b(TION)24 b Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)54 b Fq(2)449 1107 y(Ho)m(w)31 b(to)g(Apply)f(These)g(T)-8 b(erms)30 b(to)h(Y)-8 ! b(our)31 b(New)f(Programs)16 b Fj(.)g(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)46 b Fq(6)150 1349 y Fp(Con)l(tributors)g(to)f(GNU)g ! Fi(gperf)e Fp(Utilit)l(y)16 b Fa(.)21 b(.)e(.)h(.)f(.)h(.)f(.)h(.)f(.)h ! (.)f(.)g(.)h(.)60 b Fp(8)150 1619 y(1)135 b(In)l(tro)t(duction)15 b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)60 ! b Fp(9)150 1889 y(2)135 b(Static)45 b(searc)l(h)h(structures)f(and)f ! (GNU)h Fi(gperf)15 b Fa(.)i(.)j(.)f(.)60 b Fp(10)150 2159 y(3)135 b(High-Lev)l(el)46 b(Description)g(of)f(GNU)g ! Fi(gperf)21 b Fa(.)c(.)i(.)h(.)f(.)h(.)65 b Fp(11)449 ! 2296 y Fq(3.1)92 b(Input)29 b(F)-8 b(ormat)32 b(to)f ! Fl(gperf)23 b Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)g(.)54 b Fq(11)748 2405 y(3.1.1)93 b(Declarations)9 ! b Fj(.)17 b(.)e(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)39 b Fq(11)1047 2515 y(3.1.1.1)93 b(User-supplied)30 ! b Fl(struct)10 b Fj(.)j(.)i(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)39 b Fq(12)1047 2624 y(3.1.1.2)93 ! b(Gp)s(erf)30 b(Declarations)18 b Fj(.)f(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.) ! g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)47 b Fq(12)1047 ! 2734 y(3.1.1.3)93 b(C)30 b(Co)s(de)g(Inclusion)f Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)59 b Fq(15)748 2844 y(3.1.2)93 b(F)-8 b(ormat)31 ! b(for)f(Keyw)m(ord)g(En)m(tries)17 b Fj(.)f(.)f(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fq(16)748 2953 y(3.1.3)93 b(Including)29 b(Additional)i(C)f(F)-8 ! b(unctions)19 b Fj(.)d(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)49 b Fq(17)748 3063 y(3.1.4)93 b(Where)30 b(to)h(place)h ! (directiv)m(es)f(for)g(GNU)g Fl(indent)p Fq(.)17 b Fj(.)c(.)i(.)g(.)g ! (.)g(.)46 b Fq(17)449 3172 y(3.2)92 b(Output)29 b(F)-8 ! b(ormat)32 b(for)e(Generated)h(C)f(Co)s(de)g(with)g Fl(gperf)23 ! b Fj(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 b Fq(17)449 ! 3282 y(3.3)92 b(Use)31 b(of)f(NUL)h(b)m(ytes)22 b Fj(.)16 b(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g (.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)h(.) ! f(.)g(.)51 b Fq(18)150 3524 y Fp(4)135 b(In)l(v)l(oking)45 ! b Fi(gperf)16 b Fa(.)i(.)h(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)61 ! b Fp(19)449 3661 y Fq(4.1)92 b(Sp)s(ecifying)30 b(the)g(Lo)s(cation)i ! (of)e(the)h(Output)e(File)19 b Fj(.)e(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)g(.)49 b Fq(19)449 3771 y(4.2)92 b(Options)30 b(that)h(a\013ect)h(In)m(terpretation)f(of)g(the)f(Input)f(File)g ! Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fq(19)449 3880 y(4.3)92 b(Options)30 b(to)h(sp)s(ecify)f(the)h(Language)g(for)f(the)h(Output)e ! (Co)s(de)14 b Fj(.)g(.)h(.)g(.)g(.)43 b Fq(19)449 3990 y(4.4)92 b(Options)30 b(for)g(\014ne)g(tuning)g(Details)i(in)e(the)h ! (Output)e(Co)s(de)23 b Fj(.)15 b(.)g(.)g(.)g(.)g(.)g(.)53 ! b Fq(20)449 4100 y(4.5)92 b(Options)30 b(for)g(c)m(hanging)h(the)g ! (Algorithms)g(emplo)m(y)m(ed)g(b)m(y)g Fl(gperf)21 b ! Fj(.)14 b(.)50 b Fq(23)449 4209 y(4.6)92 b(Informativ)m(e)31 ! b(Output)c Fj(.)15 b(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g ! (.)g(.)g(.)g(.)g(.)58 b Fq(25)150 4452 y Fp(5)135 b(Kno)l(wn)45 ! b(Bugs)f(and)h(Limitations)i(with)e Fi(gperf)32 b Fa(.)19 ! b(.)g(.)79 b Fp(26)150 4721 y(6)135 b(Things)44 b(Still)i(Left)g(to)f (Do)23 b Fa(.)d(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h ! (.)f(.)g(.)h(.)f(.)68 b Fp(27)150 4991 y(7)135 b(Bibliograph)l(y)38 b Fa(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h (.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)82 ! b Fp(28)150 5261 y(Concept)45 b(Index)21 b Fa(.)e(.)g(.)h(.)f(.)h(.)f (.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) ! f(.)g(.)h(.)f(.)h(.)f(.)h(.)65 b Fp(29)p eop end %%Trailer diff -C 2 -rP gperf-3.0.1/doc/gperf.texi gperf-3.0.2/doc/gperf.texi *** gperf-3.0.1/doc/gperf.texi Thu Jun 12 16:31:04 2003 --- gperf-3.0.2/doc/gperf.texi Sun Jan 22 12:12:03 2006 *************** *** 8,14 **** @c some day we should @include version.texi instead of defining @c these values at hand. ! @set UPDATED 12 June 2003 ! @set EDITION 3.0.1 ! @set VERSION 3.0.1 @c --------------------- --- 8,14 ---- @c some day we should @include version.texi instead of defining @c these values at hand. ! @set UPDATED 22 January 2006 ! @set EDITION 3.0.2 ! @set VERSION 3.0.2 @c --------------------- *************** *** 29,33 **** Generator @value{VERSION}. ! Copyright @copyright{} 1989-2003 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this --- 29,33 ---- Generator @value{VERSION}. ! Copyright @copyright{} 1989-2006 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this *************** *** 67,71 **** @page @vskip 0pt plus 1filll ! Copyright @copyright{} 1989-2003 Free Software Foundation, Inc. --- 67,71 ---- @page @vskip 0pt plus 1filll ! Copyright @copyright{} 1989-2004 Free Software Foundation, Inc. *************** *** 606,609 **** --- 606,616 ---- (or, equivalently, the @samp{%global-table} declaration) is given. + @item %define length-table-name @var{name} + @cindex @samp{%define length-table-name} + Allows you to specify the name for the generated array containing the + length table. Default name is @samp{lengthtable}. This option permits the + use of two length tables in the same file, even when the option @samp{-G} + (or, equivalently, the @samp{%global-table} declaration) is given. + @item %switch=@var{count} @cindex @samp{%switch} *************** *** 1083,1086 **** --- 1090,1100 ---- (or, equivalently, the @samp{%global-table} declaration) is given. + @itemx --length-table-name=@var{length-table-array-name} + @cindex Array name + Allows you to specify the name for the generated array containing the + length table. Default name is @samp{lengthtable}. This option permits the + use of two length tables in the same file, even when the option @samp{-G} + (or, equivalently, the @samp{%global-table} declaration) is given. + @item -S @var{total-switch-statements} @itemx --switch=@var{total-switch-statements} diff -C 2 -rP gperf-3.0.1/doc/gperf_1.html gperf-3.0.2/doc/gperf_1.html *** gperf-3.0.1/doc/gperf_1.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_1.html Thu Jun 29 15:07:02 2006 *************** *** 1,5 **** ! Perfect Hash Function Generator - GNU GENERAL PUBLIC LICENSE --- 1,6 ---- ! Perfect Hash Function Generator - GNU GENERAL PUBLIC LICENSE *************** *** 15,19 **** Version 2, June 1991 !
                        --- 16,20 ----
                          Version 2, June 1991
                          
                        ! 

                        ***************
                        *** 40,44 ****
                          your programs, too.
                          
                        ! 
                          

                        When we speak of free software, we are referring to freedom, not --- 41,45 ---- your programs, too. !

                        When we speak of free software, we are referring to freedom, not *************** *** 49,53 **** in new free programs; and that you know you can do these things. !

                        To protect your rights, we need to make restrictions that forbid --- 50,54 ---- in new free programs; and that you know you can do these things. !

                        To protect your rights, we need to make restrictions that forbid *************** *** 56,60 **** distribute copies of the software, or if you modify it. !

                        For example, if you distribute copies of such a program, whether --- 57,61 ---- distribute copies of the software, or if you modify it. !

                        For example, if you distribute copies of such a program, whether *************** *** 64,68 **** rights. !

                        We protect your rights with two steps: (1) copyright the software, and --- 65,69 ---- rights. !

                        We protect your rights with two steps: (1) copyright the software, and *************** *** 70,74 **** distribute and/or modify the software. !

                        Also, for each author's protection and ours, we want to make certain --- 71,75 ---- distribute and/or modify the software. !

                        Also, for each author's protection and ours, we want to make certain *************** *** 79,83 **** authors' reputations. !

                        Finally, any free program is threatened constantly by software --- 80,84 ---- authors' reputations. !

                        Finally, any free program is threatened constantly by software *************** *** 87,100 **** 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. !

                        TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION !

                          --- 88,101 ---- 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. !

                          TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION !

                            *************** *** 365,369 **** END OF TERMS AND CONDITIONS ! --- 366,370 ---- END OF TERMS AND CONDITIONS !

                            *************** *** 375,379 **** free software which everyone can redistribute and change under these terms. !

                            To do so, attach the following notices to the program. It is safest --- 376,380 ---- free software which everyone can redistribute and change under these terms. !

                            To do so, attach the following notices to the program. It is safest *************** *** 382,386 **** the "copyright" line and a pointer to where the full notice is found. !

                            --- 383,387 ----
                              the "copyright" line and a pointer to where the full notice is found.
                              
                            ! 

                            ***************
                            *** 406,415 ****
                              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: !

                            --- 407,416 ----
                              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: !

                            ***************
                            *** 428,432 ****
                              suits your program.
                              
                            ! 
                              

                            You should also get your employer (if you work as a programmer) or your --- 429,433 ---- suits your program. !

                            You should also get your employer (if you work as a programmer) or your *************** *** 434,438 **** necessary. Here is a sample; alter the names: !

                            --- 435,439 ----
                              necessary.  Here is a sample; alter the names:
                              
                            ! 

                            ***************
                            *** 453,457 ****
                              Public License instead of this License.
                              
                            ! 
                              


                            Go to the first, previous, next, last section, table of contents. --- 454,458 ---- Public License instead of this License. !


                            Go to the first, previous, next, last section, table of contents. diff -C 2 -rP gperf-3.0.1/doc/gperf_10.html gperf-3.0.2/doc/gperf_10.html *** gperf-3.0.1/doc/gperf_10.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_10.html Thu Jun 29 15:07:02 2006 *************** *** 1,5 **** ! Perfect Hash Function Generator - Concept Index --- 1,6 ---- ! Perfect Hash Function Generator - Concept Index *************** *** 49,52 **** --- 50,54 ----

                          1. `%define hash-function-name'
                          2. `%define initializer-suffix' +
                          3. `%define length-table-name'
                          4. `%define lookup-function-name'
                          5. `%define slot-name' *************** *** 60,74 ****
                          6. `%language'
                          7. `%null-strings' !
                          8. `%omit-struct-type'
                          9. `%pic'
                          10. `%readonly-tables'
                          11. `%struct-type' !
                          12. `%switch' !
                          13. `%{' !
                          14. `%}'

                            a

                            !
                          15. Array name
                          16. b

                            --- 62,76 ----
                          17. `%language'
                          18. `%null-strings' !
                          19. `%omit-struct-type'
                          20. `%pic'
                          21. `%readonly-tables'
                          22. `%struct-type' !
                          23. `%switch' !
                          24. `%{' !
                          25. `%}'

                            a

                            !
                          26. Array name, Array name
                          27. b

                            *************** *** 78,88 ****

                            c

                            !
                          28. Class name
                          29. d

                          30. Declaration section !
                          31. Delimiters !
                          32. Duplicates
                          33. f

                            --- 80,90 ----

                            c

                            !
                          34. Class name
                          35. d

                          36. Declaration section !
                          37. Delimiters !
                          38. Duplicates
                          39. f

                            *************** *** 93,107 ****

                            h

                            !
                          40. hash !
                          41. hash table
                          42. i

                            !
                          43. in_word_set !
                          44. Initializers
                          45. j

                            !
                          46. Jump value
                          47. k

                            --- 95,109 ----

                            h

                            !
                          48. hash !
                          49. hash table
                          50. i

                            !
                          51. in_word_set !
                          52. Initializers
                          53. j

                            !
                          54. Jump value
                          55. k

                            *************** *** 115,128 ****

                            n

                            !
                          56. NUL
                          57. s

                            !
                          58. Slot name
                          59. Static search structure !
                          60. switch, switch
                          61. !


                            Go to the first, previous, next, last section, table of contents. --- 117,130 ----

                            n

                            !
                          62. NUL
                          63. s

                            !
                          64. Slot name
                          65. Static search structure !
                          66. switch, switch
                          67. !


                            Go to the first, previous, next, last section, table of contents. diff -C 2 -rP gperf-3.0.1/doc/gperf_2.html gperf-3.0.2/doc/gperf_2.html *** gperf-3.0.1/doc/gperf_2.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_2.html Thu Jun 29 15:07:02 2006 *************** *** 1,5 **** ! Perfect Hash Function Generator - Contributors to GNU gperf Utility --- 1,6 ---- ! Perfect Hash Function Generator - Contributors to GNU gperf Utility diff -C 2 -rP gperf-3.0.1/doc/gperf_3.html gperf-3.0.2/doc/gperf_3.html *** gperf-3.0.1/doc/gperf_3.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_3.html Thu Jun 29 15:07:02 2006 *************** *** 1,7 **** ! ! Perfect Hash Function Generator - 1. Introduction --- 1,8 ---- ! ! Perfect Hash Function Generator - 1 Introduction *************** *** 10,14 **** !

                            1. Introduction

                            --- 11,15 ---- !

                            1 Introduction

                            *************** *** 23,27 **** the lookup table. !

                            gperf currently generates the reserved keyword recognizer for --- 24,28 ---- the lookup table. !

                            gperf currently generates the reserved keyword recognizer for *************** *** 34,38 **** or from http://www.cs.wustl.edu/~schmidt/resume.html. !


                            Go to the first, previous, next, last section, table of contents. --- 35,39 ---- or from http://www.cs.wustl.edu/~schmidt/resume.html. !


                            Go to the first, previous, next, last section, table of contents. diff -C 2 -rP gperf-3.0.1/doc/gperf_4.html gperf-3.0.2/doc/gperf_4.html *** gperf-3.0.1/doc/gperf_4.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_4.html Thu Jun 29 15:07:02 2006 *************** *** 1,7 **** ! ! Perfect Hash Function Generator - 2. Static search structures and GNU gperf --- 1,8 ---- ! ! Perfect Hash Function Generator - 2 Static search structures and GNU gperf *************** *** 10,18 **** !

                            2. Static search structures and GNU gperf

                            !

                            A static search structure is an Abstract Data Type with certain --- 11,19 ---- !

                            2 Static search structures and GNU gperf

                            !

                            A static search structure is an Abstract Data Type with certain *************** *** 30,34 **** not generally modified at run-time. !

                            Numerous static search structure implementations exist, e.g., --- 31,35 ---- not generally modified at run-time. !

                            Numerous static search structure implementations exist, e.g., *************** *** 42,46 **** additional memory overhead and exhibit poor worst case performance. !

                            --- 43,47 ---- additional memory overhead and exhibit poor worst case performance. !

                            *************** *** 49,53 **** function is defined by two properties: !

                              --- 50,54 ---- function is defined by two properties: !

                                *************** *** 75,79 **** user control over the degree of minimality and perfection. !

                                Static search sets often exhibit relative stability over time. For --- 76,80 ---- user control over the degree of minimality and perfection. !

                                Static search sets often exhibit relative stability over time. For *************** *** 91,95 **** efficiently identify their respective reserved keywords. !


                                Go to the first, previous, next, last section, table of contents. --- 92,96 ---- efficiently identify their respective reserved keywords. !


                                Go to the first, previous, next, last section, table of contents. diff -C 2 -rP gperf-3.0.1/doc/gperf_5.html gperf-3.0.2/doc/gperf_5.html *** gperf-3.0.1/doc/gperf_5.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_5.html Thu Jun 29 15:07:02 2006 *************** *** 1,7 **** ! ! Perfect Hash Function Generator - 3. High-Level Description of GNU gperf --- 1,8 ---- ! ! Perfect Hash Function Generator - 3 High-Level Description of GNU gperf *************** *** 10,14 **** !

                                3. High-Level Description of GNU gperf

                                --- 11,15 ---- !

                                3 High-Level Description of GNU gperf

                                *************** *** 23,27 **** below allow you to modify the input and output format to gperf. !

                                By default, gperf attempts to produce time-efficient code, with --- 24,28 ---- below allow you to modify the input and output format to gperf. !

                                By default, gperf attempts to produce time-efficient code, with *************** *** 35,39 **** somewhat. Actual results depend on your C compiler, of course. !

                                In general, gperf assigns values to the bytes it is using --- 36,40 ---- somewhat. Actual results depend on your C compiler, of course. !

                                In general, gperf assigns values to the bytes it is using *************** *** 43,50 **** Experimentation is the key to getting the most from gperf. ! !

                                3.1 Input Format to gperf

                                --- 44,51 ---- Experimentation is the key to getting the most from gperf. +

                                !

                                3.1 Input Format to gperf

                                *************** *** 58,62 **** format: !

                                --- 59,63 ----
                                  format:
                                  
                                ! 

                                ***************
                                *** 73,76 ****
                                --- 74,78 ----
                                  input format for each section.
                                  
                                + 

                                *************** *** 79,83 **** first keyword line, e.g.: !

                                --- 81,85 ----
                                  first keyword line, e.g.:
                                  
                                ! 

                                ***************
                                *** 91,95 ****
                                  
                                  
                                ! 

                                3.1.1 Declarations

                                --- 93,97 ---- !

                                3.1.1 Declarations

                                *************** *** 99,106 **** struct. !

                                3.1.1.1 User-supplied struct

                                --- 101,109 ---- struct. +

                                !

                                3.1.1.1 User-supplied struct

                                *************** *** 115,124 **** `%define slot-name' declaration) described below. !

                                Here is a simple example, using months of the year and their attributes as input: !

                                --- 118,127 ----
                                  `%define slot-name' declaration) described below.
                                  
                                ! 

                                Here is a simple example, using months of the year and their attributes as input: !

                                ***************
                                *** 146,155 ****
                                  lex.
                                  
                                ! 
                                  

                                If the struct has already been declared in an include file, it can be mentioned in an abbreviated form, like this: !

                                --- 149,158 ----
                                  lex.
                                  
                                ! 

                                If the struct has already been declared in an include file, it can be mentioned in an abbreviated form, like this: !

                                ***************
                                *** 162,166 ****
                                  
                                  
                                ! 

                                3.1.1.2 Gperf Declarations

                                --- 165,169 ---- !

                                3.1.1.2 Gperf Declarations

                                *************** *** 170,174 **** There are three forms of declarations: !

                                  --- 173,177 ---- There are three forms of declarations: !

                                    *************** *** 191,199 **** option, the command-line option's value prevails. !

                                    The following gperf declarations are available. !

                                    --- 194,202 ---- option, the command-line option's value prevails. !

                                    The following gperf declarations are available. !

                                    *************** *** 306,310 **** Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. --- 309,313 ---- Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. *************** *** 387,393 **** (or, equivalently, the `%global-table' declaration) is given. !
                                    `%switch=count'
                                    Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both --- 390,404 ---- (or, equivalently, the `%global-table' declaration) is given. !
                                    `%define length-table-name name'
                                    + Allows you to specify the name for the generated array containing the + length table. Default name is `lengthtable'. This option permits the + use of two length tables in the same file, even when the option `-G' + (or, equivalently, the `%global-table' declaration) is given. + +
                                    `%switch=count' +
                                    + Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both *************** *** 402,406 ****
                                    `%omit-struct-type'
                                    ! Prevents the transfer of the type declaration to the output file. Use this option if the type is already defined elsewhere. --- 413,417 ----
                                    `%omit-struct-type'
                                    ! Prevents the transfer of the type declaration to the output file. Use this option if the type is already defined elsewhere. *************** *** 409,417 **** !

                                    3.1.1.3 C Code Inclusion

                                    - Using a syntax similar to GNU utilities flex and bison, it is possible to directly include C source text and comments verbatim into --- 420,428 ---- !

                                    3.1.1.3 C Code Inclusion

                                    + Using a syntax similar to GNU utilities flex and bison, it is possible to directly include C source text and comments verbatim into *************** *** 421,425 **** feature: !

                                    --- 432,436 ----
                                      feature:
                                      
                                    ! 

                                    ***************
                                    *** 439,443 ****
                                      
                                      
                                    ! 

                                    3.1.2 Format for Keyword Entries

                                    --- 450,454 ---- !

                                    3.1.2 Format for Keyword Entries

                                    *************** *** 449,453 **** must not occur within the keywords section. !

                                    The first field of each non-comment line is always the keyword itself. It --- 460,464 ---- must not occur within the keywords section. !

                                    The first field of each non-comment line is always the keyword itself. It *************** *** 461,465 **** example taken from a partial list of C reserved words: !

                                    --- 472,476 ----
                                      example taken from a partial list of C reserved words:
                                      
                                    ! 

                                    ***************
                                    *** 481,485 ****
                                      may be elided if the declaration section is empty.
                                      
                                    ! 
                                      

                                    Additional fields may optionally follow the leading keyword. Fields --- 492,496 ---- may be elided if the declaration section is empty. !

                                    Additional fields may optionally follow the leading keyword. Fields *************** *** 492,499 **** one contain keyword attributes. ! !

                                    3.1.3 Including Additional C Functions

                                    --- 503,510 ---- one contain keyword attributes. +

                                    !

                                    3.1.3 Including Additional C Functions

                                    *************** *** 505,512 **** section is valid C. ! !

                                    3.1.4 Where to place directives for GNU indent.

                                    --- 516,523 ---- section is valid C. +

                                    !

                                    3.1.4 Where to place directives for GNU indent.

                                    *************** *** 518,522 **** general input file structure !

                                    --- 529,533 ----
                                      general input file structure
                                      
                                    ! 

                                    ***************
                                    *** 536,540 ****
                                      as follows:
                                      
                                    ! 
                                      
                                      
                                    --- 547,551 ----
                                      as follows:
                                      
                                    ! 

                                    ***************
                                    *** 556,564 ****
                                      
                                      
                                    ! 

                                    3.2 Output Format for Generated C Code with gperf

                                    ! !

                                    Several options control how the generated C code appears on the standard --- 567,575 ---- !

                                    3.2 Output Format for Generated C Code with gperf

                                    ! +

                                    Several options control how the generated C code appears on the standard *************** *** 569,577 **** function prototypes are as follows: !

                                    Function: unsigned int hash (const char * str, unsigned int len) !
                                    By default, the generated hash function returns an integer value created by adding len to several user-specified str byte --- 580,588 ---- function prototypes are as follows: !

                                    Function: unsigned int hash (const char * str, unsigned int len) !
                                    By default, the generated hash function returns an integer value created by adding len to several user-specified str byte *************** *** 581,592 **** called `hash_table'. The relevant selected positions (i.e. indices into str) are specified via the `-k' option when running ! gperf, as detailed in the Options section below (see section 4. Invoking gperf).
                                    !

                                    Function: in_word_set (const char * str, unsigned int len) !
                                    If str is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the --- 592,603 ---- called `hash_table'. The relevant selected positions (i.e. indices into str) are specified via the `-k' option when running ! gperf, as detailed in the Options section below (see section 4 Invoking gperf).
                                    !

                                    Function: in_word_set (const char * str, unsigned int len) !
                                    If str is in the keyword set, returns a pointer to that keyword. More exactly, if the option `-t' (or, equivalently, the *************** *** 596,600 ****
                                    !

                                    If the option `-c' (or, equivalently, the `%compare-strncmp' --- 607,611 ----

                                    !

                                    If the option `-c' (or, equivalently, the `%compare-strncmp' *************** *** 605,614 **** terminated. !

                                    The code generated for these two functions is affected by the following options: !

                                    --- 616,625 ---- terminated. !

                                    The code generated for these two functions is affected by the following options: !

                                    *************** *** 623,627 ****
                                    `--switch=total-switch-statements'
                                    ! Generate 1 or more C switch statement rather than use a large, (and potentially sparse) static array. Although the exact time and --- 634,638 ----
                                    `--switch=total-switch-statements'
                                    ! Generate 1 or more C switch statement rather than use a large, (and potentially sparse) static array. Although the exact time and *************** *** 641,652 **** set characteristics. ! !

                                    3.3 Use of NUL bytes

                                    ! !

                                    By default, the code generated by gperf operates on zero --- 652,663 ---- set characteristics. +

                                    !

                                    3.3 Use of NUL bytes

                                    ! +

                                    By default, the code generated by gperf operates on zero *************** *** 656,660 **** must be NUL terminated and have exactly length len. !

                                    If option `-c' (or, equivalently, the `%compare-strncmp' --- 667,671 ---- must be NUL terminated and have exactly length len. !

                                    If option `-c' (or, equivalently, the `%compare-strncmp' *************** *** 665,669 **** bytes. !

                                    If option `-l' (or, equivalently, the `%compare-lengths' --- 676,680 ---- bytes. !

                                    If option `-l' (or, equivalently, the `%compare-lengths' *************** *** 675,679 **** `%compare-strncmp' declaration) is ignored. !


                                    Go to the first, previous, next, last section, table of contents. --- 686,690 ---- `%compare-strncmp' declaration) is ignored. !


                                    Go to the first, previous, next, last section, table of contents. diff -C 2 -rP gperf-3.0.1/doc/gperf_6.html gperf-3.0.2/doc/gperf_6.html *** gperf-3.0.1/doc/gperf_6.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_6.html Thu Jun 29 15:07:02 2006 *************** *** 1,7 **** ! ! Perfect Hash Function Generator - 4. Invoking gperf --- 1,8 ---- ! ! Perfect Hash Function Generator - 4 Invoking gperf *************** *** 10,14 **** !

                                    4. Invoking gperf

                                    --- 11,15 ---- !

                                    4 Invoking gperf

                                    *************** *** 18,25 **** complete list of options. !

                                    4.1 Specifying the Location of the Output File

                                    --- 19,27 ---- complete list of options. +

                                    !

                                    4.1 Specifying the Location of the Output File

                                    *************** *** 34,47 **** or if it is `-'. ! !

                                    4.2 Options that affect Interpretation of the Input File

                                    These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). !

                                    --- 36,49 ---- or if it is `-'. +

                                    !

                                    4.2 Options that affect Interpretation of the Input File

                                    These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). +

                                    *************** *** 50,54 ****
                                    `--delimiters=keyword-delimiter-list'
                                    ! Allows you to provide a string containing delimiters used to separate keywords from their attributes. The default is ",". This --- 52,56 ----
                                    `--delimiters=keyword-delimiter-list'
                                    ! Allows you to provide a string containing delimiters used to separate keywords from their attributes. The default is ",". This *************** *** 83,93 **** !

                                    4.3 Options to specify the Language for the Output Code

                                    These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). !

                                    --- 85,95 ---- !

                                    4.3 Options to specify the Language for the Output Code

                                    These options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). +

                                    *************** *** 137,147 **** !

                                    4.4 Options for fine tuning Details in the Output Code

                                    Most of these options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). !

                                    --- 139,149 ---- !

                                    4.4 Options for fine tuning Details in the Output Code

                                    Most of these options are also available as declarations in the input file ! (see section 3.1.1.2 Gperf Declarations). +

                                    *************** *** 150,154 ****
                                    `--slot-name=slot-name'
                                    ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. --- 152,156 ----
                                    `--slot-name=slot-name'
                                    ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. *************** *** 162,166 ****
                                    `--initializer-suffix=initializers'
                                    ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. --- 164,168 ----
                                    `--initializer-suffix=initializers'
                                    ! This option is only useful when option `-t' (or, equivalently, the `%struct-type' declaration) has been given. *************** *** 190,194 ****
                                    `--class-name=class-name'
                                    ! This option is only useful when option `-L C++' (or, equivalently, the `%language=C++' declaration) has been given. It --- 192,196 ----
                                    `--class-name=class-name'
                                    ! This option is only useful when option `-L C++' (or, equivalently, the `%language=C++' declaration) has been given. It *************** *** 214,218 ****
                                    Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. --- 216,220 ----
                                    Compare keyword lengths before trying a string comparison. This option ! is mandatory for binary comparisons (see section 3.3 Use of NUL bytes). It also might cut down on the number of string comparisons made during the lookup, since keywords with different lengths are never compared via strcmp. *************** *** 296,300 ****
                                    `--word-array-name=hash-table-array-name'
                                    ! Allows you to specify the name for the generated array containing the hash table. Default name is `wordlist'. This option permits the --- 298,302 ----
                                    `--word-array-name=hash-table-array-name'
                                    ! Allows you to specify the name for the generated array containing the hash table. Default name is `wordlist'. This option permits the *************** *** 302,310 **** (or, equivalently, the `%global-table' declaration) is given.
                                    `-S total-switch-statements'
                                    `--switch=total-switch-statements'
                                    ! Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both --- 304,320 ---- (or, equivalently, the `%global-table' declaration) is given. +
                                    `--length-table-name=length-table-array-name' +
                                    + + Allows you to specify the name for the generated array containing the + length table. Default name is `lengthtable'. This option permits the + use of two length tables in the same file, even when the option `-G' + (or, equivalently, the `%global-table' declaration) is given. +
                                    `-S total-switch-statements'
                                    `--switch=total-switch-statements'
                                    ! Causes the generated C code to use a switch statement scheme, rather than an array lookup table. This can lead to a reduction in both *************** *** 332,336 **** !

                                    4.5 Options for changing the Algorithms employed by gperf

                                    --- 342,346 ---- !

                                    4.5 Options for changing the Algorithms employed by gperf

                                    *************** *** 366,370 ****
                                    `--duplicates'
                                    ! Handle keywords whose selected byte sets hash to duplicate values. Duplicate hash values can occur if a set of keywords has the same names, but --- 376,380 ----
                                    `--duplicates'
                                    ! Handle keywords whose selected byte sets hash to duplicate values. Duplicate hash values can occur if a set of keywords has the same names, but *************** *** 403,407 ****
                                    `--jump=jump-value'
                                    ! Affects the "jump value", i.e., how far to advance the associated byte value upon collisions. Jump-value is rounded up to an --- 413,417 ----
                                    `--jump=jump-value'
                                    ! Affects the "jump value", i.e., how far to advance the associated byte value upon collisions. Jump-value is rounded up to an *************** *** 457,461 **** !

                                    4.6 Informative Output

                                    --- 467,471 ---- !

                                    4.6 Informative Output

                                    diff -C 2 -rP gperf-3.0.1/doc/gperf_7.html gperf-3.0.2/doc/gperf_7.html *** gperf-3.0.1/doc/gperf_7.html Thu Jun 12 16:33:57 2003 --- gperf-3.0.2/doc/gperf_7.html Thu Jun 29 15:07:02 2006 *************** *** 1,7 **** ! ! Perfect Hash Function Generator - 5. Known Bugs and Limitations with gperf --- 1,8 ---- ! ! Perfect Hash Function Generator - 5 Known Bugs and Limitations with gperf *************** *** 10,14 **** !

                                    5. Known Bugs and Limitations with gperf

                                    --- 11,15 ---- !

                                    5 Known Bugs and Limitations with gperf

                                    *************** *** 16,20 **** gperf: !


                                    ! This document was generated on 29 June 2006 using the ! texi2html ! translator version 1.52.

                                    diff -C 2 -rP gperf-3.0.1/doc/help2man gperf-3.0.2/doc/help2man *** gperf-3.0.1/doc/help2man Sat Nov 18 00:13:59 2000 --- gperf-3.0.2/doc/help2man Sat May 14 14:22:35 2005 *************** *** 16,20 **** # 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. # Written by Brendan O'Dea --- 16,20 ---- # 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Written by Brendan O'Dea diff -C 2 -rP gperf-3.0.1/doc/texinfo.tex gperf-3.0.2/doc/texinfo.tex *** gperf-3.0.1/doc/texinfo.tex Sun May 28 13:00:00 2000 --- gperf-3.0.2/doc/texinfo.tex Sat May 14 14:22:35 2005 *************** *** 21,26 **** % You should have received a copy of the GNU General Public License % along with this texinfo.tex file; see the file COPYING. If not, write ! % to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ! % Boston, MA 02111-1307, USA. % % In other words, you are welcome to use, share and improve this program. --- 21,26 ---- % You should have received a copy of the GNU General Public License % along with this texinfo.tex file; see the file COPYING. If not, write ! % to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ! % Boston, MA 02110-1301, USA. % % In other words, you are welcome to use, share and improve this program. diff -C 2 -rP gperf-3.0.1/lib/Makefile.in gperf-3.0.2/lib/Makefile.in *** gperf-3.0.1/lib/Makefile.in Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/lib/Makefile.in Fri Jan 13 14:43:56 2006 *************** *** 20,24 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 20,24 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #### Start of system configuration section. #### *************** *** 41,44 **** --- 41,46 ---- CXXFLAGS = @CXXFLAGS@ CXXCPP = @CXXCPP@ + # Both C and C++ compiler + OBJEXT = @OBJEXT@ # Other AR = ar *************** *** 61,65 **** VPATH = $(srcdir) ! OBJECTS = getopt.o getopt1.o getline.o hash.o CPPFLAGS = -I$(srcdir) --- 63,67 ---- VPATH = $(srcdir) ! OBJECTS = getopt.$(OBJEXT) getopt1.$(OBJEXT) getline.$(OBJEXT) hash.$(OBJEXT) CPPFLAGS = -I$(srcdir) diff -C 2 -rP gperf-3.0.1/lib/configure gperf-3.0.2/lib/configure *** gperf-3.0.1/lib/configure Wed May 7 11:19:23 2003 --- gperf-3.0.2/lib/configure Sun Jan 22 12:31:59 2006 *************** *** 1,8 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.57. # ! # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. --- 1,7 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.59. # ! # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. *************** *** 21,27 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 20,27 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 42,46 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 42,46 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 219,222 **** --- 219,223 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 225,232 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 226,233 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 272,276 **** ac_unique_file="hash.cc" ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP CXX CXXFLAGS ac_ct_CXX CXXCPP RANLIB INSTALL INSTALL_PROGRAM INSTALL_DATA LIBOBJS LTLIBOBJS' ac_subst_files='' --- 273,277 ---- ac_unique_file="hash.cc" ! ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP CXX CXXFLAGS ac_ct_CXX CXXCPP RANLIB ac_ct_RANLIB INSTALL INSTALL_PROGRAM INSTALL_DATA LIBOBJS LTLIBOBJS' ac_subst_files='' *************** *** 631,635 **** # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` --- 632,636 ---- # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` *************** *** 671,678 **** ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 672,679 ---- ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 778,784 **** Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in --- 779,785 ---- Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in *************** *** 860,869 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir --- 861,903 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac cd $ac_dir *************** *** 876,880 **** $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help --- 910,914 ---- $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help *************** *** 890,895 **** cat <<\_ACEOF ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. --- 924,928 ---- cat <<\_ACEOF ! Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. *************** *** 903,907 **** It was created by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ --- 936,940 ---- It was created by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ *************** *** 980,996 **** ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" --- 1013,1029 ---- ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" *************** *** 1026,1035 **** *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1059,1068 ---- *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1060,1064 **** do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo --- 1093,1097 ---- do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo *************** *** 1079,1083 **** echo "$as_me: exit $exit_status" } >&5 ! rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status --- 1112,1116 ---- echo "$as_me: exit $exit_status" } >&5 ! rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status *************** *** 1159,1163 **** ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set --- 1192,1196 ---- ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set *************** *** 1176,1186 **** *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac --- 1209,1219 ---- *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac *************** *** 1232,1236 **** echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 --- 1265,1269 ---- echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 *************** *** 1595,1599 **** cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1628,1631 ---- *************** *** 1615,1620 **** # It will help us diagnose broken compilers, and finding out an intuition # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output" >&5 ! echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 --- 1647,1652 ---- # It will help us diagnose broken compilers, and finding out an intuition # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ! echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 *************** *** 1636,1656 **** case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; conftest.$ac_ext ) ! # This is the source file. ! ;; [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; * ) ! break;; esac done --- 1668,1688 ---- case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; conftest.$ac_ext ) ! # This is the source file. ! ;; [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; * ) ! break;; esac done *************** *** 1726,1731 **** *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; * ) break;; esac --- 1758,1763 ---- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; * ) break;; esac *************** *** 1752,1756 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1784,1787 ---- *************** *** 1803,1807 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1834,1837 ---- *************** *** 1823,1831 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 1853,1871 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1840,1844 **** ac_compiler_gnu=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu --- 1880,1884 ---- ac_compiler_gnu=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu *************** *** 1856,1860 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1896,1899 ---- *************** *** 1873,1881 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 1912,1930 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1890,1894 **** ac_cv_prog_cc_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 --- 1939,1943 ---- ac_cv_prog_cc_g=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 *************** *** 1917,1921 **** ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1966,1969 ---- *************** *** 1945,1948 **** --- 1993,2006 ---- return s; } + + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; *************** *** 1971,1979 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2029,2047 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1988,1992 **** fi ! rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext --- 2056,2060 ---- fi ! rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext *************** *** 2016,2024 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2084,2102 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2027,2032 **** (exit $ac_status); }; }; then for ac_declaration in \ ! ''\ ! '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ --- 2105,2109 ---- (exit $ac_status); }; }; then for ac_declaration in \ ! '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ *************** *** 2036,2040 **** do cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2113,2116 ---- *************** *** 2042,2047 **** cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include $ac_declaration int main () --- 2118,2123 ---- cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration + #include int main () *************** *** 2054,2062 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2130,2148 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2071,2077 **** continue fi ! rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2157,2162 ---- continue fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF *************** *** 2090,2098 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2175,2193 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2106,2110 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* --- 2201,2205 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* *************** *** 2120,2124 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' --- 2215,2219 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' *************** *** 2155,2159 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2250,2253 ---- *************** *** 2166,2170 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2260,2264 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2178,2181 **** --- 2272,2276 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2198,2202 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2293,2296 ---- *************** *** 2216,2219 **** --- 2310,2314 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2262,2266 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2357,2360 ---- *************** *** 2273,2277 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2367,2371 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2285,2288 **** --- 2379,2383 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2305,2309 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2400,2403 ---- *************** *** 2323,2326 **** --- 2417,2421 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2480,2484 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2575,2578 ---- *************** *** 2500,2508 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2594,2612 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2517,2521 **** ac_compiler_gnu=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu --- 2621,2625 ---- ac_compiler_gnu=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu *************** *** 2533,2537 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2637,2640 ---- *************** *** 2550,2558 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2653,2671 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2567,2571 **** ac_cv_prog_cxx_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 --- 2680,2684 ---- ac_cv_prog_cxx_g=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 *************** *** 2587,2592 **** fi for ac_declaration in \ ! ''\ ! '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ --- 2700,2704 ---- fi for ac_declaration in \ ! '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ *************** *** 2596,2600 **** do cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2708,2711 ---- *************** *** 2602,2607 **** cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include $ac_declaration int main () --- 2713,2718 ---- cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration + #include int main () *************** *** 2614,2622 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2725,2743 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2631,2637 **** continue fi ! rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2752,2757 ---- continue fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF *************** *** 2650,2658 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2770,2788 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2666,2670 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* --- 2796,2800 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* *************** *** 2705,2709 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2835,2838 ---- *************** *** 2716,2720 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2845,2849 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2728,2731 **** --- 2857,2861 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2748,2752 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2878,2881 ---- *************** *** 2766,2769 **** --- 2895,2899 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2812,2816 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2942,2945 ---- *************** *** 2823,2827 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2952,2956 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2835,2838 **** --- 2964,2968 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2855,2859 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2985,2988 ---- *************** *** 2873,2876 **** --- 3002,3006 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2911,2916 **** ac_compiler_gnu=$ac_cv_c_compiler_gnu ! # Extract the first word of "ranlib", so it can be a program name with args. ! set dummy ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 --- 3041,3047 ---- ac_compiler_gnu=$ac_cv_c_compiler_gnu ! if test -n "$ac_tool_prefix"; then ! # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. ! set dummy ${ac_tool_prefix}ranlib; ac_word=$2 echo "$as_me:$LINENO: checking for $ac_word" >&5 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 *************** *** 2928,2932 **** for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_RANLIB="ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 --- 3059,3063 ---- for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ! ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 *************** *** 2935,2939 **** done - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB="true" fi fi --- 3066,3069 ---- *************** *** 2947,2950 **** --- 3077,3124 ---- fi + fi + if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. + set dummy ranlib; ac_word=$2 + echo "$as_me:$LINENO: checking for $ac_word" >&5 + echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 + if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 + else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. + else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR + for as_dir in $PATH + do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi + done + done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" + fi + fi + ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB + if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 + echo "${ECHO_T}$ac_ct_RANLIB" >&6 + else + echo "$as_me:$LINENO: result: no" >&5 + echo "${ECHO_T}no" >&6 + fi + + RANLIB=$ac_ct_RANLIB + else + RANLIB="$ac_cv_prog_RANLIB" + fi + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or *************** *** 3040,3050 **** # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 3214,3224 ---- # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 3076,3086 **** # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi --- 3250,3260 ---- # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi *************** *** 3096,3106 **** t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g --- 3270,3280 ---- t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g *************** *** 3124,3128 **** # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" --- 3298,3302 ---- # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" *************** *** 3168,3174 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 3342,3349 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 3189,3193 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 3364,3368 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 3368,3371 **** --- 3543,3547 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 3374,3381 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 3550,3557 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 3404,3408 **** This file was extended by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 3580,3584 ---- This file was extended by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 3448,3452 **** --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: --- 3624,3628 ---- --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: *************** *** 3459,3467 **** ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." --- 3635,3642 ---- ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." *************** *** 3659,3662 **** --- 3834,3838 ---- s,@CXXCPP@,$CXXCPP,;t t s,@RANLIB@,$RANLIB,;t t + s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@INSTALL@,$INSTALL,;t t s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t *************** *** 3693,3699 **** /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` --- 3869,3875 ---- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` *************** *** 3713,3721 **** case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac --- 3889,3897 ---- case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac *************** *** 3724,3731 **** ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 3900,3907 ---- ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 3743,3750 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 3919,3926 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 3784,3793 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` --- 3960,4002 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac *************** *** 3807,3811 **** fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the --- 4016,4020 ---- fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the *************** *** 3816,3837 **** -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo $f;; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } --- 4025,4046 ---- -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo "$f";; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo "$f" ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo "$srcdir/$f" ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } diff -C 2 -rP gperf-3.0.1/lib/configure.in gperf-3.0.2/lib/configure.in *** gperf-3.0.1/lib/configure.in Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/lib/configure.in Mon Aug 29 10:50:26 2005 *************** *** 1,5 **** dnl autoconf configuration for gperf/lib ! dnl Copyright (C) 1998, 2002 Free Software Foundation, Inc. dnl Written by Douglas C. Schmidt dnl and Bruno Haible . --- 1,5 ---- dnl autoconf configuration for gperf/lib ! dnl Copyright (C) 1998, 2002, 2005 Free Software Foundation, Inc. dnl Written by Douglas C. Schmidt dnl and Bruno Haible . *************** *** 20,24 **** dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ AC_INIT(hash.cc) --- 20,24 ---- dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ AC_INIT(hash.cc) *************** *** 35,39 **** AC_PROG_CXXCPP dnl sets variable CXXCPP ! CL_PROG_RANLIB dnl sets variable RANLIB CL_PROG_INSTALL --- 35,39 ---- AC_PROG_CXXCPP dnl sets variable CXXCPP ! AC_PROG_RANLIB dnl sets variable RANLIB CL_PROG_INSTALL diff -C 2 -rP gperf-3.0.1/lib/getline.cc gperf-3.0.2/lib/getline.cc *** gperf-3.0.1/lib/getline.cc Mon Jan 20 14:13:44 2003 --- gperf-3.0.2/lib/getline.cc Sat May 14 14:22:36 2005 *************** *** 15,19 **** 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. */ /* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */ --- 15,20 ---- 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, ! USA. */ /* Written by Jan Brittenson, bson@gnu.ai.mit.edu. */ diff -C 2 -rP gperf-3.0.1/lib/getline.h gperf-3.0.2/lib/getline.h *** gperf-3.0.1/lib/getline.h Mon Jan 20 14:13:44 2003 --- gperf-3.0.2/lib/getline.h Sat May 14 14:22:36 2005 *************** *** 13,17 **** 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. */ #ifndef GETLINE_H_ --- 13,18 ---- 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, ! USA. */ #ifndef GETLINE_H_ diff -C 2 -rP gperf-3.0.1/lib/getopt.c gperf-3.0.2/lib/getopt.c *** gperf-3.0.1/lib/getopt.c Wed Apr 15 22:09:41 1998 --- gperf-3.0.2/lib/getopt.c Sat May 14 14:22:36 2005 *************** *** 19,24 **** You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, ! write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . --- 19,24 ---- You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, ! write to the Free Software Foundation, Inc., 51 Franklin Street, ! Fifth Floor, Boston, MA 02110-1301, USA. */ /* This tells Alpha OSF/1 not to define a getopt prototype in . diff -C 2 -rP gperf-3.0.1/lib/getopt.h gperf-3.0.2/lib/getopt.h *** gperf-3.0.1/lib/getopt.h Tue Sep 26 13:37:47 2000 --- gperf-3.0.2/lib/getopt.h Sat May 14 14:22:36 2005 *************** *** 15,20 **** You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, ! write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. */ #ifndef _GETOPT_H --- 15,20 ---- You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, ! write to the Free Software Foundation, Inc., 51 Franklin Street, ! Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _GETOPT_H diff -C 2 -rP gperf-3.0.1/lib/getopt1.c gperf-3.0.2/lib/getopt1.c *** gperf-3.0.1/lib/getopt1.c Sun Mar 8 15:07:44 1998 --- gperf-3.0.2/lib/getopt1.c Sat May 14 14:22:36 2005 *************** *** 16,21 **** You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, ! write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. */ #ifdef HAVE_CONFIG_H --- 16,21 ---- You should have received a copy of the GNU Library General Public License along with the GNU C Library; see the file COPYING.LIB. If not, ! write to the Free Software Foundation, Inc., 51 Franklin Street, ! Fifth Floor, Boston, MA 02110-1301, USA. */ #ifdef HAVE_CONFIG_H diff -C 2 -rP gperf-3.0.1/src/Makefile.in gperf-3.0.2/src/Makefile.in *** gperf-3.0.1/src/Makefile.in Thu Apr 10 10:25:01 2003 --- gperf-3.0.2/src/Makefile.in Sun Jan 22 12:12:03 2006 *************** *** 1,5 **** # Makefile for gperf/src ! # Copyright (C) 1989, 1992, 1993, 1998, 2000, 2002 Free Software Foundation, Inc. # Written by Douglas C. Schmidt # and Bruno Haible . --- 1,5 ---- # Makefile for gperf/src ! # Copyright (C) 1989, 1992, 1993, 1998, 2000, 2002, 2006 Free Software Foundation, Inc. # Written by Douglas C. Schmidt # and Bruno Haible . *************** *** 20,24 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 20,24 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #### Start of system configuration section. #### *************** *** 44,47 **** --- 44,49 ---- # Both C and C++ compiler LDFLAGS = @LDFLAGS@ + OBJEXT = @OBJEXT@ + EXEEXT = @EXEEXT@ # Other MV = mv *************** *** 62,71 **** VPATH = $(srcdir) ! OBJECTS = version.o positions.o options.o keyword.o keyword-list.o \ ! input.o bool-array.o hash-table.o search.o output.o main.o LIBS = ../lib/libgp.a @GPERF_LIBM@ CPPFLAGS = -I. -I$(srcdir)/../lib ! TARGETPROG = gperf all : $(TARGETPROG) --- 64,73 ---- VPATH = $(srcdir) ! OBJECTS = version.$(OBJEXT) positions.$(OBJEXT) options.$(OBJEXT) keyword.$(OBJEXT) keyword-list.$(OBJEXT) \ ! input.$(OBJEXT) bool-array.$(OBJEXT) hash-table.$(OBJEXT) search.$(OBJEXT) output.$(OBJEXT) main.$(OBJEXT) LIBS = ../lib/libgp.a @GPERF_LIBM@ CPPFLAGS = -I. -I$(srcdir)/../lib ! TARGETPROG = gperf$(EXEEXT) all : $(TARGETPROG) *************** *** 96,120 **** OUTPUT_H = output.h $(KEYWORD_LIST_H) $(POSITIONS_H) ! version.o : version.cc $(VERSION_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/version.cc ! positions.o : positions.cc $(POSITIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/positions.cc ! options.o : options.cc $(OPTIONS_H) $(VERSION_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/options.cc ! keyword.o : keyword.cc $(KEYWORD_H) $(POSITIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/keyword.cc ! keyword-list.o : keyword-list.cc $(KEYWORD_LIST_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/keyword-list.cc ! input.o : input.cc $(INPUT_H) $(OPTIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/input.cc ! bool-array.o : bool-array.cc $(BOOL_ARRAY_H) $(OPTIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/bool-array.cc ! hash-table.o : hash-table.cc $(HASH_TABLE_H) $(OPTIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/hash-table.cc ! search.o : search.cc $(SEARCH_H) $(OPTIONS_H) $(HASH_TABLE_H) $(CONFIG_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/search.cc ! output.o : output.cc $(OUTPUT_H) $(OPTIONS_H) $(VERSION_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/output.cc ! main.o : main.cc $(OPTIONS_H) $(INPUT_H) $(SEARCH_H) $(OUTPUT_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/main.cc --- 98,122 ---- OUTPUT_H = output.h $(KEYWORD_LIST_H) $(POSITIONS_H) ! version.$(OBJEXT): version.cc $(VERSION_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/version.cc ! positions.$(OBJEXT): positions.cc $(POSITIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/positions.cc ! options.$(OBJEXT): options.cc $(OPTIONS_H) $(VERSION_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/options.cc ! keyword.$(OBJEXT): keyword.cc $(KEYWORD_H) $(POSITIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/keyword.cc ! keyword-list.$(OBJEXT): keyword-list.cc $(KEYWORD_LIST_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/keyword-list.cc ! input.$(OBJEXT): input.cc $(INPUT_H) $(OPTIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/input.cc ! bool-array.$(OBJEXT): bool-array.cc $(BOOL_ARRAY_H) $(OPTIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/bool-array.cc ! hash-table.$(OBJEXT): hash-table.cc $(HASH_TABLE_H) $(OPTIONS_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/hash-table.cc ! search.$(OBJEXT): search.cc $(SEARCH_H) $(OPTIONS_H) $(HASH_TABLE_H) $(CONFIG_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/search.cc ! output.$(OBJEXT): output.cc $(OUTPUT_H) $(OPTIONS_H) $(VERSION_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/output.cc ! main.$(OBJEXT): main.cc $(OPTIONS_H) $(INPUT_H) $(SEARCH_H) $(OUTPUT_H) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(srcdir)/main.cc *************** *** 134,138 **** clean : force ! $(RM) *~ *.s *.o *.a $(TARGETPROG) core distclean : clean --- 136,140 ---- clean : force ! $(RM) *~ *.s *.$(OBJEXT) *.a $(TARGETPROG) core distclean : clean diff -C 2 -rP gperf-3.0.1/src/bool-array.cc gperf-3.0.2/src/bool-array.cc *** gperf-3.0.1/src/bool-array.cc Mon Mar 3 14:27:48 2003 --- gperf-3.0.2/src/bool-array.cc Sat May 14 14:22:36 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ diff -C 2 -rP gperf-3.0.1/src/bool-array.h gperf-3.0.2/src/bool-array.h *** gperf-3.0.1/src/bool-array.h Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/src/bool-array.h Sat May 14 14:22:36 2005 *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef bool_array_h --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef bool_array_h *************** *** 63,67 **** /* For each index, we store in storage_array[index] the iteration_number at the time set_bit(index) was last called. */ ! unsigned int * const _storage_array; }; --- 63,67 ---- /* For each index, we store in storage_array[index] the iteration_number at the time set_bit(index) was last called. */ ! unsigned int * const _storage_array; }; diff -C 2 -rP gperf-3.0.1/src/bool-array.icc gperf-3.0.2/src/bool-array.icc *** gperf-3.0.1/src/bool-array.icc Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/src/bool-array.icc Sat May 14 14:22:36 2005 *************** *** 20,24 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // This needs: --- 20,24 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ // This needs: diff -C 2 -rP gperf-3.0.1/src/configure gperf-3.0.2/src/configure *** gperf-3.0.1/src/configure Wed May 7 13:27:46 2003 --- gperf-3.0.2/src/configure Sun Jan 22 12:31:59 2006 *************** *** 1,8 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.57. # ! # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. --- 1,7 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.59. # ! # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. *************** *** 21,27 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 20,27 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 42,46 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 42,46 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 219,222 **** --- 219,223 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 225,232 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 226,233 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 631,635 **** # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` --- 632,636 ---- # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` *************** *** 671,678 **** ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 672,679 ---- ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 778,784 **** Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in --- 779,785 ---- Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in *************** *** 860,869 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir --- 861,903 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac cd $ac_dir *************** *** 876,880 **** $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help --- 910,914 ---- $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help *************** *** 890,895 **** cat <<\_ACEOF ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. --- 924,928 ---- cat <<\_ACEOF ! Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. *************** *** 903,907 **** It was created by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ --- 936,940 ---- It was created by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ *************** *** 980,996 **** ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" --- 1013,1029 ---- ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" *************** *** 1026,1035 **** *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1059,1068 ---- *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1060,1064 **** do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo --- 1093,1097 ---- do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo *************** *** 1079,1083 **** echo "$as_me: exit $exit_status" } >&5 ! rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status --- 1112,1116 ---- echo "$as_me: exit $exit_status" } >&5 ! rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status *************** *** 1159,1163 **** ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set --- 1192,1196 ---- ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set *************** *** 1176,1186 **** *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac --- 1209,1219 ---- *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac *************** *** 1234,1238 **** echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 --- 1267,1271 ---- echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 *************** *** 1597,1601 **** cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1630,1633 ---- *************** *** 1617,1622 **** # It will help us diagnose broken compilers, and finding out an intuition # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output" >&5 ! echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 --- 1649,1654 ---- # It will help us diagnose broken compilers, and finding out an intuition # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ! echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 *************** *** 1638,1658 **** case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; conftest.$ac_ext ) ! # This is the source file. ! ;; [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; * ) ! break;; esac done --- 1670,1690 ---- case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; conftest.$ac_ext ) ! # This is the source file. ! ;; [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; * ) ! break;; esac done *************** *** 1728,1733 **** *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; * ) break;; esac --- 1760,1765 ---- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; * ) break;; esac *************** *** 1754,1758 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1786,1789 ---- *************** *** 1805,1809 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1836,1839 ---- *************** *** 1825,1833 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 1855,1873 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1842,1846 **** ac_compiler_gnu=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu --- 1882,1886 ---- ac_compiler_gnu=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu *************** *** 1858,1862 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1898,1901 ---- *************** *** 1875,1883 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 1914,1932 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1892,1896 **** ac_cv_prog_cc_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 --- 1941,1945 ---- ac_cv_prog_cc_g=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 *************** *** 1919,1923 **** ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1968,1971 ---- *************** *** 1947,1950 **** --- 1995,2008 ---- return s; } + + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; *************** *** 1973,1981 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2031,2049 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1990,1994 **** fi ! rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext --- 2058,2062 ---- fi ! rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext *************** *** 2018,2026 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2086,2104 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2029,2034 **** (exit $ac_status); }; }; then for ac_declaration in \ ! ''\ ! '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ --- 2107,2111 ---- (exit $ac_status); }; }; then for ac_declaration in \ ! '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ *************** *** 2038,2042 **** do cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2115,2118 ---- *************** *** 2044,2049 **** cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include $ac_declaration int main () --- 2120,2125 ---- cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration + #include int main () *************** *** 2056,2064 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2132,2150 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2073,2079 **** continue fi ! rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2159,2164 ---- continue fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF *************** *** 2092,2100 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2177,2195 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2108,2112 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* --- 2203,2207 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* *************** *** 2122,2126 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' --- 2217,2221 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' *************** *** 2157,2161 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2252,2255 ---- *************** *** 2168,2172 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2262,2266 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2180,2183 **** --- 2274,2278 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2200,2204 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2295,2298 ---- *************** *** 2218,2221 **** --- 2312,2316 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2264,2268 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2359,2362 ---- *************** *** 2275,2279 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2369,2373 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2287,2290 **** --- 2381,2385 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2307,2311 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2402,2405 ---- *************** *** 2325,2328 **** --- 2419,2423 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2482,2486 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2577,2580 ---- *************** *** 2502,2510 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2596,2614 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2519,2523 **** ac_compiler_gnu=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu --- 2623,2627 ---- ac_compiler_gnu=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu *************** *** 2535,2539 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2639,2642 ---- *************** *** 2552,2560 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2655,2673 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2569,2573 **** ac_cv_prog_cxx_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 --- 2682,2686 ---- ac_cv_prog_cxx_g=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 *************** *** 2589,2594 **** fi for ac_declaration in \ ! ''\ ! '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ --- 2702,2706 ---- fi for ac_declaration in \ ! '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ *************** *** 2598,2602 **** do cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2710,2713 ---- *************** *** 2604,2609 **** cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include $ac_declaration int main () --- 2715,2720 ---- cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration + #include int main () *************** *** 2616,2624 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2727,2745 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2633,2639 **** continue fi ! rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2754,2759 ---- continue fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF *************** *** 2652,2660 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2772,2790 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2668,2672 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* --- 2798,2802 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* *************** *** 2707,2711 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2837,2840 ---- *************** *** 2718,2722 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2847,2851 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2730,2733 **** --- 2859,2863 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2750,2754 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2880,2883 ---- *************** *** 2768,2771 **** --- 2897,2901 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2814,2818 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2944,2947 ---- *************** *** 2825,2829 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2954,2958 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2837,2840 **** --- 2966,2970 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2857,2861 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2987,2990 ---- *************** *** 2875,2878 **** --- 3004,3008 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2993,2997 **** cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 3123,3126 ---- *************** *** 3010,3018 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 3139,3157 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 3027,3031 **** gp_cv_cxx_dynamic_array=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' --- 3166,3170 ---- gp_cv_cxx_dynamic_array=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' *************** *** 3055,3059 **** LIBS="-lm $LIBS" cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 3194,3197 ---- *************** *** 3079,3087 **** rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 3217,3235 ---- rm -f conftest.$ac_objext conftest$ac_exeext if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ! (eval $ac_link) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest$ac_exeext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 3096,3100 **** ac_cv_lib_m_rand=no fi ! rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi --- 3244,3249 ---- ac_cv_lib_m_rand=no fi ! rm -f conftest.err conftest.$ac_objext \ ! conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi *************** *** 3137,3147 **** # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 3286,3296 ---- # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 3173,3183 **** # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi --- 3322,3332 ---- # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi *************** *** 3190,3194 **** # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" --- 3339,3343 ---- # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" *************** *** 3234,3240 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 3383,3390 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 3255,3259 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 3405,3409 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 3434,3437 **** --- 3584,3588 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 3440,3447 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 3591,3598 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 3470,3474 **** This file was extended by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 3621,3625 ---- This file was extended by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 3514,3520 **** --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE --header=FILE[:TEMPLATE] ! instantiate the configuration header FILE Configuration files: --- 3665,3671 ---- --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE --header=FILE[:TEMPLATE] ! instantiate the configuration header FILE Configuration files: *************** *** 3530,3538 **** ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." --- 3681,3688 ---- ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." *************** *** 3766,3772 **** /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` --- 3916,3922 ---- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` *************** *** 3786,3794 **** case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac --- 3936,3944 ---- case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac *************** *** 3797,3804 **** ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 3947,3954 ---- ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 3816,3823 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 3966,3973 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 3857,3866 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` --- 4007,4049 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac *************** *** 3880,3884 **** fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the --- 4063,4067 ---- fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the *************** *** 3889,3910 **** -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo $f;; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } --- 4072,4093 ---- -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo "$f";; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo "$f" ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo "$srcdir/$f" ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } *************** *** 3947,3956 **** # # ac_d sets the value in "#define NAME VALUE" lines. ! ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ! ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ! ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' --- 4130,4139 ---- # # ac_d sets the value in "#define NAME VALUE" lines. ! ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' ! ac_dB='[ ].*$,\1#\2' ac_dC=' ' ac_dD=',;t' # ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". ! ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' ac_uB='$,\1#\2define\3' ac_uC=' ' *************** *** 3961,3969 **** case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac --- 4144,4152 ---- case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac *************** *** 3979,4004 **** -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo $f;; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. ! sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF --- 4162,4188 ---- -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! # Do quote $f, to prevent DOS paths from being IFS'd. ! echo "$f";; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo "$f" ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo "$srcdir/$f" ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } # Remove the trailing spaces. ! sed 's/[ ]*$//' $ac_file_inputs >$tmp/in _ACEOF *************** *** 4023,4029 **** t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF --- 4207,4213 ---- t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp t end ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp : end _ACEOF *************** *** 4039,4043 **** # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF ! s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF --- 4223,4227 ---- # on some systems where configure will not decide to define it. cat >>conftest.undefs <<\_ACEOF ! s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, _ACEOF *************** *** 4045,4049 **** # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS ! echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS --- 4229,4233 ---- # of here documents, and old seds have small limits too (100 cmds). echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS ! echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS echo ' :' >>$CONFIG_STATUS *************** *** 4054,4058 **** echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. ! echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS --- 4238,4242 ---- echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#define' lines. ! echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS *************** *** 4081,4085 **** echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' ! echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS --- 4265,4269 ---- echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS # Speed up: don't consider the non `#undef' ! echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS # Work around the forget-to-reset-the-flag bug. echo 't clr' >>$CONFIG_STATUS *************** *** 4115,4122 **** ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 4299,4306 ---- ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 4134,4141 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 4318,4325 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } diff -C 2 -rP gperf-3.0.1/src/configure.in gperf-3.0.2/src/configure.in *** gperf-3.0.1/src/configure.in Wed May 7 11:52:14 2003 --- gperf-3.0.2/src/configure.in Sat May 14 14:22:36 2005 *************** *** 20,24 **** dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ AC_INIT(main.cc) --- 20,24 ---- dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. AC_INIT(main.cc) diff -C 2 -rP gperf-3.0.1/src/hash-table.cc gperf-3.0.2/src/hash-table.cc *** gperf-3.0.1/src/hash-table.cc Mon Mar 3 20:04:16 2003 --- gperf-3.0.2/src/hash-table.cc Tue Dec 27 23:46:30 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ diff -C 2 -rP gperf-3.0.1/src/hash-table.h gperf-3.0.2/src/hash-table.h *** gperf-3.0.1/src/hash-table.h Mon Mar 3 20:04:16 2003 --- gperf-3.0.2/src/hash-table.h Sat May 14 14:22:36 2005 *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef hash_table_h --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef hash_table_h diff -C 2 -rP gperf-3.0.1/src/input.cc gperf-3.0.2/src/input.cc *** gperf-3.0.1/src/input.cc Mon Jun 2 11:42:40 2003 --- gperf-3.0.2/src/input.cc Sat May 14 14:22:36 2005 *************** *** 1,4 **** /* Input routines. ! Copyright (C) 1989-1998, 2002-2003 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 1,4 ---- /* Input routines. ! Copyright (C) 1989-1998, 2002-2004 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ *************** *** 553,556 **** --- 553,561 ---- else + if (is_define_declaration (line, line_end, lineno, + "length-table-name", &arg)) + option.set_lengthtable_name (arg); + else + if (is_declaration_with_arg (line, line_end, lineno, "switch", &arg)) diff -C 2 -rP gperf-3.0.1/src/input.h gperf-3.0.2/src/input.h *** gperf-3.0.1/src/input.h Mon Apr 28 10:05:15 2003 --- gperf-3.0.2/src/input.h Sat May 14 14:22:36 2005 *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef input_h --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef input_h diff -C 2 -rP gperf-3.0.1/src/keyword-list.cc gperf-3.0.2/src/keyword-list.cc *** gperf-3.0.1/src/keyword-list.cc Tue Mar 18 10:10:14 2003 --- gperf-3.0.2/src/keyword-list.cc Sat May 14 14:22:36 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ diff -C 2 -rP gperf-3.0.1/src/keyword-list.h gperf-3.0.2/src/keyword-list.h *** gperf-3.0.1/src/keyword-list.h Tue Mar 18 10:10:14 2003 --- gperf-3.0.2/src/keyword-list.h Sat May 14 14:22:36 2005 *************** *** 21,25 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef keyword_list_h --- 21,25 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef keyword_list_h diff -C 2 -rP gperf-3.0.1/src/keyword-list.icc gperf-3.0.2/src/keyword-list.icc *** gperf-3.0.1/src/keyword-list.icc Wed Apr 23 11:12:20 2003 --- gperf-3.0.2/src/keyword-list.icc Sat May 14 14:22:36 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* -------------------------- Keyword_List class --------------------------- */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* -------------------------- Keyword_List class --------------------------- */ diff -C 2 -rP gperf-3.0.1/src/keyword.cc gperf-3.0.2/src/keyword.cc *** gperf-3.0.1/src/keyword.cc Mon Apr 7 09:48:19 2003 --- gperf-3.0.2/src/keyword.cc Mon Aug 29 11:40:29 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ diff -C 2 -rP gperf-3.0.1/src/keyword.h gperf-3.0.2/src/keyword.h *** gperf-3.0.1/src/keyword.h Mon Apr 7 09:47:28 2003 --- gperf-3.0.2/src/keyword.h Sat May 14 14:22:36 2005 *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef keyword_h --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef keyword_h diff -C 2 -rP gperf-3.0.1/src/keyword.icc gperf-3.0.2/src/keyword.icc *** gperf-3.0.1/src/keyword.icc Mon Dec 16 14:37:41 2002 --- gperf-3.0.2/src/keyword.icc Sat May 14 14:22:36 2005 *************** *** 20,24 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* ----------------------------- Keyword class ----------------------------- */ --- 20,24 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* ----------------------------- Keyword class ----------------------------- */ diff -C 2 -rP gperf-3.0.1/src/main.cc gperf-3.0.2/src/main.cc *** gperf-3.0.1/src/main.cc Mon Apr 28 10:05:15 2003 --- gperf-3.0.2/src/main.cc Sat Jul 30 16:36:30 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include diff -C 2 -rP gperf-3.0.1/src/options.cc gperf-3.0.2/src/options.cc *** gperf-3.0.1/src/options.cc Wed Apr 30 10:34:02 2003 --- gperf-3.0.2/src/options.cc Fri Jan 13 13:11:29 2006 *************** *** 1,4 **** /* Handles parsing the Options provided to the user. ! Copyright (C) 1989-1998, 2000, 2002-2003 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 1,4 ---- /* Handles parsing the Options provided to the user. ! Copyright (C) 1989-1998, 2000, 2002-2004, 2006 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ *************** *** 59,62 **** --- 59,65 ---- static const char *const DEFAULT_WORDLIST_NAME = "wordlist"; + /* Default name for generated length table array. */ + static const char *const DEFAULT_LENGTHTABLE_NAME = "lengthtable"; + /* Default name for string pool. */ static const char *const DEFAULT_STRINGPOOL_NAME = "stringpool"; *************** *** 181,184 **** --- 184,191 ---- " 'wordlist'.\n"); fprintf (stream, + " --length-table-name=NAME\n" + " Specify name of length table array. Default name is\n" + " 'lengthtable'.\n"); + fprintf (stream, " -S, --switch=COUNT Causes the generated C code to use a switch\n" " statement scheme, rather than an array lookup table.\n" *************** *** 459,462 **** --- 466,470 ---- _hash_name (DEFAULT_HASH_NAME), _wordlist_name (DEFAULT_WORDLIST_NAME), + _lengthtable_name (DEFAULT_LENGTHTABLE_NAME), _stringpool_name (DEFAULT_STRINGPOOL_NAME), _delimiters (DEFAULT_DELIMITERS), *************** *** 496,499 **** --- 504,508 ---- "\nhash function name = %s" "\nword list name = %s" + "\nlength table name = %s" "\nstring pool name = %s" "\nslot name = %s" *************** *** 526,533 **** _option_word & RANDOM ? "enabled" : "disabled", _option_word & DEBUG ? "enabled" : "disabled", ! _function_name, _hash_name, _wordlist_name, _stringpool_name, ! _slot_name, _initializer_suffix, _asso_iterations, _jump, ! _size_multiple, _initial_asso_value, _delimiters, ! _total_switches); if (_key_positions.is_useall()) fprintf (stderr, "all characters are used in the hash function\n"); --- 535,542 ---- _option_word & RANDOM ? "enabled" : "disabled", _option_word & DEBUG ? "enabled" : "disabled", ! _function_name, _hash_name, _wordlist_name, _lengthtable_name, ! _stringpool_name, _slot_name, _initializer_suffix, ! _asso_iterations, _jump, _size_multiple, _initial_asso_value, ! _delimiters, _total_switches); if (_key_positions.is_useall()) fprintf (stderr, "all characters are used in the hash function\n"); *************** *** 634,637 **** --- 643,654 ---- } + /* Sets the length table array name, if not already set. */ + void + Options::set_lengthtable_name (const char *name) + { + if (_lengthtable_name == DEFAULT_LENGTHTABLE_NAME) + _lengthtable_name = name; + } + /* Sets the string pool name, if not already set. */ void *************** *** 674,677 **** --- 691,695 ---- { "global-table", no_argument, NULL, 'G' }, { "word-array-name", required_argument, NULL, 'W' }, + { "length-table-name", required_argument, NULL, CHAR_MAX + 4 }, { "switch", required_argument, NULL, 'S' }, { "omit-struct-type", no_argument, NULL, 'T' }, *************** *** 988,992 **** warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ ", ! "1989-1998, 2000-2003"); fprintf (stdout, "Written by %s and %s.\n", "Douglas C. Schmidt", "Bruno Haible"); --- 1006,1010 ---- warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ ", ! "1989-1998, 2000-2004, 2006"); fprintf (stdout, "Written by %s and %s.\n", "Douglas C. Schmidt", "Bruno Haible"); *************** *** 1022,1025 **** --- 1040,1048 ---- break; } + case CHAR_MAX + 4: /* Sets the name for the length table array. */ + { + _lengthtable_name = /*getopt*/optarg; + break; + } default: short_usage (stderr); diff -C 2 -rP gperf-3.0.1/src/options.h gperf-3.0.2/src/options.h *** gperf-3.0.1/src/options.h Wed Apr 30 10:34:02 2003 --- gperf-3.0.2/src/options.h Sat May 14 14:22:36 2005 *************** *** 3,7 **** /* Handles parsing the Options provided to the user. ! Copyright (C) 1989-1998, 2000, 2002-2003 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 3,7 ---- /* Handles parsing the Options provided to the user. ! Copyright (C) 1989-1998, 2000, 2002-2004 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* This module provides a uniform interface to the various options available --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* This module provides a uniform interface to the various options available *************** *** 195,198 **** --- 195,203 ---- void set_wordlist_name (const char *name); + /* Returns the length table array name. */ + const char * get_lengthtable_name () const; + /* Sets the length table array name, if not already set. */ + void set_lengthtable_name (const char *name); + /* Returns the string pool name. */ const char * get_stringpool_name () const; *************** *** 266,269 **** --- 271,277 ---- const char * _wordlist_name; + /* Name used for length table array. */ + const char * _lengthtable_name; + /* Name used for the string pool. */ const char * _stringpool_name; diff -C 2 -rP gperf-3.0.1/src/options.icc gperf-3.0.2/src/options.icc *** gperf-3.0.1/src/options.icc Wed Apr 16 10:04:20 2003 --- gperf-3.0.2/src/options.icc Sat May 14 14:22:36 2005 *************** *** 1,5 **** /* Inline Functions for options.{h,cc}. ! Copyright (C) 1989-1998, 2000, 2002-2003 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 1,5 ---- /* Inline Functions for options.{h,cc}. ! Copyright (C) 1989-1998, 2000, 2002-2004 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 20,24 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* ----------------------------- Class Options ----------------------------- */ --- 20,24 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* ----------------------------- Class Options ----------------------------- */ *************** *** 129,132 **** --- 129,139 ---- } + /* Returns the length table array name. */ + INLINE const char * + Options::get_lengthtable_name () const + { + return _lengthtable_name; + } + /* Returns the string pool name. */ INLINE const char * diff -C 2 -rP gperf-3.0.1/src/output.cc gperf-3.0.2/src/output.cc *** gperf-3.0.1/src/output.cc Thu May 1 10:07:55 2003 --- gperf-3.0.2/src/output.cc Fri Jan 13 13:11:19 2006 *************** *** 1,4 **** /* Output routines. ! Copyright (C) 1989-1998, 2000, 2002-2003 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 1,4 ---- /* Output routines. ! Copyright (C) 1989-1998, 2000, 2002-2004, 2006 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ *************** *** 473,476 **** --- 473,492 ---- /* ------------------------------------------------------------------------- */ + /* Outputs a #line directive, referring to the given line number. */ + + static void + output_line_directive (unsigned int lineno) + { + const char *file_name = option.get_input_file_name (); + if (file_name != NULL) + { + printf ("#line %u ", lineno); + output_string (file_name, strlen (file_name)); + printf ("\n"); + } + } + + /* ------------------------------------------------------------------------- */ + /* Outputs a type and a const specifier (i.e. "const " or ""). The output is terminated with a space. */ *************** *** 917,923 **** const char * const indent = option[GLOBAL] ? "" : " "; ! printf ("%sstatic %s%s lengthtable[] =\n%s {", indent, const_readonly_array, smallest_integral_type (_max_key_len), indent); --- 933,941 ---- const char * const indent = option[GLOBAL] ? "" : " "; ! printf ("%sstatic %s%s %s[] =\n" ! "%s {", indent, const_readonly_array, smallest_integral_type (_max_key_len), + option.get_lengthtable_name (), indent); *************** *** 1083,1089 **** output_keyword_entry (KeywordExt *temp, int stringpool_index, const char *indent) { ! if (option[TYPE] && option.get_input_file_name ()) ! printf ("#line %u \"%s\"\n", ! temp->_lineno, option.get_input_file_name ()); printf ("%s ", indent); if (option[TYPE]) --- 1101,1106 ---- output_keyword_entry (KeywordExt *temp, int stringpool_index, const char *indent) { ! if (option[TYPE]) ! output_line_directive (temp->_lineno); printf ("%s ", indent); if (option[TYPE]) *************** *** 1424,1429 **** { if (option[LENTABLE]) ! printf ("%*slengthptr = &lengthtable[%d];\n", ! indent, "", list->first()->_final_index); printf ("%*swordptr = &%s[%d];\n", indent, "", option.get_wordlist_name (), list->first()->_final_index); --- 1441,1446 ---- { if (option[LENTABLE]) ! printf ("%*slengthptr = &%s[%d];\n", ! indent, "", option.get_lengthtable_name (), list->first()->_final_index); printf ("%*swordptr = &%s[%d];\n", indent, "", option.get_wordlist_name (), list->first()->_final_index); *************** *** 1683,1688 **** { printf ("%*s {\n" ! "%*s if (len == lengthtable[index])\n", ! indent, "", indent, ""); indent += 4; } --- 1700,1705 ---- { printf ("%*s {\n" ! "%*s if (len == %s[index])\n", ! indent, "", indent, "", option.get_lengthtable_name ()); indent += 4; } *************** *** 1722,1727 **** indent, "", indent, "", indent, ""); if (option[LENTABLE]) ! printf ("%*s register %s%s *lengthptr = &lengthtable[TOTAL_KEYWORDS + lookup[offset]];\n", ! indent, "", const_always, smallest_integral_type (_max_key_len)); printf ("%*s register ", indent, ""); --- 1739,1745 ---- indent, "", indent, "", indent, ""); if (option[LENTABLE]) ! printf ("%*s register %s%s *lengthptr = &%s[TOTAL_KEYWORDS + lookup[offset]];\n", ! indent, "", const_always, smallest_integral_type (_max_key_len), ! option.get_lengthtable_name ()); printf ("%*s register ", indent, ""); *************** *** 1782,1787 **** if (option[LENTABLE]) { ! printf ("%*sif (len == lengthtable[key])\n", ! indent, ""); indent += 2; } --- 1800,1805 ---- if (option[LENTABLE]) { ! printf ("%*sif (len == %s[key])\n", ! indent, "", option.get_lengthtable_name ()); indent += 2; } *************** *** 2001,2007 **** if (_verbatim_declarations < _verbatim_declarations_end) { ! if (option.get_input_file_name ()) ! printf ("#line %u \"%s\"\n", ! _verbatim_declarations_lineno, option.get_input_file_name ()); fwrite (_verbatim_declarations, 1, _verbatim_declarations_end - _verbatim_declarations, stdout); --- 2019,2023 ---- if (_verbatim_declarations < _verbatim_declarations_end) { ! output_line_directive (_verbatim_declarations_lineno); fwrite (_verbatim_declarations, 1, _verbatim_declarations_end - _verbatim_declarations, stdout); *************** *** 2010,2016 **** if (option[TYPE] && !option[NOTYPE]) /* Output type declaration now, reference it later on.... */ { ! if (option.get_input_file_name ()) ! printf ("#line %u \"%s\"\n", ! _struct_decl_lineno, option.get_input_file_name ()); printf ("%s\n", _struct_decl); } --- 2026,2030 ---- if (option[TYPE] && !option[NOTYPE]) /* Output type declaration now, reference it later on.... */ { ! output_line_directive (_struct_decl_lineno); printf ("%s\n", _struct_decl); } *************** *** 2073,2079 **** if (_verbatim_code < _verbatim_code_end) { ! if (option.get_input_file_name ()) ! printf ("#line %u \"%s\"\n", ! _verbatim_code_lineno, option.get_input_file_name ()); fwrite (_verbatim_code, 1, _verbatim_code_end - _verbatim_code, stdout); } --- 2087,2091 ---- if (_verbatim_code < _verbatim_code_end) { ! output_line_directive (_verbatim_code_lineno); fwrite (_verbatim_code, 1, _verbatim_code_end - _verbatim_code, stdout); } diff -C 2 -rP gperf-3.0.1/src/output.h gperf-3.0.2/src/output.h *** gperf-3.0.1/src/output.h Mon Apr 28 10:05:15 2003 --- gperf-3.0.2/src/output.h Sat May 14 14:22:36 2005 *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef output_h --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef output_h diff -C 2 -rP gperf-3.0.1/src/positions.cc gperf-3.0.2/src/positions.cc *** gperf-3.0.1/src/positions.cc Mon Apr 7 09:47:29 2003 --- gperf-3.0.2/src/positions.cc Sat May 14 14:22:36 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ diff -C 2 -rP gperf-3.0.1/src/positions.h gperf-3.0.2/src/positions.h *** gperf-3.0.1/src/positions.h Mon Apr 7 09:48:19 2003 --- gperf-3.0.2/src/positions.h Sat Jul 30 16:39:08 2005 *************** *** 3,7 **** /* A set of byte positions. ! Copyright (C) 1989-1998, 2000, 2002 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 3,7 ---- /* A set of byte positions. ! Copyright (C) 1989-1998, 2000, 2002, 2005 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 22,30 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef positions_h #define positions_h 1 /* This class denotes a set of byte positions, used to access a keyword. */ --- 22,34 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef positions_h #define positions_h 1 + /* Classes defined below. */ + class PositionIterator; + class PositionReverseIterator; + /* This class denotes a set of byte positions, used to access a keyword. */ diff -C 2 -rP gperf-3.0.1/src/positions.icc gperf-3.0.2/src/positions.icc *** gperf-3.0.1/src/positions.icc Mon Apr 7 09:48:19 2003 --- gperf-3.0.2/src/positions.icc Sat May 14 14:22:36 2005 *************** *** 20,24 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ // This needs: --- 20,24 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ // This needs: diff -C 2 -rP gperf-3.0.1/src/search.cc gperf-3.0.2/src/search.cc *** gperf-3.0.1/src/search.cc Fri Apr 11 09:09:11 2003 --- gperf-3.0.2/src/search.cc Sat May 14 14:22:36 2005 *************** *** 19,23 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 19,23 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ diff -C 2 -rP gperf-3.0.1/src/search.h gperf-3.0.2/src/search.h *** gperf-3.0.1/src/search.h Fri Apr 11 09:09:11 2003 --- gperf-3.0.2/src/search.h Sat May 14 14:22:36 2005 *************** *** 22,26 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef search_h --- 22,26 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef search_h diff -C 2 -rP gperf-3.0.1/src/version.cc gperf-3.0.2/src/version.cc *** gperf-3.0.1/src/version.cc Thu Jun 12 16:30:52 2003 --- gperf-3.0.2/src/version.cc Sat Jul 30 16:42:13 2005 *************** *** 1,5 **** /* Current program version number. ! Copyright (C) 1989-1998, 2000, 2002-2003 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . --- 1,5 ---- /* Current program version number. ! Copyright (C) 1989-1998, 2000, 2002-2003, 2005 Free Software Foundation, Inc. Written by Douglas C. Schmidt and Bruno Haible . *************** *** 20,24 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Specification. */ --- 20,24 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Specification. */ *************** *** 26,28 **** /* Current release version. */ ! const char *version_string = "3.0.1"; --- 26,28 ---- /* Current release version. */ ! const char *version_string = "3.0.2"; diff -C 2 -rP gperf-3.0.1/src/version.h gperf-3.0.2/src/version.h *** gperf-3.0.1/src/version.h Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/src/version.h Sat May 14 14:22:36 2005 *************** *** 20,24 **** along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Current release version. */ --- 20,24 ---- along with this program; see the file COPYING. If not, write to the Free Software Foundation, Inc., ! 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Current release version. */ diff -C 2 -rP gperf-3.0.1/tests/Makefile.in gperf-3.0.2/tests/Makefile.in *** gperf-3.0.1/tests/Makefile.in Mon Jun 2 11:42:40 2003 --- gperf-3.0.2/tests/Makefile.in Sat May 14 14:22:36 2005 *************** *** 1,5 **** # Makefile for gperf/tests ! # Copyright (C) 1989, 1992, 1993, 1995, 1998, 2000, 2002, 2003 Free Software Foundation, Inc. # Written by Douglas C. Schmidt # and Bruno Haible . --- 1,5 ---- # Makefile for gperf/tests ! # Copyright (C) 1989, 1992-1993, 1995, 1998, 2000, 2002-2004 Free Software Foundation, Inc. # Written by Douglas C. Schmidt # and Bruno Haible . *************** *** 20,24 **** # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #### Start of system configuration section. #### --- 20,24 ---- # along with this program; see the file COPYING. # If not, write to the Free Software Foundation, Inc., ! # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. #### Start of system configuration section. #### *************** *** 231,234 **** --- 231,235 ---- $(VALIDATE) KR-C,C,ANSI-C,C++ -k1,2 $(srcdir)/jstest1.gperf -H hash_function_name $(VALIDATE) KR-C,C,ANSI-C,C++ -k1,2 $(srcdir)/jstest1.gperf -W word_list_name + $(VALIDATE) KR-C,C,ANSI-C,C++ -k1,2 $(srcdir)/jstest1.gperf -l --length-table-name=length_table_name sed -e 's,in_word_set,lookup_function_name,g' < $(srcdir)/jstest1.gperf > tmp-jstest1.gperf && \ $(VALIDATE) KR-C,C,ANSI-C,C++ -k1,2 tmp-jstest1.gperf -N lookup_function_name diff -C 2 -rP gperf-3.0.1/tests/c-parse.exp gperf-3.0.2/tests/c-parse.exp *** gperf-3.0.1/tests/c-parse.exp Thu Jun 12 16:31:17 2003 --- gperf-3.0.2/tests/c-parse.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k'1,3,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -i 1 -g -o -t -G -N is_reserved_word -k'1,3,$' */ diff -C 2 -rP gperf-3.0.1/tests/charsets.exp gperf-3.0.2/tests/charsets.exp *** gperf-3.0.1/tests/charsets.exp Thu Jun 12 16:31:22 2003 --- gperf-3.0.2/tests/charsets.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -C -E -G -I -t */ /* Computed positions: -k'1-11,22,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -C -E -G -I -t */ /* Computed positions: -k'1-11,22,$' */ diff -C 2 -rP gperf-3.0.1/tests/chill.exp gperf-3.0.2/tests/chill.exp *** gperf-3.0.1/tests/chill.exp Thu Jun 12 16:31:25 2003 --- gperf-3.0.2/tests/chill.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -L C -F ', 0, 0, 0' -D -E -S1 -j1 -i 1 -g -o -t -k'*' */ diff -C 2 -rP gperf-3.0.1/tests/configure gperf-3.0.2/tests/configure *** gperf-3.0.1/tests/configure Wed May 7 11:19:28 2003 --- gperf-3.0.2/tests/configure Sun Jan 22 12:22:30 2006 *************** *** 1,8 **** #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.57. # ! # Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! # Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. --- 1,7 ---- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. ! # Generated by GNU Autoconf 2.59. # ! # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. *************** *** 21,27 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 20,27 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 42,46 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 42,46 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 219,222 **** --- 219,223 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 225,232 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 226,233 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 631,635 **** # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` --- 632,636 ---- # Be sure to have absolute paths. for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ ! localstatedir libdir includedir oldincludedir infodir mandir do eval ac_val=$`echo $ac_var` *************** *** 671,678 **** ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 672,679 ---- ac_confdir=`(dirname "$0") 2>/dev/null || $as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$0" : 'X\(//\)[^/]' \| \ ! X"$0" : 'X\(//\)$' \| \ ! X"$0" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$0" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 778,784 **** Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in --- 779,785 ---- Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX ! [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX ! [PREFIX] By default, \`make install' will install all the files in *************** *** 860,869 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` cd $ac_dir --- 861,903 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac cd $ac_dir *************** *** 876,880 **** $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help --- 910,914 ---- $SHELL $ac_srcdir/configure --help=recursive elif test -f $ac_srcdir/configure.ac || ! test -f $ac_srcdir/configure.in; then echo $ac_configure --help *************** *** 890,895 **** cat <<\_ACEOF ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 ! Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. --- 924,928 ---- cat <<\_ACEOF ! Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. *************** *** 903,907 **** It was created by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was $ $0 $@ --- 936,940 ---- It was created by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was $ $0 $@ *************** *** 980,996 **** ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" --- 1013,1029 ---- ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ! ac_must_keep_next=false # Got value, back to normal. else ! case $ac_arg in ! *=* | --config-cache | -C | -disable-* | --disable-* \ ! | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ ! | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ ! | -with-* | --with-* | -without-* | --without-* | --x) ! case "$ac_configure_args0 " in ! "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; ! esac ! ;; ! -* ) ac_must_keep_next=true ;; ! esac fi ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" *************** *** 1026,1035 **** *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 1059,1068 ---- *ac_space=\ *) sed -n \ ! "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" ;; *) sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 1060,1064 **** do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo --- 1093,1097 ---- do eval ac_val=$`echo $ac_var` ! echo "$ac_var='"'"'$ac_val'"'"'" done | sort echo *************** *** 1079,1083 **** echo "$as_me: exit $exit_status" } >&5 ! rm -f core core.* *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status --- 1112,1116 ---- echo "$as_me: exit $exit_status" } >&5 ! rm -f core *.core && rm -rf conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status *************** *** 1159,1163 **** ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set --- 1192,1196 ---- ac_cache_corrupted=false for ac_var in `(set) 2>&1 | ! sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set *************** *** 1176,1186 **** *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac --- 1209,1219 ---- *) if test "x$ac_old_val" != "x$ac_new_val"; then ! { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ! { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 echo "$as_me: former value: $ac_old_val" >&2;} ! { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 echo "$as_me: current value: $ac_new_val" >&2;} ! ac_cache_corrupted=: fi;; esac *************** *** 1232,1236 **** echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 --- 1265,1269 ---- echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 ! set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then echo $ECHO_N "(cached) $ECHO_C" >&6 *************** *** 1595,1599 **** cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1628,1631 ---- *************** *** 1615,1620 **** # It will help us diagnose broken compilers, and finding out an intuition # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output" >&5 ! echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 --- 1647,1652 ---- # It will help us diagnose broken compilers, and finding out an intuition # of exeext. ! echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 ! echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 *************** *** 1636,1656 **** case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; conftest.$ac_ext ) ! # This is the source file. ! ;; [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; * ) ! break;; esac done --- 1668,1688 ---- case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ! ;; conftest.$ac_ext ) ! # This is the source file. ! ;; [ab].out ) ! # We found the default executable, but exeext='' is most ! # certainly right. ! break;; *.* ) ! ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! # FIXME: I believe we export ac_cv_exeext for Libtool, ! # but it would be cool to find out if it's true. Does anybody ! # maintain Libtool? --akim. ! export ac_cv_exeext ! break;; * ) ! break;; esac done *************** *** 1726,1731 **** *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; * ) break;; esac --- 1758,1763 ---- *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` ! export ac_cv_exeext ! break;; * ) break;; esac *************** *** 1752,1756 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1784,1787 ---- *************** *** 1803,1807 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1834,1837 ---- *************** *** 1823,1831 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 1853,1871 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1840,1844 **** ac_compiler_gnu=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu --- 1880,1884 ---- ac_compiler_gnu=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu *************** *** 1856,1860 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1896,1899 ---- *************** *** 1873,1881 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 1912,1930 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1890,1894 **** ac_cv_prog_cc_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 --- 1939,1943 ---- ac_cv_prog_cc_g=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 *************** *** 1917,1921 **** ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 1966,1969 ---- *************** *** 1945,1948 **** --- 1993,2006 ---- return s; } + + /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std1 is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std1. */ + int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; *************** *** 1971,1979 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2029,2047 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 1988,1992 **** fi ! rm -f conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext --- 2056,2060 ---- fi ! rm -f conftest.err conftest.$ac_objext done rm -f conftest.$ac_ext conftest.$ac_objext *************** *** 2016,2024 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2084,2102 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2027,2032 **** (exit $ac_status); }; }; then for ac_declaration in \ ! ''\ ! '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ --- 2105,2109 ---- (exit $ac_status); }; }; then for ac_declaration in \ ! '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ *************** *** 2036,2040 **** do cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2113,2116 ---- *************** *** 2042,2047 **** cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include $ac_declaration int main () --- 2118,2123 ---- cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration + #include int main () *************** *** 2054,2062 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2130,2148 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2071,2077 **** continue fi ! rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2157,2162 ---- continue fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF *************** *** 2090,2098 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2175,2193 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_c_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2106,2110 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* --- 2201,2205 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* *************** *** 2120,2124 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' --- 2215,2219 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' *************** *** 2155,2159 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2250,2253 ---- *************** *** 2166,2170 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2260,2264 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2178,2181 **** --- 2272,2276 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2198,2202 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2293,2296 ---- *************** *** 2216,2219 **** --- 2310,2314 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2262,2266 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2357,2360 ---- *************** *** 2273,2277 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2367,2371 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2285,2288 **** --- 2379,2383 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2305,2309 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2400,2403 ---- *************** *** 2323,2326 **** --- 2417,2421 ---- if test -s conftest.err; then ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag else ac_cpp_err= *************** *** 2480,2484 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2575,2578 ---- *************** *** 2500,2508 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2594,2612 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2517,2521 **** ac_compiler_gnu=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu --- 2621,2625 ---- ac_compiler_gnu=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu *************** *** 2533,2537 **** else cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2637,2640 ---- *************** *** 2550,2558 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2653,2671 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2567,2571 **** ac_cv_prog_cxx_g=no fi ! rm -f conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 --- 2680,2684 ---- ac_cv_prog_cxx_g=no fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext fi echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 *************** *** 2587,2592 **** fi for ac_declaration in \ ! ''\ ! '#include ' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ --- 2700,2704 ---- fi for ac_declaration in \ ! '' \ 'extern "C" void std::exit (int) throw (); using std::exit;' \ 'extern "C" void std::exit (int); using std::exit;' \ *************** *** 2596,2600 **** do cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2708,2711 ---- *************** *** 2602,2607 **** cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ - #include $ac_declaration int main () --- 2713,2718 ---- cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_declaration + #include int main () *************** *** 2614,2622 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2725,2743 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2631,2637 **** continue fi ! rm -f conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2752,2757 ---- continue fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF *************** *** 2650,2658 **** rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 --- 2770,2788 ---- rm -f conftest.$ac_objext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 ! (eval $ac_compile) 2>conftest.er1 ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && ! { ac_try='test -z "$ac_cxx_werror_flag" ! || test ! -s conftest.err' ! { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 ! (eval $ac_try) 2>&5 ! ac_status=$? ! echo "$as_me:$LINENO: \$? = $ac_status" >&5 ! (exit $ac_status); }; } && ! { ac_try='test -s conftest.$ac_objext' { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 (eval $ac_try) 2>&5 *************** *** 2666,2670 **** fi ! rm -f conftest.$ac_objext conftest.$ac_ext done rm -f conftest* --- 2796,2800 ---- fi ! rm -f conftest.err conftest.$ac_objext conftest.$ac_ext done rm -f conftest* *************** *** 2705,2709 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2835,2838 ---- *************** *** 2716,2720 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2845,2849 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2728,2731 **** --- 2857,2861 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2748,2752 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2878,2881 ---- *************** *** 2766,2769 **** --- 2895,2899 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2812,2816 **** # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2942,2945 ---- *************** *** 2823,2827 **** # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 --- 2952,2956 ---- # include #endif ! Syntax error _ACEOF if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 *************** *** 2835,2838 **** --- 2964,2968 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2855,2859 **** # can be detected and how. cat >conftest.$ac_ext <<_ACEOF - #line $LINENO "configure" /* confdefs.h. */ _ACEOF --- 2985,2988 ---- *************** *** 2873,2876 **** --- 3002,3006 ---- if test -s conftest.err; then ac_cpp_err=$ac_cxx_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag else ac_cpp_err= *************** *** 2946,2956 **** # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; --- 3076,3086 ---- # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ ! "s/'/'\\\\''/g; ! s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n \ ! "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" ;; esac; *************** *** 2982,2992 **** # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi --- 3112,3122 ---- # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ! ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/; s/:*\${srcdir}:*/:/; s/:*@srcdir@:*/:/; ! s/^\([^=]*=[ ]*\):*/\1/; s/:*$//; ! s/^[^=]*=[ ]*$//; }' fi *************** *** 3002,3012 **** t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g --- 3132,3142 ---- t clear : clear ! s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\),-D\1=\2,g t quote ! s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\),-D\1=\2,g t quote d : quote ! s,[ `~#$^&*(){}\\|;'"<>?],\\&,g s,\[,\\&,g s,\],\\&,g *************** *** 3030,3034 **** # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" --- 3160,3164 ---- # 1. Remove the extension, and $U if already installed. ac_i=`echo "$ac_i" | ! sed 's/\$U\././;s/\.o$//;s/\.obj$//'` # 2. Add them. ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" *************** *** 3074,3080 **** set -o posix fi # Support unset when possible. ! if (FOO=FOO; unset FOO) >/dev/null 2>&1; then as_unset=unset else --- 3204,3211 ---- set -o posix fi + DUALCASE=1; export DUALCASE # for MKS sh # Support unset when possible. ! if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else *************** *** 3095,3099 **** LC_TELEPHONE LC_TIME do ! if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else --- 3226,3230 ---- LC_TELEPHONE LC_TIME do ! if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then eval $as_var=C; export $as_var else *************** *** 3274,3277 **** --- 3405,3409 ---- as_mkdir_p=: else + test -d ./-p && rmdir ./-p as_mkdir_p=false fi *************** *** 3280,3287 **** # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" --- 3412,3419 ---- # Sed expression to map a string onto a valid CPP name. ! as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. ! as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" *************** *** 3310,3314 **** This file was extended by $as_me, which was ! generated by GNU Autoconf 2.57. Invocation command line was CONFIG_FILES = $CONFIG_FILES --- 3442,3446 ---- This file was extended by $as_me, which was ! generated by GNU Autoconf 2.59. Invocation command line was CONFIG_FILES = $CONFIG_FILES *************** *** 3354,3358 **** --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: --- 3486,3490 ---- --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] ! instantiate the configuration file FILE Configuration files: *************** *** 3365,3373 **** ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.57, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 ! Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." --- 3497,3504 ---- ac_cs_version="\\ config.status ! configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" ! Copyright (C) 2003 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." *************** *** 3596,3602 **** /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` --- 3727,3733 ---- /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed if test -z "$ac_sed_cmds"; then ! ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" else ! ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" fi ac_sed_frag=`expr $ac_sed_frag + 1` *************** *** 3616,3624 **** case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac --- 3747,3755 ---- case $ac_file in - | *:- | *:-:* ) # input from stdin ! cat >$tmp/stdin ! ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` ! ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; * ) ac_file_in=$ac_file.in ;; esac *************** *** 3627,3634 **** ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 3758,3765 ---- ac_dir=`(dirname "$ac_file") 2>/dev/null || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$ac_file" : 'X\(//\)[^/]' \| \ ! X"$ac_file" : 'X\(//\)$' \| \ ! X"$ac_file" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 3646,3653 **** as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } --- 3777,3784 ---- as_dir=`(dirname "$as_dir") 2>/dev/null || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ ! X"$as_dir" : 'X\(//\)[^/]' \| \ ! X"$as_dir" : 'X\(//\)$' \| \ ! X"$as_dir" : 'X\(/\)' \| \ ! . : '\(.\)' 2>/dev/null || echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } *************** *** 3687,3696 **** ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! # Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be ! # absolute. ! ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` ! ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` ! ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` ! ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` --- 3818,3860 ---- ac_top_srcdir=$ac_top_builddir$srcdir ;; esac ! ! # Do not use `cd foo && pwd` to compute absolute paths, because ! # the directories may not exist. ! case `pwd` in ! .) ac_abs_builddir="$ac_dir";; ! *) ! case "$ac_dir" in ! .) ac_abs_builddir=`pwd`;; ! [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; ! *) ac_abs_builddir=`pwd`/"$ac_dir";; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ! case ${ac_top_builddir}. in ! .) ac_abs_top_builddir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; ! *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_srcdir=$ac_srcdir;; ! *) ! case $ac_srcdir in ! .) ac_abs_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; ! *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; ! esac;; ! esac ! case $ac_abs_builddir in ! .) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ! case $ac_top_srcdir in ! .) ac_abs_top_srcdir=$ac_abs_builddir;; ! [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; ! *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; ! esac;; ! esac *************** *** 3710,3714 **** fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the --- 3874,3878 ---- fi configure_input=$configure_input"Generated from `echo $ac_file_in | ! sed 's,.*/,,'` by configure." # First look for the input files in the build tree, otherwise in the *************** *** 3719,3740 **** -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo $f;; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo $f ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo $srcdir/$f ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } --- 3883,3904 ---- -) echo $tmp/stdin ;; [\\/$]*) ! # Absolute (can't be DOS-style, as IFS=:) ! test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! echo "$f";; *) # Relative ! if test -f "$f"; then ! # Build tree ! echo "$f" ! elif test -f "$srcdir/$f"; then ! # Source tree ! echo "$srcdir/$f" ! else ! # /dev/null tree ! { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 echo "$as_me: error: cannot find input file: $f" >&2;} { (exit 1); exit 1; }; } ! fi;; esac done` || { (exit 1); exit 1; } diff -C 2 -rP gperf-3.0.1/tests/configure.in gperf-3.0.2/tests/configure.in *** gperf-3.0.1/tests/configure.in Mon Nov 25 13:00:26 2002 --- gperf-3.0.2/tests/configure.in Sat May 14 14:22:36 2005 *************** *** 20,24 **** dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ AC_INIT(c-parse.gperf) --- 20,24 ---- dnl along with this program; see the file COPYING. dnl If not, write to the Free Software Foundation, Inc., ! dnl 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. AC_INIT(c-parse.gperf) diff -C 2 -rP gperf-3.0.1/tests/cplusplus.exp gperf-3.0.2/tests/cplusplus.exp *** gperf-3.0.1/tests/cplusplus.exp Thu Jun 12 16:31:27 2003 --- gperf-3.0.2/tests/cplusplus.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k'1,4,7,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -L C -F ', 0, 0' -j1 -g -o -t -N is_reserved_word -k'1,4,7,$' */ diff -C 2 -rP gperf-3.0.1/tests/gpc.exp gperf-3.0.2/tests/gpc.exp *** gperf-3.0.1/tests/gpc.exp Thu Jun 12 16:31:28 2003 --- gperf-3.0.2/tests/gpc.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -g -o -j1 -t -N is_reserved_word */ /* Computed positions: -k'1,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -g -o -j1 -t -N is_reserved_word */ /* Computed positions: -k'1,$' */ diff -C 2 -rP gperf-3.0.1/tests/incomplete.exp gperf-3.0.2/tests/incomplete.exp *** gperf-3.0.1/tests/incomplete.exp Thu Jun 12 16:31:31 2003 --- gperf-3.0.2/tests/incomplete.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -t */ /* Computed positions: -k'1,3' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -t */ /* Computed positions: -k'1,3' */ diff -C 2 -rP gperf-3.0.1/tests/java.exp gperf-3.0.2/tests/java.exp *** gperf-3.0.1/tests/java.exp Thu Jun 12 16:31:33 2003 --- gperf-3.0.2/tests/java.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k'1,3,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -L C -F ', 0' -t -j1 -i 1 -g -o -N java_keyword -k'1,3,$' */ *************** *** 48,53 **** You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to ! the Free Software Foundation, 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. Java and all Java-based marks are trademarks or registered trademarks --- 48,53 ---- You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to ! the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, ! MA 02110-1301, USA. Java and all Java-based marks are trademarks or registered trademarks diff -C 2 -rP gperf-3.0.1/tests/java.gperf gperf-3.0.2/tests/java.gperf *** gperf-3.0.1/tests/java.gperf Wed Mar 31 08:05:07 1999 --- gperf-3.0.2/tests/java.gperf Sat May 14 14:22:36 2005 *************** *** 18,23 **** You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to ! the Free Software Foundation, 59 Temple Place - Suite 330, ! Boston, MA 02111-1307, USA. Java and all Java-based marks are trademarks or registered trademarks --- 18,23 ---- You should have received a copy of the GNU General Public License along with GNU CC; see the file COPYING. If not, write to ! the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, ! MA 02110-1301, USA. Java and all Java-based marks are trademarks or registered trademarks diff -C 2 -rP gperf-3.0.1/tests/languages.exp gperf-3.0.2/tests/languages.exp *** gperf-3.0.1/tests/languages.exp Thu Jun 12 16:31:41 2003 --- gperf-3.0.2/tests/languages.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -C -E -G -I -t */ /* Computed positions: -k'1-3,5,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -C -E -G -I -t */ /* Computed positions: -k'1-3,5,$' */ diff -C 2 -rP gperf-3.0.1/tests/modula2.exp gperf-3.0.2/tests/modula2.exp *** gperf-3.0.1/tests/modula2.exp Thu Jun 12 16:31:45 2003 --- gperf-3.0.2/tests/modula2.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -n -k1-8 -l */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -n -k1-8 -l */ diff -C 2 -rP gperf-3.0.1/tests/objc.exp gperf-3.0.2/tests/objc.exp *** gperf-3.0.1/tests/objc.exp Thu Jun 12 16:31:47 2003 --- gperf-3.0.2/tests/objc.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -j1 -i 1 -g -o -t -N is_reserved_word -k'1,3,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -j1 -i 1 -g -o -t -N is_reserved_word -k'1,3,$' */ diff -C 2 -rP gperf-3.0.1/tests/permut2.exp gperf-3.0.2/tests/permut2.exp *** gperf-3.0.1/tests/permut2.exp Thu Jun 12 16:31:51 2003 --- gperf-3.0.2/tests/permut2.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -m5 */ /* Computed positions: -k'1-2' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -m5 */ /* Computed positions: -k'1-2' */ diff -C 2 -rP gperf-3.0.1/tests/permut3.exp gperf-3.0.2/tests/permut3.exp *** gperf-3.0.1/tests/permut3.exp Thu Jun 12 16:31:54 2003 --- gperf-3.0.2/tests/permut3.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -m5 */ /* Computed positions: -k'1-2' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -m5 */ /* Computed positions: -k'1-2' */ diff -C 2 -rP gperf-3.0.1/tests/permutc2.exp gperf-3.0.2/tests/permutc2.exp *** gperf-3.0.1/tests/permutc2.exp Thu Jun 12 16:31:56 2003 --- gperf-3.0.2/tests/permutc2.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -m5 --ignore-case */ /* Computed positions: -k'1-2' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -m5 --ignore-case */ /* Computed positions: -k'1-2' */ diff -C 2 -rP gperf-3.0.1/tests/test-4.exp gperf-3.0.2/tests/test-4.exp *** gperf-3.0.1/tests/test-4.exp Thu Jun 12 16:31:58 2003 --- gperf-3.0.2/tests/test-4.exp Sat Jul 30 16:42:13 2005 *************** *** 1,3 **** ! /* C code produced by gperf version 3.0.1 */ /* Command-line: ../src/gperf -D -t -k'1,$' */ --- 1,3 ---- ! /* C code produced by gperf version 3.0.2 */ /* Command-line: ../src/gperf -D -t -k'1,$' */ diff -C 2 -rP gperf-3.0.1/tests/test-6.exp gperf-3.0.2/tests/test-6.exp *** gperf-3.0.1/tests/test-6.exp Fri Apr 25 10:15:30 2003 --- gperf-3.0.2/tests/test-6.exp Sun Aug 22 16:04:17 2004 *************** *** 72,75 **** --- 72,78 ---- Specify name of word list array. Default name is 'wordlist'. + --length-table-name=NAME + Specify name of length table array. Default name is + 'lengthtable'. -S, --switch=COUNT Causes the generated C code to use a switch statement scheme, rather than an array lookup table.