diff options
author | Bruno Haible <bruno@clisp.org> | 2003-04-16 10:07:23 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2003-04-16 10:07:23 +0000 |
commit | b49d12d9843f3f2be0eb38327cb15af761d668d8 (patch) | |
tree | 2e62b1f04edb9ec0a57671a5c03f047453f401fe /doc | |
parent | fa9b5b99bff5a086623ac15e4001cddb4d1fba9b (diff) | |
download | gperf-b49d12d9843f3f2be0eb38327cb15af761d668d8.tar.gz |
Improve option --pic. New options --string-pool-name, --null-strings.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/gperf.texi | 67 |
1 files changed, 58 insertions, 9 deletions
diff --git a/doc/gperf.texi b/doc/gperf.texi index 56676ce..0ebfd5d 100644 --- a/doc/gperf.texi +++ b/doc/gperf.texi @@ -7,7 +7,7 @@ @c some day we should @include version.texi instead of defining @c these values at hand. -@set UPDATED 8 December 2002 +@set UPDATED 1 January 2003 @set EDITION 2.7.2 @set VERSION 2.7.2 @c --------------------- @@ -28,7 +28,7 @@ This file documents the features of the GNU Perfect Hash Function Generator @value{VERSION}. -Copyright @copyright{} 1989-2002 Free Software Foundation, Inc. +Copyright @copyright{} 1989-2003 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -65,7 +65,7 @@ Software Foundation instead of in the original English. @page @vskip 0pt plus 1filll -Copyright @copyright{} 1989-2002 Free Software Foundation, Inc. +Copyright @copyright{} 1989-2003 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of @@ -365,10 +365,12 @@ act like command-line options, as well as for providing a user-supplied If the @samp{-t} option (or, equivalently, the @samp{%struct-type} declaration) @emph{is} enabled, you @emph{must} provide a C @code{struct} as the last component in the declaration section from the input file. The first -field in this struct must be a @code{char *} or @code{const char *} -identifier called @samp{name}, although it is possible to modify this -field's name with the @samp{-K} option (or, equivalently, the -@samp{%define slot-name}) described below. +field in this struct must be of type @code{char *} or @code{const char *} +if the @samp{-P} option is not given, or of type @code{int} if the option +@samp{-P} (or, equivalently, the @samp{%pic} declaration) is enabled. +This first field must be called @samp{name}, although it is possible to modify +its name with the @samp{-K} option (or, equivalently, the +@samp{%define slot-name} declaration) described below. Here is a simple example, using months of the year and their attributes as input: @@ -544,6 +546,34 @@ Generate the static table of keywords as a static global variable, rather than hiding it inside of the lookup function (which is the default behavior). +@item %pic +@cindex @samp{%pic} +Optimize the generated table for inclusion in shared libraries. This +reduces the startup time of programs using a shared library containing +the generated code. If the @samp{%struct-type} declaration (or, +equivalently, the option @samp{-t}) is also given, the first field of the +user-defined struct must be of type @samp{int}, not @samp{char *}, because +it will contain offsets into the string pool instead of actual strings. +To convert such an offset to a string, you can use the expression +@samp{stringpool + @var{o}}, where @var{o} is the offset. The string pool +name can be changed through the @samp{%define string-pool-name} declaration. + +@item %define string-pool-name @var{name} +@cindex @samp{%define string-pool-name} +Allows you to specify the name of the generated string pool created by +the declaration @samp{%pic} (or, equivalently, the option @samp{-P}). +The default name is @samp{stringpool}. This declaration permits the use of +two hash tables in the same file, with @samp{%pic} and even when the +@samp{%global-table} declaration (or, equivalently, the option @samp{-G}) +is given. + +@item %null-strings +@cindex @samp{%null-strings} +Use NULL strings instead of empty strings for empty keyword table entries. +This reduces the startup time of programs using a shared library containing +the generated code (but not as much as the declaration @samp{%pic}), at the +expense of one more test-and-branch instruction at run time. + @item %define word-array-name @var{name} @cindex @samp{%define word-array-name} Allows you to specify the name for the generated array containing the @@ -952,8 +982,27 @@ default behavior). @itemx --pic Optimize the generated table for inclusion in shared libraries. This reduces the startup time of programs using a shared library containing -the generated code, at the expense of one more test-and-branch instruction -at run time. +the generated code. If the option @samp{-t} (or, equivalently, the +@samp{%struct-type} declaration) is also given, the first field of the +user-defined struct must be of type @samp{int}, not @samp{char *}, because +it will contain offsets into the string pool instead of actual strings. +To convert such an offset to a string, you can use the expression +@samp{stringpool + @var{o}}, where @var{o} is the offset. The string pool +name can be changed through the option @samp{--string-pool-name}. + +@item -Q @var{string-pool-name} +@itemx --string-pool-name=@var{string-pool-name} +Allows you to specify the name of the generated string pool created by +option @samp{-P}. The default name is @samp{stringpool}. This option +permits the use of two hash tables in the same file, with @samp{-P} and +even when the option @samp{-G} (or, equivalently, the @samp{%global-table} +declaration) is given. + +@item --null-strings +Use NULL strings instead of empty strings for empty keyword table entries. +This reduces the startup time of programs using a shared library containing +the generated code (but not as much as option @samp{-P}), at the expense +of one more test-and-branch instruction at run time. @item -W @var{hash-table-array-name} @itemx --word-array-name=@var{hash-table-array-name} |