From 688065cbc948f74819c4c9b93f0e9b0d78ed4dfc Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 7 May 2003 13:37:10 +0000 Subject: Documentation regenerated for 3.0. --- doc/gperf.dvi | Bin 84964 -> 104136 bytes doc/gperf.pdf | Bin 0 -> 234439 bytes doc/gperf.ps | 3565 ++++++++++++++++++++++++++++++++------------------------- 3 files changed, 1992 insertions(+), 1573 deletions(-) create mode 100644 doc/gperf.pdf diff --git a/doc/gperf.dvi b/doc/gperf.dvi index 82beb8d..1ef26a6 100644 Binary files a/doc/gperf.dvi and b/doc/gperf.dvi differ diff --git a/doc/gperf.pdf b/doc/gperf.pdf new file mode 100644 index 0000000..74d1225 Binary files /dev/null and b/doc/gperf.pdf differ diff --git a/doc/gperf.ps b/doc/gperf.ps index aa7f31e..f3fc7c1 100644 --- a/doc/gperf.ps +++ b/doc/gperf.ps @@ -1,15 +1,15 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software -%%Title: ../../doc/gperf.dvi -%%Pages: 28 +%%Title: gperf.dvi +%%Pages: 32 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) -%DVIPSCommandLine: dvips -D600 -o ../../doc/gperf.ps ../../doc/gperf.dvi +%DVIPSCommandLine: dvips -D600 -o gperf.ps gperf.dvi %DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2000.09.26:1257 +%DVIPSSource: TeX output 2003.05.07:1528 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -68,7 +68,7 @@ p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet -TeXDict begin 39158280 55380996 1000 600 600 (../../doc/gperf.dvi) +TeXDict begin 39158280 55380996 1000 600 600 (gperf.dvi) @start %DVIPSBitmapFont: Fa cmbxti10 14.4 1 /Fa 1 47 df<13FCEA03FF000F13804813C05AA25AA2B5FCA31480A214006C5A6C5A6C5A @@ -77,47 +77,77 @@ EA0FE0121271912B>46 D E %DVIPSBitmapFont: Fb cmti9 9 1 /Fb 1 47 df<121C127F12FFA412FE12380808778718>46 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmtt9 9 16 -/Fc 16 126 df<000F1470486C13F8383FC001EA7FE0140315F038FFF00700F914E0A214 +%DVIPSBitmapFont: Fc cmtt9 9 29 +/Fc 29 126 df<000F1470486C13F8383FC001EA7FE0140315F038FFF00700F914E0A214 0F15C0A2141F00FF1480387FE03F1500A26C485A381F807E380F00FEC75AA213015CA213 035C13075CA2130F5C131F5CA2133F91C7FCA24913F090387E01F89038FE03FC9038FC07 FEA212019038F80FFF0003149F13F0A2120713E0A2000F14FF9038C007FE121F1380EC03 -FC000FEB01F86CC712F0203A7DB327>37 D<007FB512F8B612FCA46C14F81E067C7E27> -95 D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0F -FF137F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612 -806C15C07E000313F1C69038807F8022207C9F27>97 D99 DII104 D<130F497E497EA46D5A6DC7FC90C8FCA7383FFF -80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7BAE27>I<387FE07F39FFF1 -FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA25BB03A7FFF83FFE0B500C713 -F0A36C018313E024207F9F27>110 DI<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138 +FC000FEB01F86CC712F0203A7DB327>37 D<007FB512F8B612FCA46C14F81E067C9927> +45 D<1278B612FE15FFA315FE39FC0001FCEC03F8EC07F0007814E0C7120FEC1FC01580 +143FEC7F00147E14FE5C13015C13035C13075CA2495AA3495AA3133F91C7FCA55B137EA9 +133C20307DAE27>55 D<007FB512F8B612FCA46C14F81E067C7E27>95 +D<3803FFC0000F13F04813FC4813FF811380EC1FC0381F000F000480C71207A2EB0FFF13 +7F0003B5FC120F5A383FFC07EA7FC0130012FE5AA46C130F007F131FEBC0FF6CB612806C +15C07E000313F1C69038807F8022207C9F27>97 DIIIII<153F9039 +1FC0FF80D97FF313C048B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F4848 +6C7EA66C6C485AEBC01FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5 +FC15E015F84814FE4880EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C +1580007F143F6C6CEB7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337E +A027>II<130F497E49 +7EA46D5A6DC7FC90C8FCA7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E +1D2F7BAE27>I107 D<387FFF80B57EA37EEA000FB3B2007FB512F8B612FCA36C14F81E2E7CAD27>I<39 +7F07C01F3AFF9FF07FC09039FFF9FFE091B57E7E3A0FFC7FF1F89038F03FC001E0138001 +C01300A3EB803EB03A7FF0FFC3FF486C01E3138001F913E701F813E36C4801C313002920 +819F27>I<387FE07F39FFF1FFC001F713F090B5FC6C80000313C1EC01FCEBFE005B5BA2 +5BB03A7FFF83FFE0B500C713F0A36C018313E024207F9F27>II<387FE0FFD8FFF313C090B512F0816C800003EB81FE +49C67E49EB3F8049131F16C049130FA216E01507A6150F16C07F151F6DEB3F80157F6DEB +FF009038FF83FEECFFFC5D5D01F313C0D9F0FEC7FC91C8FCAC387FFF80B57EA36C5B2331 +7F9F27>I<397FFC03FC39FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138 F00F809138E002004AC7FC5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27> 114 D<9038FFF3800007EBFFC0121F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F80 13FC383FFFF06C13FC000713FF00011480D8000F13C09038003FE014070078EB03F000FC 1301A27E14036CEB07E0EBE01F90B512C01580150000FB13FC38707FF01C207B9F27>I< 133C137EA8007FB512F0B612F8A36C14F0D8007EC7FCAE1518157EA415FE6D13FC1483EC -FFF86D13F06D13E0010313C0010013001F297EA827>I<3A7FFE07FFE000FF15F06D5A49 -7E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC7CA4EBE79EA20001 -1478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>119 -D123 D125 D E +FFF86D13F06D13E0010313C0010013001F297EA827>I<397FE01FF8486C487EA3007F13 +1F00031300B21401A21403EBFC0F6CB612E016F07EEB3FFE90390FF87FE024207F9F27> +I<3A7FFE07FFE000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EB +C1F83903E3FC7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E0 +24207F9F27>119 D<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A01 +7E90C7FC6D5AEB1F7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F +8001F87F00016D7E3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I< +3A7FFC0FFF80486C4813C0A36C486C13803A07E000F800000313015D13F00001130301F8 +5B1200A26D485A137CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC13 +03A25C1301A25CA213035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B +6C5AEA07C022317E9F27>I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF000 +1EEB1FE0C7EA3FC0EC7F80ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E +4848133F485A485A485A485AB7FCA46C14FE20207E9F27>II125 +D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmr9 9 48 -/Fd 48 123 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C +%DVIPSBitmapFont: Fd cmr9 9 47 +/Fd 47 123 df<123C127EB4FCA21380A2127F123D1201A412031300A25A1206120E120C 121C5A5A126009177AB315>39 D<123C127EB4FCA21380A2127F123D1201A412031300A2 5A1206120E120C121C5A5A126009177A8715>44 DI<000C14C0380FC00F90B5128015005C5C14F0 14C0D80C18C7FC90C8FCA9EB0FC0EB7FF8EBF07C380FC03F9038001F80EC0FC0120E000C EB07E0A2C713F01403A215F8A41218127E12FEA315F0140712F8006014E01270EC0FC06C -131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<14FE90 -3807FF80011F13E090383F00F0017C13703901F801F8EBF003EA03E01207EA0FC0EC01F0 -4848C7FCA248C8FCA35A127EEB07F0EB1FFC38FE381F9038700F809038E007C039FFC003 -E0018013F0EC01F8130015FC1400A24814FEA5127EA4127F6C14FCA26C1301018013F800 -0F14F0EBC0030007EB07E03903E00FC03901F81F806CB51200EB3FFCEB0FE01F347DB126 ->I<1230123C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC -0380C7EA07001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA2 -5BA55BA9131C20347CB126>III<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A -6C7EA202707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E -80010FB5FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF0 -4A7ED8FFFE49B512E0A333367DB53A>65 DIII70 +131F003C14806CEB7F00380F80FE3807FFF8000113E038003F801D347CB126>I<123012 +3C003FB6FCA34814FEA215FC0070C7123800601430157015E04814C01401EC0380C7EA07 +001406140E5C141814385CA25CA2495A1303A3495AA2130FA3131F91C7FCA25BA55BA913 +1C20347CB126>55 DII<15E0A34A7EA24A7EA34A7EA3EC0DFE140CA2EC187FA34A6C7EA202 +707FEC601FA202E07FECC00FA2D901807F1507A249486C7EA301066D7EA2010E80010FB5 +FCA249800118C77EA24981163FA2496E7EA3496E7EA20001821607487ED81FF04A7ED8FF +FE49B512E0A333367DB53A>65 DIII70 D73 D<017FB5FCA39038003FE0EC1FC0B3B1127EB4FCA4EC3F805A0060140000705B6C13FE6C 485A380F03F03803FFC0C690C7FC20357DB227>II E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmtt12 13.14 5 -/Fi 5 118 df99 D114 -D<903907FF80F0017FEBF1F848B512FD000714FF5A5A5AEBFC00D87FE0131F0180130F48 -C71207481403A5007FEC01F001C090C7FCEA3FF013FE381FFFF86CEBFFC0000314F8C614 -FF013F1480010714E0D9003F13F0020013F8ED0FFC1503003CEC01FE007E140000FE15FF -167F7EA37F6D14FF16FE01F013036DEB07FC01FF137F91B512F816F016E04815C0D8FC3F -1400010F13FCD8780113E0283278B038>III E +071480010149C7FC9038003FF0293278B038>99 DII<14F0497E497E497EA46D5A6D5A +6D5A91C8FCAB383FFFFC487FB5FCA37E7EC7FCB3AF007FB612F0B712F816FCA316F86C15 +F0264476C338>105 D110 +D114 D<903907FF80F0017FEBF1F848B512FD000714FF5A5A +5AEBFC00D87FE0131F0180130F48C71207481403A5007FEC01F001C090C7FCEA3FF013FE +381FFFF86CEBFFC0000314F8C614FF013F1480010714E0D9003F13F0020013F8ED0FFC15 +03003CEC01FE007E140000FE15FF167F7EA37F6D14FF16FE01F013036DEB07FC01FF137F +91B512F816F016E04815C0D8FC3F1400010F13FCD8780113E0283278B038>III E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmbx12 13.14 28 -/Fj 28 122 df46 D<15F014011407141F147FEB03FF137FB6FCA313FC1380C7FCB3B3B200 -7FB712E0A52B4777C63D>49 DII65 D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EA800F -0207EEE01F021F903AFE007FF83F027F01E0903807FC7F91B5C73801FEFF010301FCEC00 -7F4901F0814901C0150F4949814990C97E494882495A48498248197F5C48193F5C48191F -5C48190FA2485BA21A075AA391CDFCA2B5FCAD7EA280F207C0A27EA36C7F1A0F6C1A8080 -6C191F6E18006C61806C197E6C6D177C6D6C17FC6D6C4C5A6D6D4B5A6D6D4B5A6D01F0ED -1FC06D01FC4B5A010001FF03FFC7FC6E01E0EB07FE021F01FEEB3FFC020790B612F00201 -16C0DA003F92C8FC030714F8DB001F13804A4D79CB59>67 DIII73 D75 D97 -D<91380FFF8091B512F8010314FF010F158090263FFE0013C0D97FF8EB1FE0D9FFE0EB3F -F04849EB7FF8484913FF4890C7FC5A5B121F5B003FED7FF0EE3FE0007FED1FC093C7FC5B -A212FFAC127F7FA2123FA26D153E121F6D157E6C167C6C6D14FC6C16F86C6D13036C01F0 -EB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001035C010014F0020F13802F337CB137 ->99 DIIII<13FCEA03FF487F487FA2487FA66C5BA26C5B6C90C7FCEA00FC90C8FCACEB -7FC0B5FCA512037EB3B3B61280A5194D7BCC22>105 D108 D<90287FC001FFE0EC7FF8B5010F01FC0103B5FC033F6D01 -0F804B6D6C4814E0DBFE079026C03F817F9126C3F0019138FC007F0003D9C7E0DAE1F880 -6CDA8000D9F1E06D7E02CFC7EBF3C002DE91267FF780131F02FC03FFC77FA24A5DA24A5D -A34A5DB3A9B6D8C03FB5D8F00FB512FCA55E317BB067>I<903A7FC001FFC0B5010F13F8 -033F13FE4B7F9126C1FE077F9126C3F0037F00039038C7C0016CD9CF8080150002DE7F02 -FC81A25CA25CA35CB3A9B6D8C07FEBFFE0A53B317BB044>I<913807FF80027F13F80103 -B6FC010F15C090261FFE017F903A7FF0003FF8D9FFC0EB0FFC48496D7E4890C76C7E4817 -804980000F17C048486E13E0A2003F17F049157FA2007F17F8A400FF17FCAB007F17F8A3 -6C6CEDFFF0A3001F17E06D5C000F17C06C6C4A13806C17006C6D495A6C01E0EB1FFC6D6C -495A903A3FFE01FFF0010FB612C0010392C7FCD9007F13F80207138036337DB13D>I<90 -39FF803FE0B5EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C139E14BC -A214F8A24A6C13806F13004A6C5A93C7FCA45CB3A7B612E0A52A317CB032>114 +%DVIPSBitmapFont: Fj cmbx12 13.14 37 +/Fj 37 122 df45 DI<15F014011407141F147FEB03FF137FB6FCA3 +13FC1380C7FCB3B3B2007FB712E0A52B4777C63D>49 DIII65 +D<93261FFF80EB01C00307B500F81303033F02FE13074AB7EA800F0207EEE01F021F903A +FE007FF83F027F01E0903807FC7F91B5C73801FEFF010301FCEC007F4901F0814901C015 +0F4949814990C97E494882495A48498248197F5C48193F5C48191F5C48190FA2485BA21A +075AA391CDFCA2B5FCAD7EA280F207C0A27EA36C7F1A0F6C1A80806C191F6E18006C6180 +6C197E6C6D177C6D6C17FC6D6C4C5A6D6D4B5A6D6D4B5A6D01F0ED1FC06D01FC4B5A0100 +01FF03FFC7FC6E01E0EB07FE021F01FEEB3FFC020790B612F0020116C0DA003F92C8FC03 +0714F8DB001F13804A4D79CB59>67 DIII<93261FFF80EB01C00307B500F81303 +033F02FE13074AB7EA800F0207EEE01F021F903AFE007FF83F027F01E0903807FC7F91B5 +C73801FEFF010301FCEC007F4901F0814901C0150F4949814990C97E494882495A484982 +48197F5C48193F5C48191F5C48190FA2485BA21A075AA391CEFCA2B5FCAD7E050FB712C0 +80A37E94C7001FEBC000807EA27E807E807E806C7F7E6D7E6D7E6D7F6D01E05D6D6D5D6D +13FC010001FF4AB5FC6E01E0EB07F9021F01FFEB3FF0020791B5EAE07F0201EEC01FDA00 +3FED0007030702F81301DB001F018090C8FC524D79CB60>I73 D75 D78 D85 D87 D97 D<91380FFF8091B512F8010314FF010F158090263FFE0013C0D97FF8EB1F +E0D9FFE0EB3FF04849EB7FF8484913FF4890C7FC5A5B121F5B003FED7FF0EE3FE0007FED +1FC093C7FC5BA212FFAC127F7FA2123FA26D153E121F6D157E6C167C6C6D14FC6C16F86C +6D13036C01F0EB07F0D97FFCEB1FE06DB4EBFFC0010F90B5120001035C010014F0020F13 +802F337CB137>99 DI< +EC0FFF91B512F0010314FC010F14FF90263FFE077F90267FF0007F4948EB3FE04801806D +7E48824890C76C7E4848140783485A003F6F7EA3485A701380A312FFA290B8FCA401F8CA +FCA5127FA27FA2123FA26C6CED0F80A2000F161F6C6C16006E5C6C6D147E6C6D5C6C6D49 +5AD97FFCEB07F0903A1FFF803FE06D90B55A010392C7FCD9007F13FC020713C031337DB1 +38>IIII<13FCEA03FF487F487FA2487FA66C5BA26C5B +6C90C7FCEA00FC90C8FCACEB7FC0B5FCA512037EB3B3B61280A5194D7BCC22>I108 D<90287FC001FFE0EC7FF8B5010F +01FC0103B5FC033F6D010F804B6D6C4814E0DBFE079026C03F817F9126C3F0019138FC00 +7F0003D9C7E0DAE1F8806CDA8000D9F1E06D7E02CFC7EBF3C002DE91267FF780131F02FC +03FFC77FA24A5DA24A5DA34A5DB3A9B6D8C03FB5D8F00FB512FCA55E317BB067>I<903A +7FC001FFC0B5010F13F8033F13FE4B7F9126C1FE077F9126C3F0037F00039038C7C0016C +D9CF8080150002DE7F02FC81A25CA25CA35CB3A9B6D8C07FEBFFE0A53B317BB044>I<91 +3807FF80027F13F80103B6FC010F15C090261FFE017F903A7FF0003FF8D9FFC0EB0FFC48 +496D7E4890C76C7E4817804980000F17C048486E13E0A2003F17F049157FA2007F17F8A4 +00FF17FCAB007F17F8A36C6CEDFFF0A3001F17E06D5C000F17C06C6C4A13806C17006C6D +495A6C01E0EB1FFC6D6C495A903A3FFE01FFF0010FB612C0010392C7FCD9007F13F80207 +138036337DB13D>I<90397FC00FFFB5017F13F002C1B512FC02C714FF9126CFF80F7F91 +26FFC00313E0000391C77F6C01FC6E7E4A6E7E5C4A6E7E848319808319C0A47113E0AC4D +13C0A319805FA219004D5A804D5A6E4A5A6E4A5A02FF495BDB80075B9126EFF01F5B02E7 +B548C7FC02E314F802E014E0DB0FFEC8FC92CAFCAFB612C0A53B467CB044>I<9039FF80 +3FE0B5EBFFF8028113FE02837FDA87E11380EC8F830003D99F0713C06C139E14BCA214F8 +A24A6C13806F13004A6C5A93C7FCA45CB3A7B612E0A52A317CB032>114 D<90390FFF8070017FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90 C712035A1501A27FA213E06D90C7FC13FE387FFFF0ECFFC015F06C14FC6C14FF6C15806C 15C06C15E0C615F0013F14F8010714FCEB007F14019138003FFE150F0078140700F81403 @@ -432,17 +500,20 @@ A26C1401A37E16FC6C14036D14F87F6DEB07F001F8EB1FE001FFEBFFC091B51280D8FC7F 1FFE01F0010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I -I -119 D<007FB500C090387FFFE0A5C601F0C73803F8006E5D017F5E6E1407013F5E6E140F -011F5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13FC6D5DEDF0016D5DEDF80302 -7F5C15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF6E13BE16FE6E5BA36E5BA26E -5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F8013FC486C5B387FE001D8FFF0 -5B14035D14074A5A49485A007F49CAFCEBC07E383F81FC6CB45A6C5B6C13C0C648CBFC3B -467EAF41>121 D E +III<007FB500C090387FFFE0A5C601F0C73803F8006E5D +017F5E6E1407013F5E6E140F011F5E6E141FA26D6D91C7FC5F6D153E6F137E6D157C6F13 +FC6D5DEDF0016D5DEDF803027F5C15FC1607DA3FFE5B160F021F5CEDFF1F6E91C8FC16BF +6E13BE16FE6E5BA36E5BA26E5BA26F5AA26F5AA26F5AA393C9FC5D153E157E157CD81F80 +13FC486C5B387FE001D8FFF05B14035D14074A5A49485A007F49CAFCEBC07E383F81FC6C +B45A6C5B6C13C0C648CBFC3B467EAF41>121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fk cmtt12 14.4 5 /Fk 5 115 df114 D E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fn cmtt10 10.95 84 -/Fn 84 126 df<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F +%DVIPSBitmapFont: Fn cmtt10 10.95 86 +/Fn 86 127 df<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F 003C131E00101304191C75B830>34 D<903907C007C0A2496C487EA8011F131FA202C05B A3007FB7FCA2B81280A36C16006C5D3A007F807F80A2020090C7FCA9495BA2003F90B512 FE4881B81280A36C1600A22701FC01FCC7FCA300031303A201F85BA76C486C5AA229387D @@ -814,117 +885,122 @@ D87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D130FA26D131F6C 6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E0253A7BB830>I< 007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7EA2821780163F A6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001F8C9FCB0387F -FFC0B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C812603F8017F91 -38003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7 -FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFF -F8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 -D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813 -7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C -14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07 -F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016 -0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4 -3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I< -3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C -6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038 -007FFCEC1FF02F3980B730>III89 D<001FB612FC4815FE5AA490C7EA03FCED07F816F0150FED1FE016C015 -3FED7F80003E1500C85A4A5A5D14034A5A5D140F4A5A5D143F4A5A92C7FC5C495A5C1303 -495A5C130F495A5C133F495A91C8FC5B4848147C4914FE1203485A5B120F485A5B123F48 -5A90B6FCB7FCA46C15FC27387CB730>I<127CA212FEA27EA26C7EA26C7EA26C7EA26C7E -A26C7EA26C7EA212017FA26C7EA26D7EA26D7EA26D7EA26D7EA26D7EA26D7EA2130180A2 -6D7EA26E7EA26E7EA26E7EA26E7EA26E7EA26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2 -ED1FE0A2ED0FF0A2ED07F8A21503A2ED01F0150025477BBE30>92 -D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D<1338137CEA01FE12031207EA0F -FC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EAFFC013E013F0127FA2123FA2EA1F -E0EA07C00F1D70BE30>IIII<913801FFE04A7F5CA28080EC0007AAEB03FE90381FFF87 -4913E790B6FC5A5A481303380FFC00D81FF0133F49131F485A150F4848130790C7FCA25A -A25AA87E6C140FA27F003F141F6D133F6C7E6D137F390FF801FF2607FE07EBFFC06CB712 -E06C16F06C14F76D01C713E0011F010313C0D907FCC8FC2C397DB730>I<49B4FC010713 -E0011F13F8017F7F90B57E488048018113803A07FC007FC04848133FD81FE0EB1FE0150F -484814F0491307127F90C7FCED03F85A5AB7FCA516F048C9FC7E7EA27F003FEC01F06DEB -03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C90B5FC6C15C0013F14806DEBFE00 -010713F8010013C0252A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E0 -91C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB612C04815E0B7FCA27E6C15C02339 -7AB830>III<387FFFF8B57EA47EEA -0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I<02FC137E3B7FC3FF01FF80D8 -FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07EB03F801FC13FE9039F803FC -01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548018F13C0A46C486C0107138032 -2881A730>II<49B4FC010F13E0013F13F8497F90B5 -7E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0FF0A24848EB07F8491303007F -15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303003F15F86D13076D130F6C6CEB -1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15006C6C13FC6D5B010F13E00101 -90C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880 -A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038 -000FFF02001380007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF -0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D13 -0700005DA26D130F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2EC -E0FE01075BA214F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3F -FFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157E -A56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3 -017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81 -FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8 -EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380F -E3F0ECC1F890381F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80 -B5FCB500C1148014E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0 -B515E0A26C16C06C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151F -D91F805BA214C0010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9EC -FDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EB -C3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815 -FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A -4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A48 -5A485A485A48B7FCB8FCA46C15FE28277DA630>II125 D E +FFC0B57EA46C5B29387EB730>I<90383FFFE048B512FC000714FF4815804815C04815E0 +EBF80001E0133F4848EB1FF049130F90C71207A44815F8481403B3A8147E14FE6CEBFF07 +6C15F0EC7F87A2EC3FC7018013CF9038C01FFFD83FE014E0EBF80F90B6FC6C15C06C1580 +6C1500000114FCD8003F7FEB00016E7EA21680157F16C0153F16E0151F16F0150FED07E0 +25467BB830>I<003FB57E4814F0B612FC15FF6C816C812603F8017F9138003FF0151F6F +7E15071503821501A515035E1507150F4B5A153F4AB45A90B65A5E93C7FC5D8182D9F800 +7FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003FB4801C0EBFFF8B56C7E17F06C +496C13E06C49EB7FC0C9EA1F002E397FB730>I<90390FF803C0D97FFF13E048B512C748 +14F74814FF5A381FF80F383FE001497E4848137F90C7123F5A48141FA2150FA37EED07C0 +6C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C14E0000114F86C80011F13FF01031480D9 +003F13C014019138007FE0151FED0FF0A2ED07F8A2007C140312FEA56C140716F07F6DEB +0FE06D131F01F8EB3FC001FF13FF91B51280160000FD5CD8FC7F13F8D8F81F5BD8780113 +80253A7BB830>I<003FB712C04816E0B8FCA43AFE003F800FA8007CED07C0C791C7FCB3 +B1011FB5FC4980A46D91C7FC2B387EB730>I<3B7FFFC007FFFCB56C4813FEA46C496C13 +FCD803F8C7EA3F80B3B16D147F00011600A36C6C14FE6D13016D5CEC800390393FE00FF8 +90391FF83FF06DB55A6D5C6D5C6D91C7FC9038007FFCEC1FF02F3980B730>III89 D<001FB612FC4815FE5A +A490C7EA03FCED07F816F0150FED1FE016C0153FED7F80003E1500C85A4A5A5D14034A5A +5D140F4A5A5D143F4A5A92C7FC5C495A5C1303495A5C130F495A5C133F495A91C8FC5B48 +48147C4914FE1203485A5B120F485A5B123F485A90B6FCB7FCA46C15FC27387CB730>I< +127CA212FEA27EA26C7EA26C7EA26C7EA26C7EA26C7EA26C7EA212017FA26C7EA26D7EA2 +6D7EA26D7EA26D7EA26D7EA26D7EA2130180A26D7EA26E7EA26E7EA26E7EA26E7EA26E7E +A26E7EA2140181A26E7EA2ED7F80A2ED3FC0A2ED1FE0A2ED0FF0A2ED07F8A21503A2ED01 +F0150025477BBE30>92 D<007FB612F0A2B712F8A36C15F0A225077B7D30>95 +D<1338137CEA01FE12031207EA0FFC13F0EA1FE013C0EA3F8013005A127EA212FE5AA5EA +FFC013E013F0127FA2123FA2EA1FE0EA07C00F1D70BE30>II< +EA3FFC487E12FFA2127F123F1200AAEC03FE91381FFF80027F13E091B57E90B612FC82EC +FE079138F001FF4A6C13804A137F4AEB3FC091C7121F17E049140FA217F01607A8160FA2 +17E07F161F6EEB3FC0A26EEB7F806E13FFDAF00313009138FC0FFE91B55A5E495CD97E7F +13C0D93C1F90C7FC90380003FC2C3980B730>II<913801FFE04A7F5CA2 +8080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0133F4913 +1F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E6D137F39 +0FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0D907FCC8 +FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E488048018113803A07FC00 +7FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7FCA516F0 +48C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FFC07FE06C +90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII<14 +E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3A9003FB6 +12C04815E0B7FCA27E6C15C023397AB830>III<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730> +I<02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE +07EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B548 +018F13C0A46C486C01071380322881A730>II<49B4 +FC010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB +0FF0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D1303 +003F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C15 +006C6C13FC6D5B010F13E0010190C7FC272A7CA830>II114 D<90381FFC1E48B5129F000714FF5A5A5A +387FF007EB800100FEC7FC4880A46C143E007F91C7FC13E06CB4FC6C13FC6CEBFF806C14 +E0000114F86C6C7F01037F9038000FFF02001380007C147F00FEEC1FC0A2150F7EA27F15 +1F6DEB3F806D137F9039FC03FF0090B6FC5D5D00FC14F0D8F83F13C026780FFEC7FC222A +79A830>III<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C49 +6C13803B01F80003F000A26D130700005DA26D130F017E5CA2017F131F6D5CA2EC803F01 +1F91C7FCA26E5A010F137EA2ECE0FE01075BA214F101035BA3903801FBF0A314FF6D5BA3 +6E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D4813F0B515F8A26C16F06C496C13E0D8 +07E0C7EA3F00A26D5C0003157EA56D14FE00015DEC0F80EC1FC0EC3FE0A33A00FC7FF1F8 +A2147DA2ECFDF9017C5C14F8A3017E13FBA290393FF07FE0A3ECE03FA2011F5C90390F80 +0F802D277FA630>I<3A3FFF81FFFC4801C37FB580A26C5D6C01815BC648C66CC7FC137F +EC80FE90383F81FC90381FC3F8EB0FE3ECE7F06DB45A6D5B7F6D5B92C8FC147E147F5C49 +7F81903803F7E0EB07E790380FE3F0ECC1F890381F81FC90383F80FE90387F007E017E13 +7F01FE6D7E48486D7E267FFF80B5FCB500C1148014E3A214C16C0180140029277DA630> +I<3B3FFFC07FFF80486DB512C0B515E0A26C16C06C496C13803B01FC0003F000A2000014 +076D5C137E150F017F5C7F151FD91F805BA214C0010F49C7FCA214E00107137EA2EB03F0 +157C15FCEB01F85DA2EB00F9ECFDF0147D147FA26E5AA36E5AA35DA2143F92C8FCA25C14 +7EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0EBFFE06C5B5C6C90C9FC6C5AEA01F02B +3C7EA630>I<001FB612FC4815FE5AA316FC90C7EA0FF8ED1FF0ED3FE0ED7FC0EDFF8000 +3E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A495A495A495A495A495A49 +48133E4890C7127F485A485A485A485A485A48B7FCB8FCA46C15FE28277DA630>II125 +D<017C133848B4137C48EB80FE4813C14813C348EBEFFC397FEFFFF0D8FF8713E0010713 +C0486C1380D87C0113003838007C1F0C78B730>I E %EndDVIPSBitmapFont %DVIPSBitmapFont: Fo cmsl10 10.95 35 /Fo 35 123 dfI E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fp cmbx12 17.28 48 -/Fp 48 122 df45 D<16F04B7E1507151F153FEC01FF1407147F +%DVIPSBitmapFont: Fp cmbx12 17.28 47 +/Fp 47 122 df45 D<16F04B7E1507151F153FEC01FF1407147F 010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 D<913801FFF8021FEBFFC091B612F8010315FF010F16C0013F8290267FFC0114F89027FF E0003F7F4890C7000F7F48486E7FD807F86E148048486E14C048486E14E048486F13F001 @@ -1083,137 +1159,128 @@ A35AA35C48913801FFE0030F13FE033F6D7E4B14E092B612F89126E1FE037FB53AE3F000 E01AC01A801A00A248606161616101E0C9123F01804C5A48CA485A4D90C7FC60007E4C5A 17074D5A4D5A4D5A485F4D5A17FF4C90C8FCC9485A5F4C5A160F4C5A5F163F4C5A16FF5F 5D94C9FC5D5D5E150FA24B5AA2153FA24B5AA215FFA34A5BA25CA35CA44A5BA45CA65CAD -6E5BA26E5BDA03FECAFC6E5A456377E051>I<92383FFF800203B512FC021FECFF80027F -15E049B712F849D9F0077F010F90C76C7ED91FFCEC1FFFD93FF06E7F494802037F494882 -717F484980854890C9127FA24884183FA25A80A380806E157F6E5E14FE6E7E6F4A5A6C14 -F003FC495B03FF495B6C1580DCE0075B6CDBF80F90C7FC9338FE1FFE6C9238FF7FF84D5A -6D16C06D5E6D4BC8FC6D6F7E6D16E00101826D16FC023F814A8149B87E01078349839026 -3FFE3F8190267FFC0F819026FFF003814849C6FC48496D804849131F4890C70007801601 -48486E1580003F163F49150F007F7014C0491501717E8400FF835B8484A384A21A80A27F -007F1900607F003F606D160F001F606D4C5A6C6D153F6C6D4B5A6C01F04B5A6C01FC0203 -5B6C01FF021F5B6D9027F001FFFEC7FC6D90B65A010F16F001035E010093C8FC020F14F8 -DA007F90C9FC426079DD51>I65 DI<4DB5ED03C0057F02F014070407B600FE140F04 -7FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6C73807FF814A -02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01F08291B54882 -490280824991CB7E49498449498449498449865D49498490B5FC484A84A2484A84A24891 -CD127FA25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380A27EA2F50FC0A26C -7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A7F6D6D4E5A6D -6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F01FFEE07FE6E -02C0ED1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380030F91B648C8FC03 -0117F86F6C16E004071680DC007F02F8C9FC050191CAFC626677E375>III<4DB5ED03C0057F02F014070407B600FE -140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6C73807 -FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01F08291 -B54882490280824991CB7E49498449498449498449865D49498490B5FC484A84A2484A84 -A24891CD127FA25A4A1A3F5AA348491A1FA44899C8FCA25CA3B5FCB07E071FB812F880A3 -7EA296C70001ECC000A26C7FA37E807EA26C80A26C80A26C807F6D7F816D7F7F6D7F6D6D -5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0ED7FEF020102F8EDFFC76E02FF0207 -1383033F02FC013F1301030F91B638FC007F03014D131F6F6C04E01307040704801301DC -007F02F8CAFC050191CBFC6D6677E37F>71 DII75 -DI78 D80 D82 -DI<001FBEFCA64849C79126E0000F1480 -02E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181FA400 -7E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>II<913803FFFE027FEBFFF001 -03B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F717E -486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207B7FC -147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C485B5A -5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE114FF -6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9001F -90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF80047F14 -F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02007F -03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA44F13 -F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C495B91 -26F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C7001F91 -C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E0103 -9039FE001FFF4901F8010113804901E0010713C04901804913E0017F90C7FC49484A13F0 -A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE7EA2 -80A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC1FC0 -6D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D020F -1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512FC020FECFF80023F15 -E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F4948 -6E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA41A00 -02C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17016D -6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D6C90 -B55A021F15F8020715E0020092C8FC030713F041437CC14A>III< -903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267FE07F -7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC825D -A25DA25DA45DB3B2B7D8F007B71280A651647BE35A>II<903807FF80B6FCA6C6FC7F7FB3A90503B612 -80A6DD003FEB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D90C8FCEF07FC4D5AEF3FF04D -5A4D5A4C90C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F03877F158F039F7F03BF7F92 -B5FC838403FC804B7E03F0804B6C7F4B6C7F1580707F707F707FA270807080717FA2717F -717F717FA2717F717F83867180727F95B57EB7D8E00FECFFF0A64C647BE355>107 +6E5BA26E5BDA03FECAFC6E5A456377E051>I65 DI<4DB5ED03C0057F02F014070407 +B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF92B6 +C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16074A01 +F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC484A84A2 +484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380A27E +A2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F4E5A +7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC020F +01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380030F +91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC050191CAFC626677E375>I< +BB12E0F2FF801BF01BFE757E1CF0D800010280C7000780DF007F13FE080F6D7E08018074 +80093F7F090F13FC757F757F877580767F8A88767F8A888AA2767FA28A881F80A37614C0 +A41FE0A5881FF0B05214E0A51FC0A4521480A31F006466A2525BA2525BA2525B666499B5 +5A515C5191C7FC515B515B515B097F5B50B512C008075C083F91C8FC0707B512FCBD12F0 +1CC051C9FC1BF81B8008E0CAFC6C627AE17C>II<4DB5ED03C0057F02F014 +070407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13 +FF92B6C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC16 +074A01F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC48 +4A84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C8FCA25CA3B5FCB07E07 +1FB812F880A37EA296C70001ECC000A26C7FA37E807EA26C80A26C80A26C807F6D7F816D +7F7F6D7F6D6D5F6D14C06D6E5E6E7F6E01FC5E020F01FF5E6E02C0ED7FEF020102F8EDFF +C76E02FF02071383033F02FC013F1301030F91B638FC007F03014D131F6F6C04E0130704 +0704801301DC007F02F8CAFC050191CBFC6D6677E37F>71 D +II75 D +I78 D80 D82 DI<001FBEFCA64849C79126E0000F +148002E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181F +A4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>II<913803FFFE027FEBFF +F00103B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F +717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207 +B7FC147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C48 +5B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE1 +14FF6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9 +001F90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF8004 +7F14F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02 +007F03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA4 +4F13F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C49 +5B9126F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C700 +1F91C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E +01039039FE001FFF4901F8010113804901E0010713C04901804913E0017F90C7FC49484A +13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE +7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC +1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D +020F1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512FC020FECFF8002 +3F15E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F +49486E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA4 +1A0002C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17 +016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D +6C90B55A021F15F8020715E0020092C8FC030713F041437CC14A>III<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267F +E07F7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC +825DA25DA25DA45DB3B2B7D8F007B71280A651647BE35A>II<903807FF80B6FCA6C6FC7F7FB3A90503 +B61280A6DD003FEB8000DE0FFCC7FCF01FF04E5AF0FFC04D5B4D90C8FCEF07FC4D5AEF3F +F04D5A4D5A4C90C9FC4C5AEE0FFC4C5A4C5AEE7FC04C7E03837F03877F158F039F7F03BF +7F92B5FC838403FC804B7E03F0804B6C7F4B6C7F1580707F707F707FA270807080717FA2 +717F717F717FA2717F717F83867180727F95B57EB7D8E00FECFFF0A64C647BE355>107 D<903807FF80B6FCA6C6FC7F7FB3B3B3B3ADB712E0A623647BE32C>I<902607FF80D91F FFEEFFF8B691B500F00207EBFF80040702FC023F14E0041F02FF91B612F84C6F48819326 7FE07F6D4801037F922781FE001F9027E00FF0007FC6DA83F86D9026F01FC06D7F6DD987 @@ -1536,8 +1603,8 @@ A26F5AA26F5AA26F5AA26F5AA35E150F5E151F93C9FC5DD81FC0133E486C137E486C137C 486C13FC5D14015D14034A5A6C48485A49485A263FC07FCAFCEB81FE6CB45A6C13F00003 5BC690CBFC404D7DB447>I E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fs cmr10 10.95 86 -/Fs 86 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 +%DVIPSBitmapFont: Fs cmr10 10.95 85 +/Fs 85 125 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 DII<121EEA7F80EAFFC0A9EA7F80ACEA3F00AC -121EAB120CC7FCA8121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A4179C019>33 -D<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E600F30000013 -00A401E01370491360A3000114E04913C00003130101001380481303000EEB070048130E -0018130C0038131C003013181C1C7DBE2D>I<4B6C130C4B6C131EA20307143EA24C133C -A2030F147CA293C71278A24B14F8A2031E5CA2033E1301A2033C5CA3037C1303A203785C -A203F81307A24B5CA20201140F007FBAFCBB1280A26C1900C72707C0003EC8FC4B133CA3 -020F147CA292C71278A24A14F8A2021E5CA3023E1301007FBAFCBB1280A26C1900C727F8 -0007C0C8FC4A5CA20101140FA24A91C9FCA301035CA24A131EA20107143EA24A133CA201 -0F147CA291C71278A34914F8A2011E5CA2013E1301A2013C5CA201186D5A41517BBE4C> -I<14E0A4EB07FC90383FFF8090B512E03901F8E3F03903E0E0FCD807C0133CD80F807FD8 -1F007F003E80003C1580007C140316C00078141F00F8143F157FA47EED3F806CEC0E0092 -C7FC127F138013C0EA3FF013FEEA1FFF6C13FC6C13FF6C14C06C806C6C13F8011F7F1303 -01007FECE7FF14E102E01380157F153FED1FC0A2003E140F127FD8FF801307A5130000FC -158000F0140F1270007815005D6C141E153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280 -D93FFEC7FCEB0FF8EB00E0A422497BC32D>I38 -D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A -120E5A1218123812300B1C79BE19>I<1430147014E0EB01C0EB03801307EB0F00131E13 -3E133C5B13F85B12015B1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12 -FCB2127C127EA6123E123FA37EA27F120FA27F1207A26C7EA212017F12007F13787F133E -131E7FEB07801303EB01C0EB00E014701430145A77C323>I<12C07E12707E7E121E7E6C -7E7F12036C7E7F12007F1378137CA27FA2133F7FA21480130FA214C0A3130714E0A61303 -14F0B214E01307A614C0130FA31480A2131F1400A25B133EA25BA2137813F85B12015B48 -5A12075B48C7FC121E121C5A5A5A5A145A7BC323>II<121EEA7F8012FF13C0A213E0A312 -7FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B1C798919> -44 DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919> -IIIIII<150E151E153EA2157EA215FE1401A21403EC077E14 -06140E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B120148 -5A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I< -00061403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE -90380FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC813C0A216 -E0150FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F80123C -6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC -2D>II<1238123C123F90B612FCA3 -16F85A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8127015F0 -4A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3130F5CA2 -131FA6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F -80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779 -A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A412 -7F121E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A619>I<00 -7FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0A26C18E03C167BA147>61 -D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A291380381FEA34AC6 -7EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA24981913880 -0001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA2017882170F13 -FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>65 DIIIIIIII<011FB512FCA3D9000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380D8 -7F005B007C130700385C003C495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC026407C -BD2F>II -IIIIIIII<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E1707127C -00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D7DBC42> -IIII<007FB5D8C003B512E0A3C649C7EBFC00D93FF8EC3FE06D48EC -1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D13F04C5ADA7FC05B023F1303 -6F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C5A913801FF7016F06E5B6F5A -A26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801C07F0203804B6C7EEC07004A -6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F130149486E7E4A6E7E130749C8 -6C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B512FEA33F3E7EBD44>II91 D<486C13C00003130101001380481303000EEB070048130E0018130C00 -38131C003013180070133800601330A300E01370481360A400CFEB678039FFC07FE001E0 -13F0A3007F133FA2003F131F01C013E0390F0007801C1C73BE2D>II96 -DII< -49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A5B121FA248 -48EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316806C6C1307 -6C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC222A7DA828 ->IIII<167C903903F801FF903A1FFF078F8090397E0FDE1F9038 -F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F147E6D13FE00 -075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC120EA3120FA2 -7F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE003E14004815 -7E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0D800FE017F -C7FC90383FFFFC010313C0293D7EA82D>III<1478EB01FEA2EB -03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F38FF807E14 -FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FFC0 -0313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603F9C06D487F -000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CECFF80B5D8F8 -7FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E091387803F0 -00079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8 -F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F8131F4848EB0F -804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA44815FFA96C -15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D800 -7EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC00FF90381F -FF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F805BEE1FC0 -17E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13FE9138C001 -F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A32D3A7EA733 ->I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E4848EB0FFC -150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E15076C6C13 -0F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD4B7E92B512 -F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C100031381EA01FB -1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<90383FC0603901 -FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E7E7E6D1300 -EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB001FEC0FF8 -00E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3E01F0038E0 -FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207001FB512C0 -B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F8700EB07FE -EB01F81B397EB723>IIIIII<001FB61280 -A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A147F5D4AC7FC -C6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B4848130712074914 -00485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I124 D E +FF80B5D8F87FD9FC3F13FEA347407EBF4C>I<001E130F397F803FC000FF137F01C013E0 +A201E013F0A3007F133F391E600F3000001300A401E01370491360A3000114E04913C000 +03130101001380481303000EEB070048130E0018130C0038131C003013181C1C7DBE2D> +34 D<4B6C130C4B6C131EA20307143EA24C133CA2030F147CA293C71278A24B14F8A203 +1E5CA2033E1301A2033C5CA3037C1303A203785CA203F81307A24B5CA20201140F007FBA +FCBB1280A26C1900C72707C0003EC8FC4B133CA3020F147CA292C71278A24A14F8A2021E +5CA3023E1301007FBAFCBB1280A26C1900C727F80007C0C8FC4A5CA20101140FA24A91C9 +FCA301035CA24A131EA20107143EA24A133CA2010F147CA291C71278A34914F8A2011E5C +A2013E1301A2013C5CA201186D5A41517BBE4C>I<14E0A4EB07FC90383FFF8090B512E0 +3901F8E3F03903E0E0FCD807C0133CD80F807FD81F007F003E80003C1580007C140316C0 +0078141F00F8143F157FA47EED3F806CEC0E0092C7FC127F138013C0EA3FF013FEEA1FFF +6C13FC6C13FF6C14C06C806C6C13F8011F7F130301007FECE7FF14E102E01380157F153F +ED1FC0A2003E140F127FD8FF801307A5130000FC158000F0140F1270007815005D6C141E +153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280D93FFEC7FCEB0FF8EB00E0A422497BC3 +2D>I38 D<121EEA7F8012FF13C0A213E0A3127FEA1E601200A4 +13E013C0A312011380120313005A120E5A1218123812300B1C79BE19>I<1430147014E0 +EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B1203A2485AA2120F5BA2121F +90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E123FA37EA27F120FA27F1207A2 +6C7EA212017F12007F13787F133E131E7FEB07801303EB01C0EB00E014701430145A77C3 +23>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F1378137CA27FA2133F7FA214 +80130FA214C0A3130714E0A6130314F0B214E01307A614C0130FA31480A2131F1400A25B +133EA25BA2137813F85B12015B485A12075B48C7FC121E121C5A5A5A5A145A7BC323>I< +EB03C0A2805CA600F0140F00FC143F00FE147F00FF14FF393FC3C3FC390FE187F03903F1 +8FC03900FDBF00EB3FFCEB0FF0EB03C0EB0FF0EB3FFCEBFDBF3903F18FC0390FE187F039 +3FC3C3FC39FF03C0FF00FE147F00FC143F00F0140F00001400A6805CA220277AC32D>I< +121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013C0A312011380120313005A12 +0E5A1218123812300B1C798919>44 DI<121EEA7F80A2EAFFC0 +A4EA7F80A2EA1E000A0A798919>III +III<150E151E153EA2 +157EA215FE1401A21403EC077E1406140E141CA214381470A214E0EB01C0A2EB0380EB07 +00A2130E5BA25B5BA25B5B1201485A90C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00 +AC4A7E49B6FCA3283E7EBD2D>I<00061403D80780131F01F813FE90B5FC5D5D5D15C092 +C7FC14FCEB3FE090C9FCACEB01FE90380FFF8090383E03E090387001F8496C7E49137E49 +7F90C713800006141FC813C0A216E0150FA316F0A3120C127F7F12FFA416E090C7121F12 +FC007015C012780038EC3F80123C6CEC7F00001F14FE6C6C485A6C6C485A3903F80FE0C6 +B55A013F90C7FCEB07F8243F7CBC2D>II<1238123C123F90B612FCA316F85A16F016E00078C712010070EC03C0ED07801600 +5D48141E151C153C5DC8127015F04A5A5D14034A5A92C7FC5C141EA25CA2147C147814F8 +A213015C1303A31307A3130F5CA2131FA6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2 +EAFFC0A4EA7F80A2EA1E000A2779A619>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7 +FCB3121E127FEAFF80A213C0A4127F121E1200A412011380A3120313005A1206120E120C +121C5A1230A20A3979A619>I<007FB912E0BA12F0A26C18E0CDFCAE007FB912E0BA12F0 +A26C18E03C167BA147>61 D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC +15C3A291380381FEA34AC67EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA34948 +6D7E91B6FCA249819138800001A249C87EA24982010E157FA2011E82011C153FA2013C82 +0138151FA2017882170F13FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044> +65 DIIIII +III<011FB512FCA3D9000713006E5A1401B3B3A6123F +EA7F80EAFFC0A44A5A1380D87F005B007C130700385C003C495A6C495A6C495A2603E07E +C7FC3800FFF8EB3FC026407CBD2F>IIIIIIIIII<003FB91280A3903AF0007FE001018090393FC000 +3F48C7ED1FC0007E1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E +0107B612FEA33B3D7DBC42>IIII<007FB5D8C003B512E0A3C649C7 +EBFC00D93FF8EC3FE06D48EC1F806D6C92C7FC171E6D6C141C6D6C143C5F6D6C14706D6D +13F04C5ADA7FC05B023F13036F485ADA1FF090C8FC020F5BEDF81E913807FC1C163C6E6C +5A913801FF7016F06E5B6F5AA26F7E6F7EA28282153FED3BFEED71FF15F103E07F913801 +C07F0203804B6C7EEC07004A6D7E020E6D7E5C023C6D7E02386D7E14784A6D7E4A6D7F13 +0149486E7E4A6E7E130749C86C7E496F7E497ED9FFC04A7E00076DEC7FFFB500FC0103B5 +12FEA33F3E7EBD44>II91 D<486C13C0000313010100138048130300 +0EEB070048130E0018130C0038131C003013180070133800601330A300E01370481360A4 +00CFEB678039FFC07FE001E013F0A3007F133FA2003F131F01C013E0390F0007801C1C73 +BE2D>II96 DII<49B4FC010F13E090383F00F8017C131E4848131F4848137F0007ECFF80485A +5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB6C7EA3003FEC01C07F001F140316 +806C6C13076C6C14000003140E6C6C131E6C6C137890383F01F090380FFFC0D901FEC7FC +222A7DA828>IIII<167C903903F801FF903A1FFF078F8090397E +0FDE1F9038F803F83803F001A23B07E000FC0600000F6EC7FC49137E001F147FA8000F14 +7E6D13FE00075C6C6C485AA23901F803E03903FE0FC026071FFFC8FCEB03F80006CAFC12 +0EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C810003813A0FC0001FFC48C7EA01FE00 +3E140048157E825A82A46C5D007C153E007E157E6C5D6C6C495A6C6C495AD803F0EB0FC0 +D800FE017FC7FC90383FFFFC010313C0293D7EA82D>III<1478 +EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7FFFA313017F147FB3B3A5123E127F +38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07C0380FFF803801FC00185185BD1C +>III<2701F801FE14FF00FF +902707FFC00313E0913B1E07E00F03F0913B7803F03C01F80007903BE001F87000FC2603 +F9C06D487F000101805C01FBD900FF147F91C75B13FF4992C7FCA2495CB3A6486C496CEC +FF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F801FE00FF903807FFC091381E07E0 +91387803F000079038E001F82603F9C07F0001138001FB6D7E91C7FC13FF5BA25BB3A648 +6C497EB5D8F87F13FCA32E287DA733>I<14FF010713E090381F81F890387E007E01F813 +1F4848EB0F804848EB07C04848EB03E0000F15F04848EB01F8A2003F15FCA248C812FEA4 +4815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03F0A26C6CEB07E06C6CEB0FC06C6C +EB1F80D8007EEB7E0090383F81FC90380FFFF0010090C7FC282A7EA82D>I<3901FC03FC +00FF90381FFF8091387C0FE09039FDE003F03A07FFC001FC6C496C7E6C90C7127F49EC3F +805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1FE0A2EE3FC06D1580EE7F007F6E13 +FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7FCEC07F891C9FCAD487EB512F8A3 +2D3A7EA733>I<02FF131C0107EBC03C90381F80F090397F00387C01FC131CD803F8130E +4848EB0FFC150748481303121F485A1501485AA448C7FCAA6C7EA36C7EA2001F14036C7E +15076C6C130F6C7E6C6C133DD8007E137990383F81F190380FFFC1903801FE0190C7FCAD +4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB1FF8EC787CECE1FE3807F9C10003 +1381EA01FB1401EC00FC01FF1330491300A35BB3A5487EB512FEA31F287EA724>I<9038 +3FC0603901FFF8E03807C03F381F000F003E1307003C1303127C0078130112F81400A27E +7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480000114C0D8003F13E0010313F0EB +001FEC0FF800E01303A214017E1400A27E15F07E14016C14E06CEB03C0903880078039F3 +E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA6133CA4137CA213FCA2120112031207 +001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038FE01C0A2EB7F03013F138090381F +8700EB07FEEB01F81B397EB723>IIIIII< +001FB61280A2EBE0000180140049485A001E495A121C4A5A003C495A141F00385C4A5A14 +7F5D4AC7FCC6485AA2495A495A130F5C495A90393FC00380A2EB7F80EBFF005A5B484813 +071207491400485A48485BA248485B4848137F00FF495A90B6FCA221277EA628>I124 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ft cmtt12 20.736 5 /Ft 5 115 df<923807FFC0033F13FC4AB67E020715E0021F15F8027F8191B8FC010383 @@ -1844,29 +1909,32 @@ EF3FF8261FFFFC0103B5FC4801FF011F14E048037F14F8B60081B612FE038381038F16C0 A27EA27E000713F36C13E3C61383EB00031407A215E0A3140FA215C0141FA2EC3F80A214 7F15005C5C1301495A5C1307495A495A133F495A495A4890C7FC485A485A485A5B6C5AEA 01801C3A72F736>39 D<137F3801FFC0000713F0487F487F487F487FA2B61280A96C1400 -A26C5B6C5B6C5B6C5B000113C06C6CC7FC1919729836>46 D<92380FFFE04AB67E020F15 -F0027F15FE49B87E4917E0010F17F8013F8349D9C01F14FF9027FFFC0001814801E06D6C -80480180021F804890C86C8048486F8048486F8001FF6F804801C06E8002F081486D1880 -6E816E18C0B5821BE06E81A37214F0A56C5BA36C5B6C5B6C5B000313C0C690C9FC90CA15 -E060A34E14C0A21B80601B0060626295B55A5F624D5C624D5C4D91C7FC614D5B4D13F04D -5B6194B55A4C49C8FC4C5B4C5B4C13E04C5B604C90C9FCEE7FFC4C5A4B5B4B5B4B0180EC -0FF04B90C8FC4B5A4B5A4B48ED1FE0EDFFE04A5B4A5B4A90C9FC4A48163F4A5ADA3FF017 -C05D4A48167F4A5A4990CA12FFD903FC160749BAFC5B4919805B5B90BBFC5A5A5A5A481A -005A5ABCFCA462A44C7176F061>50 D55 D<96267FFFE01670063FB6ED01F80503B700F01403053F04 -FC14074CB96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03 -C09039003FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA12 -1F4A02F8834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A -85495C8A4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E07 -5DA2795A489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C8000302F8C7FCA3 -6C80A36C80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E80021F6E5F6E -02F05F6E806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6FDAFFE0021F13 -8703039226FF8003B51201030093B6EAFC00043F4E133F040706E0131F04014E1307DC00 -3F4CC71201050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75F798>71 +A26C5B6C5B6C5B6C5B000113C06C6CC7FC1919729836>46 D48 +D<923801FFFE033FEBFFF84AB7FC020F16E0023F16F84A16FE49B97E49DA003F80010F01 +F0010714F04901800101804948C880D97FF86F7F02E081496C834801FC6F148014FF486E +6E14C08181481AE081A96C5C1BC06C4A5C6C5C6D90C815806D5AD90FF85D90CA15006260 +6295B55A4D5C624D5C4D5C4D91C7FC4D13FC4D5B4CB512E0047F1480037FB548C8FC92B6 +12F818C018F8F0FF806F15F092C7003F13FC050713FF050114C071807213F8727F727F86 +7214801BC07214E01BF0A27214F81BFCA37214FEA31BFFEBFF80000313E0487F001F13FC +487FA2487FA2B67EA31BFEA3601BFCA292C8FC6C1AF84A5D4A18F06C494B14E05C6C01C0 +4B14C06C90C915804E14006C6D4B5B6C01F092B55A6C01FC4A5C27007FFFC001075C6D01 +FE013F14C0010F90B85A6D4DC7FC010117F8D9003F16E0020F93C8FC020015F0030749C9 +FC507378F061>51 D<96267FFFE01670063FB6ED01F80503B700F01403053F04FC14074C +B96C130F040706E0131F043F72133F93BA00FC137F0303DC00076D13FF030F03C0903900 +3FFF814B02FCC8000713C3037F02E0030113F792B600806F6CB5FC02034ACA121F4A02F8 +834A02E0834A4A1701027F4A8391B548CC7E494A85495C4C854988494A85494A85495C8A +4991CDFC90B54886A2484A1B7FA2481E3F5D481E1F5D5A1F0FA2485CA3481E075DA2795A +489BC9FCA45DA2B6FCB27EA26F0403BA12C0A47EA3816C96C8000302F8C7FCA36C80A36C +80A27E817E817E817F6D80827F6D806D806D80826D6E606D806E80021F6E5F6E02F05F6E +806E02FE5F0200DAFFC05E6F02F04BB6FC031F02FE030713CF6FDAFFE0021F1387030392 +26FF8003B51201030093B6EAFC00043F4E133F040706E0131F04014E1307DC003F4CC712 +01050304F8EC0070DD003F038092C8FCDE007F01F0CCFC827A75F798>71 D)27 -b Fs(and)32 b Fn()p -Fs(.)225 1435 y Fq(\017)60 b Fs(Sp)s(ecial)31 b(thanks)i(is)f(extended) -h(to)h(Mic)m(hael)f(Tiemann)f(and)h(Doug)h(Lea,)g(for)f(pro)m(viding)e -(a)j(useful)330 1544 y(compiler,)29 b(and)h(for)g(giving)f(me)i(a)g -(forum)e(to)i(exhibit)e(m)m(y)h(creation.)330 1679 y(In)22 -b(addition,)g(Adam)h(de)f(Bo)s(or)h(and)f(Nels)h(Olson)e(pro)m(vided)g -(man)m(y)i(tips)e(and)h(insigh)m(ts)f(that)i(greatly)330 -1788 y(help)s(ed)28 b(impro)m(v)m(e)j(the)f(qualit)m(y)g(and)g -(functionalit)m(y)e(of)j Fn(gperf)p Fs(.)225 1923 y Fq(\017)60 -b Fs(A)27 b(testsuite)h(w)m(as)f(added)g(b)m(y)g(Bruno)g(Haible.)38 -b(He)28 b(also)f(rewrote)h(the)f(output)g(routines)f(for)h(b)s(etter) -330 2032 y(reliabilit)m(y)-8 b(.)p eop +b Fs(The)45 b(GNU)h Fn(gperf)d Fs(p)s(erfect)j(hash)e(function)g +(generator)j(utilit)m(y)c(w)m(as)j(written)e(in)g(GNU)i(C)p +Fn(++)330 643 y Fs(b)m(y)e(Douglas)h(C.)g(Sc)m(hmidt.)82 +b(The)44 b(general)h(idea)f(for)g(the)h(p)s(erfect)g(hash)e(function)h +(generator)330 752 y(w)m(as)34 b(inspired)c(b)m(y)j(Keith)f(Bostic's)j +(algorithm)d(written)g(in)g(C,)h(and)g(distributed)d(to)k(net.sources) +330 862 y(around)42 b(1984.)79 b(The)42 b(curren)m(t)g(program)h(is)f +(a)h(hea)m(vily)f(mo)s(di\014ed,)h(enhanced,)j(and)c(extended)330 +971 y(implemen)m(tation)36 b(of)h(Keith's)f(basic)h(idea,)h(created)g +(at)g(the)f(Univ)m(ersit)m(y)f(of)i(California,)e(Irvine.)330 +1081 y(Bugs,)31 b(patc)m(hes,)g(and)f(suggestions)g(should)f(b)s(e)g +(rep)s(orted)h(to)h Fn()p Fs(.)225 +1215 y Fq(\017)60 b Fs(Sp)s(ecial)31 b(thanks)i(is)f(extended)h(to)h +(Mic)m(hael)f(Tiemann)f(and)h(Doug)h(Lea,)g(for)f(pro)m(viding)e(a)j +(useful)330 1325 y(compiler,)29 b(and)h(for)g(giving)f(me)i(a)g(forum)e +(to)i(exhibit)e(m)m(y)h(creation.)330 1460 y(In)22 b(addition,)g(Adam)h +(de)f(Bo)s(or)h(and)f(Nels)h(Olson)e(pro)m(vided)g(man)m(y)i(tips)e +(and)h(insigh)m(ts)f(that)i(greatly)330 1569 y(help)s(ed)28 +b(impro)m(v)m(e)j(the)f(qualit)m(y)g(and)g(functionalit)m(y)e(of)j +Fn(gperf)p Fs(.)225 1704 y Fq(\017)60 b Fs(Bruno)26 b(Haible)g +(enhanced)h(and)f(optimized)g(the)h(searc)m(h)h(algorithm.)39 +b(He)27 b(also)g(rewrote)h(the)f(input)330 1813 y(routines)i(and)h(the) +h(output)f(routines)f(for)h(b)s(etter)g(reliabilit)m(y)-8 +b(,)28 b(and)i(added)g(a)h(testsuite.)p eop %%Page: 9 11 9 10 bop 150 -116 a Fs(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2591 b(9)150 299 y Fp(1)80 b(In)l(tro)t(duction)275 533 y @@ -2468,10 +2533,10 @@ Fn(gperf)31 b Fs(is)i(a)g(p)s(erfect)h(hash)e(function)g(generator)j Fo(n)f Fs(elemen)m(t)150 643 y(user-sp)s(eci\014ed)j(k)m(eyw)m(ord)j (set)g Fo(W)49 b Fs(in)m(to)38 b(a)f(p)s(erfect)h(hash)e(function)g Fo(F)p Fs(.)i Fo(F)44 b Fs(uniquely)35 b(maps)i(k)m(eyw)m(ords)150 -752 y(in)k Fo(W)54 b Fs(on)m(to)43 b(the)f(range)h(0..)p -Fo(k)p Fs(,)j(where)c Fo(k)47 b Fn(>)p Fs(=)42 b Fo(n)p -Fs(.)75 b(If)42 b Fo(k)47 b Fs(=)42 b Fo(n)g Fs(then)f -Fo(F)49 b Fs(is)41 b(a)i Fl(minimal)53 b Fs(p)s(erfect)42 +752 y(in)d 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)34 b(a)h Fl(minimal)46 b Fs(p)s(erfect)35 b(hash)150 862 y(function.)67 b Fn(gperf)39 b Fs(generates)i(a)f(0..)p Fo(k)46 b Fs(elemen)m(t)40 b(static)g(lo)s(okup)f(table)g(and)g(a)i (pair)d(of)i(C)f(functions.)150 971 y(These)34 b(functions)f(determine) @@ -2482,15 +2547,17 @@ Fs(o)s(ccurs)c(in)f Fo(W)p Fs(,)i(using)d(at)k(most)150 (k)m(eyw)m(ord)g(recognizer)h(for)e(lexical)g(analyzers)g(in)g(sev)m (eral)150 1325 y(pro)s(duction)29 b(and)h(researc)m(h)h(compilers)e (and)i(language)g(pro)s(cessing)e(to)s(ols,)i(including)c(GNU)32 -b(C,)e(GNU)150 1435 y(C)p Fn(++)p Fs(,)49 b(GNU)d(P)m(ascal,)k(GNU)c -(Mo)s(dula)e(3,)50 b(and)45 b(GNU)h(inden)m(t.)85 b(Complete)45 -b(C)p Fn(++)g Fs(source)g(co)s(de)h(for)150 1544 y Fn(gperf)25 -b Fs(is)g(a)m(v)-5 b(ailable)26 b(via)g(anon)m(ymous)g(ftp)g(from)g -Fn(ftp://ftp.gnu.org/pub/gn)o(u/gp)o(erf/)o Fs(.)34 b(A)26 -b(pap)s(er)150 1654 y(describing)33 b Fn(gperf)p Fs('s)i(design)f(and)h -(implemen)m(tation)f(in)h(greater)i(detail)d(is)h(a)m(v)-5 -b(ailable)35 b(in)f(the)i(Second)150 1763 y(USENIX)30 -b(C)p Fn(++)f Fs(Conference)i(pro)s(ceedings.)p eop +b(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,)i(GNU)f(Mo)s(dula)e(3,)j(and)d(GNU)h(inden)m +(t.)37 b(Complete)23 b(C)p Fn(++)f Fs(source)h(co)s(de)150 +1544 y(for)42 b Fn(gperf)f Fs(is)g(a)m(v)-5 b(ailable)41 +b(from)h 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)h(and)g(implemen)m(tation)g(in)f(greater)j(detail)e(is)g +(a)m(v)-5 b(ailable)39 b(in)g(the)h(Second)f(USENIX)150 +1763 y(C)p Fn(++)29 b Fs(Conference)g(pro)s(ceedings)g(or)h(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 %%Page: 10 12 10 11 bop 150 -116 a Fs(Chapter)30 b(2:)41 b(Static)31 b(searc)m(h)g(structures)e(and)h(GNU)h Fn(gperf)1425 @@ -2501,31 +2568,31 @@ Fs(is)24 b(an)g(Abstract)h(Data)i(T)m(yp)s(e)c(with)h(certain)g Fl(initialize)p Fs(,)g Fl(insert)p Fs(,)f(and)f Fl(r)-5 b(etrieve)p Fs(.)42 b(Conceptually)-8 b(,)30 b(all)g(insertions)f(o)s (ccur)h(b)s(efore)h(an)m(y)g(retriev)-5 b(als.)150 752 -y(In)37 b(practice,)k Fn(gperf)c Fs(generates)j(a)e Fn(static)f -Fs(arra)m(y)h(con)m(taining)g(searc)m(h)h(set)g(k)m(eyw)m(ords)f(and)g -(an)m(y)g(as-)150 862 y(so)s(ciated)33 b(attributes)g(sp)s(eci\014ed)e -(b)m(y)i(the)h(user.)48 b(Th)m(us,)33 b(there)g(is)f(essen)m(tially)h -(no)g(execution-time)g(cost)150 971 y(for)k(the)g(insertions.)58 -b(It)37 b(is)f(a)h(useful)f(data)h(structure)g(for)f(represen)m(ting)g -Fl(static)k(se)-5 b(ar)g(ch)40 b(sets)p Fs(.)61 b(Static)150 -1081 y(searc)m(h)33 b(sets)g(o)s(ccur)f(frequen)m(tly)g(in)f(soft)m(w)m -(are)j(system)f(applications.)45 b(T)m(ypical)32 b(static)h(searc)m(h)g -(sets)g(in-)150 1191 y(clude)27 b(compiler)g(reserv)m(ed)i(w)m(ords,)f -(assem)m(bler)g(instruction)e(op)s(co)s(des,)j(and)f(built-in)d(shell)i -(in)m(terpreter)150 1300 y(commands.)39 b(Searc)m(h)28 -b(set)g(mem)m(b)s(ers,)f(called)g Fo(k)m(eyw)m(ords)p -Fs(,)h(are)g(inserted)e(in)m(to)h(the)h(structure)f(only)f(once,)150 -1410 y(usually)i(during)g(program)i(initialization,)e(and)i(are)g(not)h -(generally)f(mo)s(di\014ed)e(at)j(run-time.)275 1544 -y(Numerous)c(static)h(searc)m(h)h(structure)e(implemen)m(tations)f -(exist,)j(e.g.,)g(arra)m(ys,)g(link)m(ed)e(lists,)g(binary)150 -1654 y(searc)m(h)45 b(trees,)j(digital)42 b(searc)m(h)j(tries,)i(and)c -(hash)g(tables.)82 b(Di\013eren)m(t)44 b(approac)m(hes)h(o\013er)f -(trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e(space)h(utilization)c(and)j -(searc)m(h)g(time)f(e\016ciency)-8 b(.)76 b(F)-8 b(or)42 -b(example,)j(an)c Fo(n)h Fs(elemen)m(t)g(sorted)150 1873 -y(arra)m(y)e(is)f(space)i(e\016cien)m(t,)h(though)e(the)g(a)m(v)m -(erage-case)k(time)39 b(complexit)m(y)h(for)g(retriev)-5 +y(In)20 b(practice,)k Fn(gperf)19 b Fs(generates)k(a)e +Fl(static)27 b Fs(arra)m(y)22 b(con)m(taining)e(searc)m(h)i(set)f(k)m +(eyw)m(ords)h(and)e(an)m(y)h(asso)s(ciated)150 862 y(attributes)36 +b(sp)s(eci\014ed)f(b)m(y)i(the)f(user.)59 b(Th)m(us,)37 +b(there)g(is)f(essen)m(tially)f(no)i(execution-time)g(cost)g(for)g(the) +150 971 y(insertions.)h(It)27 b(is)f(a)h(useful)f(data)h(structure)g +(for)g(represen)m(ting)f Fl(static)k(se)-5 b(ar)g(ch)32 +b(sets)p Fs(.)40 b(Static)27 b(searc)m(h)h(sets)150 1081 +y(o)s(ccur)c(frequen)m(tly)g(in)f(soft)m(w)m(are)j(system)e +(applications.)37 b(T)m(ypical)23 b(static)i(searc)m(h)g(sets)g +(include)d(compiler)150 1191 y(reserv)m(ed)42 b(w)m(ords,)j(assem)m +(bler)d(instruction)e(op)s(co)s(des,)45 b(and)c(built-in)e(shell)i(in)m +(terpreter)g(commands.)150 1300 y(Searc)m(h)h(set)g(mem)m(b)s(ers,)h +(called)e Fo(k)m(eyw)m(ords)p Fs(,)k(are)c(inserted)g(in)m(to)g(the)h +(structure)f(only)f(once,)45 b(usually)150 1410 y(during)28 +b(program)i(initialization,)e(and)i(are)g(not)h(generally)f(mo)s +(di\014ed)e(at)j(run-time.)275 1544 y(Numerous)c(static)h(searc)m(h)h +(structure)e(implemen)m(tations)f(exist,)j(e.g.,)g(arra)m(ys,)g(link)m +(ed)e(lists,)g(binary)150 1654 y(searc)m(h)45 b(trees,)j(digital)42 +b(searc)m(h)j(tries,)i(and)c(hash)g(tables.)82 b(Di\013eren)m(t)44 +b(approac)m(hes)h(o\013er)f(trade-o\013s)150 1763 y(b)s(et)m(w)m(een)e +(space)h(utilization)c(and)j(searc)m(h)g(time)f(e\016ciency)-8 +b(.)76 b(F)-8 b(or)42 b(example,)j(an)c Fo(n)h Fs(elemen)m(t)g(sorted) +150 1873 y(arra)m(y)e(is)f(space)i(e\016cien)m(t,)h(though)e(the)g(a)m +(v)m(erage-case)k(time)39 b(complexit)m(y)h(for)g(retriev)-5 b(al)39 b(op)s(erations)150 1983 y(using)30 b(binary)f(searc)m(h)j(is)e (prop)s(ortional)f(to)i(log)h Fo(n)p Fs(.)42 b(Con)m(v)m(ersely)-8 b(,)32 b(hash)e(table)h(implemen)m(tations)f(often)150 @@ -2574,699 +2641,1023 @@ Fs(,)25 b(if)c(it)g(subsequen)m(tly)150 4214 y(receiv)m(es)j(hea)m(vy)g (drudgery)f(asso)s(ciated)i(with)d(constructing)150 4324 y(time-)37 b(and)g(space-e\016cien)m(t)i(searc)m(h)e(structures)g(b)m (y)g(hand.)61 b(It)37 b(has)g(pro)m(v)m(en)h(a)f(useful)f(and)g -(practical)150 4433 y(to)s(ol)42 b(for)g(serious)f(programming)g(pro)5 -b(jects.)76 b(Output)41 b(from)h Fn(gperf)e Fs(is)h(curren)m(tly)g -(used)h(in)f(sev)m(eral)150 4543 y(pro)s(duction)32 b(and)h(researc)m -(h)h(compilers,)f(including)d(GNU)k(C,)g(GNU)g(C)p Fn(++)p -Fs(,)g(GNU)g(P)m(ascal,)h(and)e(GNU)150 4653 y(Mo)s(dula)27 -b(3.)40 b(The)28 b(latter)h(t)m(w)m(o)g(compilers)e(are)h(not)h(y)m(et) -g(part)f(of)g(the)h(o\016cial)e(GNU)i(distribution.)36 -b(Eac)m(h)150 4762 y(compiler)h(utilizes)f Fn(gperf)h -Fs(to)i(automatically)g(generate)h(static)f(searc)m(h)g(structures)e -(that)i(e\016cien)m(tly)150 4872 y(iden)m(tify)29 b(their)g(resp)s -(ectiv)m(e)i(reserv)m(ed)f(k)m(eyw)m(ords.)p eop +(practical)150 4433 y(to)s(ol)28 b(for)g(serious)f(programming)g(pro)5 +b(jects.)40 b(Output)27 b(from)h Fn(gperf)e Fs(is)h(curren)m(tly)h +(used)f(in)g(sev)m(eral)h(pro-)150 4543 y(duction)d(and)f(researc)m(h)j +(compilers,)e(including)d(GNU)k(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,)i(and)150 +4653 y(GNU)38 b(Mo)s(dula)e(3.)63 b(The)36 b(latter)i(t)m(w)m(o)h +(compilers)d(are)h(not)h(y)m(et)h(part)e(of)g(the)h(o\016cial)f(GNU)h +(distribu-)150 4762 y(tion.)50 b(Eac)m(h)34 b(compiler)e(utilizes)g +Fn(gperf)g Fs(to)i(automatically)f(generate)i(static)f(searc)m(h)g +(structures)f(that)150 4872 y(e\016cien)m(tly)d(iden)m(tify)f(their)g +(resp)s(ectiv)m(e)i(reserv)m(ed)f(k)m(eyw)m(ords.)p eop %%Page: 11 13 11 12 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(11)150 299 y Fp(3)80 b(High-Lev)l(el)54 b(Description)f(of)h(GNU)g -Fm(gperf)275 604 y Fs(The)42 b(p)s(erfect)g(hash)g(function)f -(generator)j Fn(gperf)d Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i -(from)e(a)h Fo(k)m(ey\014le)150 714 y Fs(\(or)34 b(from)g(the)g -(standard)f(input)f(b)m(y)i(default\).)51 b(It)34 b(attempts)h(to)f -(deriv)m(e)g(a)g(p)s(erfect)g(hashing)e(function)150 -824 y(that)37 b(recognizes)h(a)f(mem)m(b)s(er)f(of)h(the)g -Fo(static)g(k)m(eyw)m(ord)g(set)j Fs(with)35 b(at)j(most)f(a)g(single)e -(prob)s(e)h(in)m(to)h(the)150 933 y(lo)s(okup)25 b(table.)40 -b(If)26 b Fn(gperf)f Fs(succeeds)i(in)f(generating)h(suc)m(h)f(a)h -(function)e(it)i(pro)s(duces)e(a)i(pair)f(of)g(C)h(source)150 -1043 y(co)s(de)39 b(routines)f(that)i(p)s(erform)d(hashing)h(and)g -(table)h(lo)s(okup)e(recognition.)67 b(All)37 b(generated)j(C)f(co)s -(de)150 1152 y(is)e(directed)g(to)h(the)g(standard)f(output.)62 -b(Command-line)36 b(options)h(describ)s(ed)e(b)s(elo)m(w)i(allo)m(w)g -(y)m(ou)h(to)150 1262 y(mo)s(dify)29 b(the)h(input)f(and)g(output)h -(format)h(to)g Fn(gperf)p Fs(.)275 1420 y(By)23 b(default,)h -Fn(gperf)e Fs(attempts)i(to)g(pro)s(duce)e(time-e\016cien)m(t)i(co)s -(de,)h(with)d(less)h(emphasis)e(on)i(e\016cien)m(t)150 -1530 y(space)31 b(utilization.)39 b(Ho)m(w)m(ev)m(er,)33 -b(sev)m(eral)d(options)g(exist)g(that)h(p)s(ermit)e(trading-o\013)h -(execution)h(time)f(for)150 1639 y(storage)j(space)f(and)g(vice)f(v)m -(ersa.)46 b(In)31 b(particular,)f(expanding)g(the)i(generated)h(table)f -(size)f(pro)s(duces)g(a)150 1749 y(sparse)26 b(searc)m(h)g(structure,)h -(generally)e(yielding)e(faster)k(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 -b(,)27 b(y)m(ou)g(can)f(direct)f Fn(gperf)150 1859 y +Fm(gperf)275 539 y Fs(The)29 b(p)s(erfect)h(hash)g(function)f +(generator)i Fn(gperf)e Fs(reads)h(a)h(set)g(of)f(\\k)m(eyw)m(ords")i +(from)d(an)i(input)d(\014le)150 648 y(\(or)34 b(from)g(the)g(standard)f +(input)f(b)m(y)i(default\).)51 b(It)34 b(attempts)h(to)f(deriv)m(e)g(a) +g(p)s(erfect)g(hashing)e(function)150 758 y(that)37 b(recognizes)h(a)f +(mem)m(b)s(er)f(of)h(the)g Fo(static)g(k)m(eyw)m(ord)g(set)j +Fs(with)35 b(at)j(most)f(a)g(single)e(prob)s(e)h(in)m(to)h(the)150 +867 y(lo)s(okup)25 b(table.)40 b(If)26 b Fn(gperf)f Fs(succeeds)i(in)f +(generating)h(suc)m(h)f(a)h(function)e(it)i(pro)s(duces)e(a)i(pair)f +(of)g(C)h(source)150 977 y(co)s(de)39 b(routines)f(that)i(p)s(erform)d +(hashing)h(and)g(table)h(lo)s(okup)e(recognition.)67 +b(All)37 b(generated)j(C)f(co)s(de)150 1086 y(is)e(directed)g(to)h(the) +g(standard)f(output.)62 b(Command-line)36 b(options)h(describ)s(ed)e(b) +s(elo)m(w)i(allo)m(w)g(y)m(ou)h(to)150 1196 y(mo)s(dify)29 +b(the)h(input)f(and)g(output)h(format)h(to)g Fn(gperf)p +Fs(.)275 1332 y(By)23 b(default,)h Fn(gperf)e Fs(attempts)i(to)g(pro)s +(duce)e(time-e\016cien)m(t)i(co)s(de,)h(with)d(less)h(emphasis)e(on)i +(e\016cien)m(t)150 1442 y(space)31 b(utilization.)39 +b(Ho)m(w)m(ev)m(er,)33 b(sev)m(eral)d(options)g(exist)g(that)h(p)s +(ermit)e(trading-o\013)h(execution)h(time)f(for)150 1552 +y(storage)j(space)f(and)g(vice)f(v)m(ersa.)46 b(In)31 +b(particular,)f(expanding)g(the)i(generated)h(table)f(size)f(pro)s +(duces)g(a)150 1661 y(sparse)26 b(searc)m(h)g(structure,)h(generally)e +(yielding)e(faster)k(searc)m(hes.)40 b(Con)m(v)m(ersely)-8 +b(,)27 b(y)m(ou)g(can)f(direct)f Fn(gperf)150 1771 y Fs(to)c(utilize)e(a)i(C)f Fn(switch)f Fs(statemen)m(t)k(sc)m(heme)e (that)g(minimizes)d(data)j(space)g(storage)h(size.)38 -b(F)-8 b(urthermore,)150 1968 y(using)39 b(a)h(C)g Fn(switch)e +b(F)-8 b(urthermore,)150 1880 y(using)39 b(a)h(C)g Fn(switch)e Fs(ma)m(y)i(actually)g(sp)s(eed)f(up)g(the)h(k)m(eyw)m(ord)h(retriev)-5 -b(al)39 b(time)h(somewhat.)70 b(Actual)150 2078 y(results)29 +b(al)39 b(time)h(somewhat.)70 b(Actual)150 1990 y(results)29 b(dep)s(end)g(on)h(y)m(our)g(C)g(compiler,)g(of)g(course.)275 -2236 y(In)h(general,)i Fn(gperf)e Fs(assigns)h(v)-5 b(alues)32 -b(to)h(the)g(c)m(haracters)g(it)f(is)g(using)f(for)h(hashing)f(un)m -(til)g(some)h(set)150 2346 y(of)42 b(v)-5 b(alues)42 +2126 y(In)44 b(general,)49 b Fn(gperf)44 b Fs(assigns)g(v)-5 +b(alues)45 b(to)h(the)f(b)m(ytes)h(it)f(is)f(using)g(for)h(hashing)e +(un)m(til)h(some)h(set)150 2236 y(of)d(v)-5 b(alues)42 b(giv)m(es)g(eac)m(h)i(k)m(eyw)m(ord)e(a)h(unique)d(v)-5 b(alue.)76 b(A)42 b(helpful)d(heuristic)i(is)g(that)i(the)f(larger)g -(the)150 2455 y(hash)36 b(v)-5 b(alue)36 b(range,)j(the)e(easier)g(it)f +(the)150 2345 y(hash)36 b(v)-5 b(alue)36 b(range,)j(the)e(easier)g(it)f (is)g(for)g Fn(gperf)f Fs(to)j(\014nd)d(and)h(generate)i(a)f(p)s -(erfect)g(hash)f(function.)150 2565 y(Exp)s(erimen)m(tation)29 +(erfect)g(hash)f(function.)150 2455 y(Exp)s(erimen)m(tation)29 b(is)g(the)i(k)m(ey)g(to)g(getting)g(the)g(most)g(from)e -Fn(gperf)p Fs(.)150 2882 y Fr(3.1)68 b(Input)44 b(F)-11 -b(ormat)46 b(to)f Fk(gperf)275 3098 y Fs(Y)-8 b(ou)36 -b(can)h(con)m(trol)f(the)h(input)d(k)m(ey\014le)i(format)h(b)m(y)f(v)-5 -b(arying)35 b(certain)i(command-line)d(argumen)m(ts,)150 -3208 y(in)c(particular)g(the)i(`)p Fn(-t)p Fs(')f(option.)44 -b(The)31 b(input's)f(app)s(earance)i(is)f(similar)e(to)j(GNU)g -(utilities)d Fn(flex)i Fs(and)150 3317 y Fn(bison)e Fs(\(or)i(UNIX)f -(utilities)e Fn(lex)i Fs(and)f Fn(yacc)p Fs(\).)40 b(Here's)31 -b(an)g(outline)e(of)h(the)h(general)f(format:)390 3470 -y Fn(declarations)390 3573 y(\045\045)390 3677 y(keywords)390 -3781 y(\045\045)390 3885 y(functions)275 4036 y Fl(Unlike)36 -b Fn(flex)29 b Fs(or)h Fn(bison)p Fs(,)f(all)g(sections)h(of)g -Fn(gperf)p Fs('s)f(input)f(are)i(optional.)40 b(The)29 -b(follo)m(wing)g(sections)150 4146 y(describ)s(e)g(the)h(input)f -(format)h(for)h(eac)m(h)g(section.)150 4417 y Fj(3.1.1)63 -b Fi(struct)41 b Fj(Declarations)g(and)g(C)g(Co)s(de)g(Inclusion)275 -4634 y Fs(The)20 b(k)m(eyw)m(ord)h(input)e(\014le)h(optionally)g(con)m -(tains)h(a)g(section)g(for)g(including)c(arbitrary)j(C)g(declarations) -150 4743 y(and)k(de\014nitions,)g(as)h(w)m(ell)e(as)i(pro)m(visions)e -(for)i(pro)m(viding)d(a)j(user-supplied)d Fn(struct)p -Fs(.)37 b(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)150 -4853 y Fl(is)39 b Fs(enabled,)31 b(y)m(ou)g Fl(must)41 -b Fs(pro)m(vide)30 b(a)i(C)f Fn(struct)e Fs(as)j(the)f(last)h(comp)s -(onen)m(t)f(in)f(the)i(declaration)f(section)150 4963 -y(from)23 b(the)h(k)m(ey\014le)f(\014le.)37 b(The)23 -b(\014rst)g(\014eld)f(in)g(this)g(struct)i(m)m(ust)f(b)s(e)g(a)h -Fn(char)29 b(*)23 b Fs(or)h Fn(const)k(char)i(*)23 b -Fs(iden)m(ti\014er)150 5072 y(called)d(`)p Fn(name)p -Fs(',)i(although)e(it)g(is)f(p)s(ossible)f(to)j(mo)s(dify)e(this)g -(\014eld's)g(name)i(with)e(the)i(`)p Fn(-K)p Fs(')f(option)g(describ)s -(ed)150 5182 y(b)s(elo)m(w.)275 5340 y(Here)30 b(is)g(a)h(simple)d -(example,)i(using)f(mon)m(ths)h(of)h(the)f(y)m(ear)i(and)d(their)h -(attributes)g(as)g(input:)p eop +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)h(the)f(input)e(\014le)h(format)h(b)m(y)g(v)-5 +b(arying)37 b(certain)g(command-line)g(argumen)m(ts,)j(in)150 +3021 y(particular)d(the)i(`)p Fn(-t)p Fs(')g(option.)65 +b(The)38 b(input's)f(app)s(earance)i(is)f(similar)e(to)j(GNU)h +(utilities)c Fn(flex)i Fs(and)150 3131 y Fn(bison)29 +b Fs(\(or)i(UNIX)f(utilities)e Fn(lex)i Fs(and)f Fn(yacc)p +Fs(\).)40 b(Here's)31 b(an)g(outline)e(of)h(the)h(general)f(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)e(section)i +(and)f(the)h(functions)e(section)i(are)g(optional.)150 +3915 y(The)30 b(follo)m(wing)f(sections)h(describ)s(e)f(the)h(input)f +(format)i(for)f(eac)m(h)h(section.)275 4051 y(It)h(is)f(p)s(ossible)f +(to)j(omit)f(the)h(declaration)f(section)g(en)m(tirely)-8 +b(,)33 b(if)e(the)i(`)p Fn(-t)p Fs(')f(option)g(is)f(not)i(giv)m(en.)47 +b(In)150 4161 y(this)29 b(case)j(the)e(input)f(\014le)g(b)s(egins)g +(directly)g(with)g(the)i(\014rst)e(k)m(eyw)m(ord)i(line,)e(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)e(\014le)g(optionally)g(con)m +(tains)i(a)g(section)f(for)g(including)d(arbitrary)j(C)g(declara-)150 +5230 y(tions)c(and)f(de\014nitions,)f Fn(gperf)h Fs(declarations)h +(that)h(act)g(lik)m(e)f(command-line)f(options,)h(as)g(w)m(ell)g(as)g +(for)150 5340 y(pro)m(viding)e(a)j(user-supplied)c Fn(struct)p +Fs(.)p eop %%Page: 12 14 12 13 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(12)390 -299 y Fn(struct)46 b(months)g({)i(char)e(*name;)g(int)h(number;)f(int)h -(days;)f(int)h(leap_days;)e(};)390 403 y(\045\045)390 -506 y(january,)141 b(1,)47 b(31,)g(31)390 610 y(february,)93 -b(2,)47 b(28,)g(29)390 714 y(march,)237 b(3,)47 b(31,)g(31)390 -818 y(april,)237 b(4,)47 b(30,)g(30)390 922 y(may,)333 -b(5,)47 b(31,)g(31)390 1025 y(june,)285 b(6,)47 b(30,)g(30)390 -1129 y(july,)285 b(7,)47 b(31,)g(31)390 1233 y(august,)189 -b(8,)47 b(31,)g(31)390 1337 y(september,)e(9,)i(30,)g(30)390 -1440 y(october,)93 b(10,)47 b(31,)g(31)390 1544 y(november,)e(11,)i -(30,)g(30)390 1648 y(december,)e(12,)i(31,)g(31)275 1782 +b(Description)g(of)g(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 +487 y Fs(If)24 b(the)h(`)p Fn(-t)p Fs(')f(option)g(\(or,)j(equiv)-5 +b(alen)m(tly)d(,)25 b(the)g(`)p Fn(\045struct-type)p +Fs(')d(declaration\))i Fl(is)32 b Fs(enabled,)25 b(y)m(ou)g +Fl(must)150 597 y Fs(pro)m(vide)36 b(a)g(C)h Fn(struct)d +Fs(as)j(the)g(last)f(comp)s(onen)m(t)h(in)e(the)i(declaration)f +(section)g(from)g(the)h(input)e(\014le.)150 706 y(The)26 +b(\014rst)f(\014eld)g(in)g(this)g(struct)h(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)g(the)i(`)p Fn(-P)p Fs(')f(option)f(is)h(not)150 +816 y(giv)m(en,)k(or)h(of)f(t)m(yp)s(e)g Fn(int)g Fs(if)f(the)h(option) +g(`)p Fn(-P)p Fs(')g(\(or,)h(equiv)-5 b(alen)m(tly)d(,)29 +b(the)i(`)p Fn(\045pic)p Fs(')e(declaration\))h(is)g(enabled.)150 +926 y(This)k(\014rst)g(\014eld)g(m)m(ust)i(b)s(e)e(called)h(`)p +Fn(name)p Fs(',)h(although)f(it)g(is)g(p)s(ossible)e(to)j(mo)s(dify)d +(its)i(name)h(with)e(the)150 1035 y(`)p Fn(-K)p Fs(')c(option)g(\(or,)h +(equiv)-5 b(alen)m(tly)d(,)30 b(the)g(`)p Fn(\045define)f(slot-name)p +Fs(')f(declaration\))i(describ)s(ed)f(b)s(elo)m(w.)275 +1165 y(Here)h(is)g(a)h(simple)d(example,)i(using)f(mon)m(ths)h(of)h +(the)f(y)m(ear)i(and)d(their)h(attributes)g(as)g(input:)390 +1290 y Fn(struct)46 b(months)g({)i(char)e(*name;)g(int)h(number;)f(int) +h(days;)f(int)h(leap_days;)e(};)390 1393 y(\045\045)390 +1497 y(january,)141 b(1,)47 b(31,)g(31)390 1601 y(february,)93 +b(2,)47 b(28,)g(29)390 1705 y(march,)237 b(3,)47 b(31,)g(31)390 +1809 y(april,)237 b(4,)47 b(30,)g(30)390 1912 y(may,)333 +b(5,)47 b(31,)g(31)390 2016 y(june,)285 b(6,)47 b(30,)g(30)390 +2120 y(july,)285 b(7,)47 b(31,)g(31)390 2224 y(august,)189 +b(8,)47 b(31,)g(31)390 2327 y(september,)e(9,)i(30,)g(30)390 +2431 y(october,)93 b(10,)47 b(31,)g(31)390 2535 y(november,)e(11,)i +(30,)g(30)390 2639 y(december,)e(12,)i(31,)g(31)275 2762 y Fs(Separating)24 b(the)h Fn(struct)f Fs(declaration)g(from)h(the)g (list)f(of)h(k)m(eyw)m(ords)h(and)e(other)h(\014elds)f(are)h(a)h(pair)e -(of)150 1892 y(consecutiv)m(e)32 b(p)s(ercen)m(t)g(signs,)e(`)p +(of)150 2871 y(consecutiv)m(e)32 b(p)s(ercen)m(t)g(signs,)e(`)p Fn(\045\045)p Fs(',)i(app)s(earing)e(left)h(justi\014ed)e(in)h(the)i -(\014rst)e(column,)h(as)g(in)f(the)i(UNIX)150 2002 y(utilit)m(y)d -Fn(lex)p Fs(.)275 2143 y(Using)c(a)h(syn)m(tax)h(similar)c(to)k(GNU)f -(utilities)e Fn(flex)h Fs(and)g Fn(bison)p Fs(,)h(it)f(is)g(p)s -(ossible)f(to)i(directly)f(include)150 2253 y(C)k(source)h(text)g(and)f -(commen)m(ts)h(v)m(erbatim)f(in)m(to)h(the)f(generated)i(output)e -(\014le.)39 b(This)28 b(is)g(accomplished)150 2362 y(b)m(y)37 -b(enclosing)f(the)i(region)f(inside)d(left-justi\014ed)i(surrounding)e -(`)p Fn(\045{)p Fs(',)39 b(`)p Fn(\045})p Fs(')e(pairs.)60 -b(Here)38 b(is)e(an)h(input)150 2472 y(fragmen)m(t)31 +(\014rst)e(column,)h(as)g(in)f(the)i(UNIX)150 2981 y(utilit)m(y)d +Fn(lex)p Fs(.)150 3192 y Fj(3.1.1.2)63 b(Gp)s(erf)42 +b(Declarations)275 3381 y Fs(The)31 b(declaration)h(section)h(can)f +(con)m(tain)h Fn(gperf)d Fs(declarations.)46 b(They)32 +b(in\015uence)f(the)h(w)m(a)m(y)h Fn(gperf)150 3490 y +Fs(w)m(orks,)43 b(lik)m(e)d(command)h(line)e(options)h(do.)72 +b(In)40 b(fact,)k(ev)m(ery)e(suc)m(h)e(declaration)g(is)g(equiv)-5 +b(alen)m(t)40 b(to)i(a)150 3600 y(command)30 b(line)f(option.)40 +b(There)30 b(are)h(three)f(forms)g(of)h(declarations:)199 +3730 y(1.)61 b(Declarations)31 b(without)e(argumen)m(t,)i(lik)m(e)f(`)p +Fn(\045compare-lengths)p Fs('.)199 3860 y(2.)61 b(Declarations)31 +b(with)e(an)h(argumen)m(t,)h(lik)m(e)f(`)p Fn(\045switch=)p +Fo(coun)m(t)r Fs('.)199 3990 y(3.)61 b(Declarations)112 +b(of)g(names)g(of)g(en)m(tities)g(in)e(the)i(output)g(\014le,)131 +b(lik)m(e)112 b(`)p Fn(\045define)330 4100 y(lookup-function-name)25 +b Fo(name)5 b Fs('.)275 4251 y(When)35 b(a)h(declaration)f(is)g(giv)m +(en)g(b)s(oth)g(in)g(the)g(input)f(\014le)h(and)g(as)h(a)g(command)f +(line)f(option,)j(the)150 4360 y(command-line)29 b(option's)h(v)-5 +b(alue)30 b(prev)-5 b(ails.)275 4490 y(The)29 b(follo)m(wing)g +Fn(gperf)g Fs(declarations)h(are)h(a)m(v)-5 b(ailable.)150 +4641 y(`)p Fn(\045delimiters=)p Fo(delimiter-lis)o(t)r +Fs(')630 4751 y(Allo)m(ws)28 b(y)m(ou)h(to)g(pro)m(vide)f(a)h(string)f +(con)m(taining)g(delimiters)f(used)g(to)j(separate)g(k)m(eyw)m(ords)630 +4860 y(from)k(their)g(attributes.)53 b(The)34 b(default)f(is)h +Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)33 b(option)h(is)f(essen)m(tial)i +(if)e(y)m(ou)i(w)m(an)m(t)630 4970 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 +5121 y(`)p Fn(\045struct-type)p Fs(')630 5230 y(Allo)m(ws)g(y)m(ou)g +(to)i(include)c(a)j Fn(struct)d Fs(t)m(yp)s(e)j(declaration)f(for)g +(generated)i(co)s(de;)f(see)g(ab)s(o)m(v)m(e)630 5340 +y(for)f(an)g(example.)p eop +%%Page: 13 15 +13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(13)150 +299 y(`)p Fn(\045ignore-case)p Fs(')630 408 y(Consider)42 +b(upp)s(er)g(and)i(lo)m(w)m(er)g(case)h(ASCI)s(I)e(c)m(haracters)i(as)f +(equiv)-5 b(alen)m(t.)81 b(The)44 b(string)630 518 y(comparison)27 +b(will)f(use)i(a)h(case)g(insigni\014can)m(t)d(c)m(haracter)k +(comparison.)39 b(Note)29 b(that)g(lo)s(cale)630 628 +y(dep)s(enden)m(t)g(case)j(mappings)c(are)j(ignored.)150 +783 y(`)p Fn(\045language=)p Fo(language-name)5 b Fs(')630 +892 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f(in)e(the)i +(language)g(sp)s(eci\014ed)d(b)m(y)j(the)g(option's)f(ar-)630 +1002 y(gumen)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m(tly:)630 +1157 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)25 b(K&R)h(C.)g(This)e +(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(old-st)m(yle)g(C)g(com-) +1110 1267 y(pilers)c(and)i(ANSI)f(C)h(compilers,)g(but)g(ANSI)f(C)h +(compilers)f(ma)m(y)h(\015ag)h(w)m(arn-)1110 1377 y(ings)k(\(or)i(ev)m +(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)g(`)p Fn(const)p +Fs('.)630 1532 y(`)p Fn(C)p Fs(')382 b(Common)23 b(C.)f(This)g +(language)h(is)f(understo)s(o)s(d)f(b)m(y)i(ANSI)g(C)f(compilers,)i +(and)1110 1641 y(also)29 b(b)m(y)f(old-st)m(yle)g(C)h(compilers,)e(pro) +m(vided)g(that)j(y)m(ou)f Fn(#define)f(const)f Fs(to)1110 +1751 y(empt)m(y)k(for)f(compilers)f(whic)m(h)g(don't)h(kno)m(w)h(ab)s +(out)f(this)f(k)m(eyw)m(ord.)630 1906 y(`)p Fn(ANSI-C)p +Fs(')142 b(ANSI)39 b(C.)h(This)d(language)j(is)f(understo)s(o)s(d)f(b)m +(y)h(ANSI)g(C)h(compilers)e(and)1110 2016 y(C)p Fn(++)29 +b Fs(compilers.)630 2171 y(`)p Fn(C++)p Fs(')286 b(C)p +Fn(++)p Fs(.)40 b(This)28 b(language)j(is)f(understo)s(o)s(d)e(b)m(y)i +(C)p Fn(++)g Fs(compilers.)630 2326 y(The)g(default)f(is)h(C.)150 +2482 y(`)p Fn(\045define)f(slot-name)e Fo(name)5 b Fs(')630 +2591 y(This)64 b(declaration)i(is)f(only)g(useful)f(when)h(option)g(`)p +Fn(-t)p Fs(')h(\(or,)76 b(equiv)-5 b(alen)m(tly)d(,)74 +b(the)630 2701 y(`)p Fn(\045struct-type)p Fs(')27 b(declaration\))j +(has)g(b)s(een)g(giv)m(en.)40 b(By)31 b(default,)e(the)h(program)g +(assumes)630 2810 y(the)48 b(structure)g(comp)s(onen)m(t)h(iden)m +(ti\014er)d(for)i(the)g(k)m(eyw)m(ord)h(is)e(`)p Fn(name)p +Fs('.)94 b(This)46 b(option)630 2920 y(allo)m(ws)e(an)g(arbitrary)f(c)m +(hoice)i(of)g(iden)m(ti\014er)d(for)j(this)e(comp)s(onen)m(t,)48 +b(although)c(it)g(still)630 3029 y(m)m(ust)30 b(o)s(ccur)g(as)h(the)g +(\014rst)e(\014eld)g(in)g(y)m(our)i(supplied)c Fn(struct)p +Fs(.)150 3185 y(`)p Fn(\045define)i(initializer-suffix)c +Fo(initializers)t Fs(')630 3294 y(This)64 b(declaration)i(is)f(only)g +(useful)f(when)h(option)g(`)p Fn(-t)p Fs(')h(\(or,)76 +b(equiv)-5 b(alen)m(tly)d(,)74 b(the)630 3404 y(`)p Fn(\045struct-type) +p Fs(')33 b(declaration\))j(has)f(b)s(een)g(giv)m(en.)57 +b(It)36 b(p)s(ermits)e(to)j(sp)s(ecify)d(initializers)630 +3513 y(for)44 b(the)g(structure)g(mem)m(b)s(ers)f(follo)m(wing)f +Fo(slot-name)50 b Fs(in)42 b(empt)m(y)j(hash)e(table)h(en)m(tries.)630 +3623 y(The)e(list)e(of)j(initializers)38 b(should)i(start)j(with)e(a)h +(comma.)77 b(By)42 b(default,)j(the)d(emitted)630 3733 +y(co)s(de)31 b(will)c(zero-initialize)i(structure)h(mem)m(b)s(ers)g +(follo)m(wing)f Fo(slot-name)p Fs(.)150 3888 y(`)p Fn(\045define)g +(hash-function-name)c Fo(name)5 b Fs(')630 3998 y(Allo)m(ws)29 +b(y)m(ou)h(to)g(sp)s(ecify)f(the)h(name)g(for)f(the)h(generated)h(hash) +e(function.)39 b(Default)30 b(name)630 4107 y(is)f(`)p +Fn(hash)p Fs('.)40 b(This)29 b(option)h(p)s(ermits)e(the)j(use)f(of)h +(t)m(w)m(o)g(hash)f(tables)g(in)f(the)i(same)g(\014le.)150 +4262 y(`)p Fn(\045define)e(lookup-function-name)24 b +Fo(name)5 b Fs(')630 4372 y(Allo)m(ws)41 b(y)m(ou)h(to)h(sp)s(ecify)d +(the)j(name)f(for)f(the)h(generated)h(lo)s(okup)e(function.)74 +b(Default)630 4482 y(name)28 b(is)f(`)p Fn(in_word_set)p +Fs('.)37 b(This)26 b(option)h(p)s(ermits)f(m)m(ultiple)g(generated)i +(hash)f(functions)630 4591 y(to)k(b)s(e)f(used)f(in)g(the)i(same)g +(application.)150 4746 y(`)p Fn(\045define)e(class-name)e +Fo(name)5 b Fs(')630 4856 y(This)65 b(option)i(is)f(only)h(useful)e +(when)i(option)f(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 +b(equiv)-5 b(alen)m(tly)d(,)76 b(the)630 4966 y(`)p Fn +(\045language=C++)p Fs(')43 b(declaration\))i(has)h(b)s(een)f(giv)m +(en.)87 b(It)46 b(allo)m(ws)f(y)m(ou)h(to)g(sp)s(ecify)f(the)630 +5075 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)40 +b(Default)31 b(name)f(is)g Fn(Perfect_Hash)p Fs(.)150 +5230 y(`)p Fn(\0457bit)p Fs(')190 b(This)35 b(option)i(sp)s(eci\014es)f +(that)h(all)f(strings)g(that)i(will)c(b)s(e)j(passed)f(as)i(argumen)m +(ts)f(to)h(the)630 5340 y(generated)e(hash)e(function)f(and)i(the)g +(generated)g(lo)s(okup)f(function)f(will)f(solely)i(consist)p +eop +%%Page: 14 16 +14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(14)630 +299 y(of)33 b(7-bit)g(ASCI)s(I)f(c)m(haracters)j(\(b)m(ytes)f(in)e(the) +h(range)h(0..127\).)51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 +408 y(functions)e Fn(isalnum)g 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)e(in)f +(this)h(range.)630 518 y(Only)e(an)h(explicit)f(test)i(lik)m(e)f(`)p +Fn(c)g(>=)g('A')f(&&)h(c)g(<=)g('Z')p Fs(')f(guaran)m(tees)j(this.\)) +150 682 y(`)p Fn(\045compare-lengths)p Fs(')630 792 y(Compare)40 +b(k)m(eyw)m(ord)g(lengths)f(b)s(efore)g(trying)g(a)i(string)d +(comparison.)69 b(This)38 b(option)h(is)630 902 y(mandatory)32 +b(for)h(binary)d(comparisons)i(\(see)h(Section)g(3.3)g([Binary)f +(Strings],)g(page)h(18\).)630 1011 y(It)g(also)g(migh)m(t)g(cut)g(do)m +(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)f(comparisons)g(made)h +(during)e(the)630 1121 y(lo)s(okup,)i(since)g(k)m(eyw)m(ords)g(with)f +(di\013eren)m(t)h(lengths)g(are)g(nev)m(er)h(compared)f(via)g +Fn(strcmp)p Fs(.)630 1230 y(Ho)m(w)m(ev)m(er,)e(using)c(`)p +Fn(\045compare-lengths)p Fs(')d(migh)m(t)k(greatly)h(increase)f(the)h +(size)f(of)h(the)f(gen-)630 1340 y(erated)j(C)f(co)s(de)h(if)e(the)i +(lo)s(okup)e(table)i(range)f(is)g(large)g(\(whic)m(h)g(implies)e(that)j +(the)f(switc)m(h)630 1450 y(option)23 b(`)p Fn(-S)p Fs(')h(or)g(`)p +Fn(\045switch)p Fs(')f(is)g(not)h(enabled\),)h(since)e(the)h(length)g +(table)f(con)m(tains)i(as)f(man)m(y)630 1559 y(elemen)m(ts)31 +b(as)f(there)h(are)g(en)m(tries)f(in)f(the)h(lo)s(okup)f(table.)150 +1724 y(`)p Fn(\045compare-strncmp)p Fs(')630 1833 y(Generates)22 +b(C)f(co)s(de)g(that)h(uses)e(the)i Fn(strncmp)d Fs(function)g(to)j(p)s +(erform)e(string)g(comparisons.)630 1943 y(The)30 b(default)f(action)i +(is)f(to)h(use)f Fn(strcmp)p Fs(.)150 2107 y(`)p Fn +(\045readonly-tables)p Fs(')630 2217 y(Mak)m(es)41 b(the)f(con)m(ten)m +(ts)h(of)f(all)f(generated)h(lo)s(okup)e(tables)i(constan)m(t,)j(i.e.,) +g(\\readonly".)630 2326 y(Man)m(y)31 b(compilers)e(can)i(generate)h +(more)e(e\016cien)m(t)h(co)s(de)g(for)f(this)g(b)m(y)g(putting)f(the)i +(tables)630 2436 y(in)e(readonly)h(memory)-8 b(.)150 +2600 y(`)p Fn(\045enum)p Fs(')190 b(De\014ne)31 b(constan)m(t)g(v)-5 +b(alues)30 b(using)f(an)h(en)m(um)g(lo)s(cal)g(to)h(the)g(lo)s(okup)e +(function)g(rather)h(than)630 2710 y(with)36 b(#de\014nes.)60 +b(This)35 b(also)i(means)h(that)f(di\013eren)m(t)g(lo)s(okup)f +(functions)g(can)h(reside)f(in)630 2819 y(the)31 b(same)f(\014le.)40 +b(Thanks)29 b(to)j(James)e(Clark)f Fn()p +Fs(.)150 2984 y(`)p Fn(\045includes)p Fs(')630 3093 y(Include)g(the)i +(necessary)h(system)f(include)e(\014le,)h Fn()p +Fs(,)f(at)i(the)g(b)s(eginning)e(of)i(the)630 3203 y(co)s(de.)39 +b(By)27 b(default,)f(this)f(is)g(not)h(done;)i(the)e(user)f(m)m(ust)h +(include)e(this)g(header)i(\014le)f(himself)630 3313 +y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h(co)s(de.)150 +3477 y(`)p Fn(\045global-table)p Fs(')630 3587 y(Generate)38 +b(the)f(static)g(table)f(of)h(k)m(eyw)m(ords)g(as)g(a)g(static)g +(global)f(v)-5 b(ariable,)37 b(rather)f(than)630 3696 +y(hiding)28 b(it)i(inside)e(of)i(the)h(lo)s(okup)e(function)g(\(whic)m +(h)g(is)h(the)g(default)g(b)s(eha)m(vior\).)150 3861 +y(`)p Fn(\045pic)p Fs(')238 b(Optimize)40 b(the)h(generated)h(table)f +(for)g(inclusion)d(in)i(shared)g(libraries.)70 b(This)39 +b(reduces)630 3970 y(the)c(startup)g(time)g(of)g(programs)g(using)f(a)i +(shared)e(library)f(con)m(taining)i(the)g(generated)630 +4080 y(co)s(de.)j(If)21 b(the)h(`)p Fn(\045struct-type)p +Fs(')d(declaration)j(\(or,)i(equiv)-5 b(alen)m(tly)d(,)23 +b(the)f(option)f(`)p Fn(-t)p Fs('\))h(is)f(also)630 4189 +y(giv)m(en,)31 b(the)g(\014rst)e(\014eld)h(of)g(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 4299 y(*)p Fs(',)h(b)s(ecause)f(it)h +(will)c(con)m(tain)k(o\013sets)h(in)m(to)e(the)h(string)e(p)s(o)s(ol)h +(instead)f(of)i(actual)g(strings.)630 4408 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,)g(y)m(ou)g +(can)g(use)f(the)h(expression)e(`)p Fn(stringpool)630 +4518 y(+)f Fo(o)5 b Fs(',)34 b(where)f Fo(o)38 b Fs(is)32 +b(the)h(o\013set.)50 b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s +(e)g(c)m(hanged)g(through)g(the)630 4628 y(`)p Fn(\045define)c +(string-pool-name)p Fs(')d(declaration.)150 4792 y(`)p +Fn(\045define)j(string-pool-name)d Fo(name)5 b Fs(')630 +4902 y(Allo)m(ws)40 b(y)m(ou)h(to)h(sp)s(ecify)e(the)h(name)g(of)g(the) +g(generated)h(string)e(p)s(o)s(ol)g(created)i(b)m(y)f(the)630 +5011 y(declaration)46 b(`)p Fn(\045pic)p Fs(')g(\(or,)51 +b(equiv)-5 b(alen)m(tly)d(,)50 b(the)d(option)e(`)p Fn(-P)p +Fs('\).)90 b(The)46 b(default)f(name)i(is)630 5121 y(`)p +Fn(stringpool)p Fs('.)38 b(This)28 b(declaration)h(p)s(ermits)f(the)i +(use)g(of)g(t)m(w)m(o)h(hash)e(tables)g(in)g(the)h(same)630 +5230 y(\014le,)38 b(with)d(`)p Fn(\045pic)p Fs(')h(and)g(ev)m(en)h +(when)f(the)h(`)p Fn(\045global-table)p Fs(')c(declaration)j(\(or,)j +(equiv)-5 b(a-)630 5340 y(len)m(tly)d(,)30 b(the)h(option)f(`)p +Fn(-G)p Fs('\))g(is)g(giv)m(en.)p eop +%%Page: 15 17 +15 16 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(15)150 +299 y(`)p Fn(\045null-strings)p Fs(')630 408 y(Use)39 +b(NULL)g(strings)e(instead)i(of)f(empt)m(y)i(strings)d(for)i(empt)m(y)g +(k)m(eyw)m(ord)g(table)g(en)m(tries.)630 518 y(This)e(reduces)h(the)h +(startup)g(time)f(of)h(programs)g(using)e(a)i(shared)f(library)e(con)m +(taining)630 628 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)f(`)p Fn(\045pic)p +Fs('\),)h(at)g(the)f(exp)s(ense)630 737 y(of)j(one)f(more)h +(test-and-branc)m(h)g(instruction)d(at)j(run)e(time.)150 +913 y(`)p Fn(\045define)g(word-array-name)d Fo(name)5 +b Fs(')630 1022 y(Allo)m(ws)39 b(y)m(ou)h(to)h(sp)s(ecify)e(the)h(name) +g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)g(the)g(hash)630 +1132 y(table.)105 b(Default)52 b(name)f(is)g(`)p Fn(wordlist)p +Fs('.)103 b(This)50 b(option)h(p)s(ermits)f(the)i(use)g(of)g(t)m(w)m(o) +630 1241 y(hash)37 b(tables)g(in)g(the)h(same)g(\014le,)h(ev)m(en)f +(when)f(the)h(option)f(`)p Fn(-G)p Fs(')h(\(or,)i(equiv)-5 +b(alen)m(tly)d(,)39 b(the)630 1351 y(`)p Fn(\045global-table)p +Fs(')27 b(declaration\))k(is)e(giv)m(en.)150 1526 y(`)p +Fn(\045switch=)p Fo(coun)m(t)r Fs(')630 1636 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 1746 +y(an)j(arra)m(y)g(lo)s(okup)f(table.)63 b(This)36 b(can)i(lead)g(to)g +(a)h(reduction)e(in)f(b)s(oth)h(time)h(and)f(space)630 +1855 y(requiremen)m(ts)42 b(for)i(some)f(input)f(\014les.)79 +b(The)43 b(argumen)m(t)h(to)g(this)e(option)h(determines)630 +1965 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)33 b(of)f(1)i(generates)g(1)f +Fn(switch)630 2074 y Fs(con)m(taining)23 b(all)e(the)j(elemen)m(ts,)h +(a)e(v)-5 b(alue)22 b(of)i(2)f(generates)h(2)g(tables)e(with)g(1/2)i +(the)g(elemen)m(ts)630 2184 y(in)37 b(eac)m(h)i Fn(switch)p +Fs(,)g(etc.)65 b(This)36 b(is)h(useful)g(since)g(man)m(y)i(C)e +(compilers)g(cannot)i(correctly)630 2294 y(generate)29 +b(co)s(de)f(for)f(large)g Fn(switch)f Fs(statemen)m(ts.)41 +b(This)26 b(option)h(w)m(as)h(inspired)c(in)i(part)h(b)m(y)630 +2403 y(Keith)j(Bostic's)h(original)d(C)i(program.)150 +2579 y(`)p Fn(\045omit-struct-type)p Fs(')630 2688 y(Prev)m(en)m(ts)f +(the)e(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)f(to)i(the)f +(output)f(\014le.)39 b(Use)28 b(this)e(option)630 2798 +y(if)j(the)i(t)m(yp)s(e)f(is)g(already)g(de\014ned)f(elsewhere.)150 +3054 y Fj(3.1.1.3)63 b(C)41 b(Co)s(de)g(Inclusion)275 +3262 y Fs(Using)25 b(a)h(syn)m(tax)h(similar)c(to)k(GNU)f(utilities)e +Fn(flex)h Fs(and)g Fn(bison)p Fs(,)h(it)f(is)g(p)s(ossible)f(to)i +(directly)f(include)150 3372 y(C)k(source)h(text)g(and)f(commen)m(ts)h +(v)m(erbatim)f(in)m(to)h(the)f(generated)i(output)e(\014le.)39 +b(This)28 b(is)g(accomplished)150 3482 y(b)m(y)37 b(enclosing)f(the)i +(region)f(inside)d(left-justi\014ed)i(surrounding)e(`)p +Fn(\045{)p Fs(',)39 b(`)p Fn(\045})p Fs(')e(pairs.)60 +b(Here)38 b(is)e(an)h(input)150 3591 y(fragmen)m(t)31 b(based)f(on)g(the)h(previous)e(example)h(that)h(illustrates)d(this)i -(feature:)390 2608 y Fn(\045{)390 2711 y(#include)46 -b()390 2815 y(/*)h(This)g(section)f(of)h(code)f(is)i +(feature:)390 3736 y Fn(\045{)390 3840 y(#include)46 +b()390 3944 y(/*)h(This)g(section)f(of)h(code)f(is)i (inserted)d(directly)h(into)g(the)h(output.)f(*/)390 -2919 y(int)h(return_month_days)c(\(struct)j(months)g(*months,)f(int)i -(is_leap_year\);)390 3023 y(\045})390 3126 y(struct)f(months)g({)i +4047 y(int)h(return_month_days)c(\(struct)j(months)g(*months,)f(int)i +(is_leap_year\);)390 4151 y(\045})390 4255 y(struct)f(months)g({)i (char)e(*name;)g(int)h(number;)f(int)h(days;)f(int)h(leap_days;)e(};) -390 3230 y(\045\045)390 3334 y(january,)141 b(1,)47 b(31,)g(31)390 -3438 y(february,)93 b(2,)47 b(28,)g(29)390 3542 y(march,)237 -b(3,)47 b(31,)g(31)390 3645 y(...)275 3780 y Fs(It)40 -b(is)g(p)s(ossible)e(to)j(omit)g(the)f(declaration)h(section)f(en)m -(tirely)-8 b(.)71 b(In)40 b(this)g(case)h(the)g(k)m(ey\014le)f(b)s -(egins)150 3889 y(directly)29 b(with)g(the)i(\014rst)e(k)m(eyw)m(ord)i -(line,)e(e.g.:)390 4025 y Fn(january,)141 b(1,)47 b(31,)g(31)390 -4129 y(february,)93 b(2,)47 b(28,)g(29)390 4233 y(march,)237 -b(3,)47 b(31,)g(31)390 4336 y(april,)237 b(4,)47 b(30,)g(30)390 -4440 y(...)150 4670 y Fj(3.1.2)63 b(F)-10 b(ormat)40 -b(for)h(Keyw)m(ord)f(En)m(tries)275 4870 y Fs(The)20 -b(second)g(k)m(ey\014le)h(format)g(section)f(con)m(tains)h(lines)e(of)i -(k)m(eyw)m(ords)f(and)g(an)m(y)h(asso)s(ciated)g(attributes)150 -4979 y(y)m(ou)34 b(migh)m(t)g(supply)-8 b(.)49 b(A)34 -b(line)e(b)s(eginning)g(with)g(`)p Fn(#)p Fs(')i(in)f(the)h(\014rst)f -(column)g(is)g(considered)f(a)j(commen)m(t.)150 5089 -y(Ev)m(erything)30 b(follo)m(wing)f(the)h(`)p Fn(#)p -Fs(')h(is)e(ignored,)h(up)f(to)i(and)f(including)d(the)j(follo)m(wing)f -(newline.)275 5230 y(The)i(\014rst)g(\014eld)f(of)i(eac)m(h)g -(non-commen)m(t)h(line)d(is)g(alw)m(a)m(ys)j(the)e(k)m(ey)i(itself.)43 -b(It)32 b(can)g(b)s(e)f(giv)m(en)g(in)g(t)m(w)m(o)150 -5340 y(w)m(a)m(ys:)54 b(as)37 b(a)g(simple)d(name,)k(i.e.,)h(without)c -(surrounding)f(string)h(quotation)i(marks,)h(or)e(as)h(a)g(string)p +390 4359 y(\045\045)390 4462 y(january,)141 b(1,)47 b(31,)g(31)390 +4566 y(february,)93 b(2,)47 b(28,)g(29)390 4670 y(march,)237 +b(3,)47 b(31,)g(31)390 4774 y(...)150 5022 y Fj(3.1.2)63 +b(F)-10 b(ormat)40 b(for)h(Keyw)m(ord)f(En)m(tries)275 +5230 y Fs(The)33 b(second)i(input)d(\014le)i(format)h(section)f(con)m +(tains)h(lines)d(of)j(k)m(eyw)m(ords)g(and)e(an)m(y)i(asso)s(ciated)g +(at-)150 5340 y(tributes)i(y)m(ou)i(migh)m(t)f(supply)-8 +b(.)63 b(A)39 b(line)d(b)s(eginning)g(with)h(`)p Fn(#)p +Fs(')i(in)e(the)i(\014rst)f(column)f(is)g(considered)h(a)p eop -%%Page: 13 15 -13 14 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(13)150 -299 y(enclosed)40 b(in)f(double-quotes,)k(in)c(C)h(syn)m(tax,)j(p)s -(ossibly)38 b(with)h(bac)m(kslash)h(escap)s(es)g(lik)m(e)g -Fn(\\")g Fs(or)g Fn(\\234)150 408 y Fs(or)d Fn(\\xa8)p -Fs(.)60 b(In)37 b(either)f(case,)41 b(it)36 b(m)m(ust)h(start)h(righ)m -(t)f(at)h(the)f(b)s(eginning)e(of)i(the)g(line,)h(without)e(leading)150 -518 y(whitespace.)57 b(In)35 b(this)g(con)m(text,)k(a)e(\\\014eld")e +%%Page: 16 18 +16 17 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(16)150 +299 y(commen)m(t.)53 b(Ev)m(erything)33 b(follo)m(wing)f(the)j(`)p +Fn(#)p Fs(')f(is)f(ignored,)h(up)f(to)i(and)e(including)e(the)j(follo)m +(wing)e(new-)150 408 y(line.)55 b(A)36 b(line)f(b)s(eginning)e(with)h +(`)p Fn(\045)p Fs(')i(in)f(the)h(\014rst)f(column)f(is)h(an)h(option)f +(declaration)h(and)f(m)m(ust)h(not)150 518 y(o)s(ccur)30 +b(within)e(the)j(k)m(eyw)m(ords)f(section.)275 698 y(The)36 +b(\014rst)g(\014eld)f(of)i(eac)m(h)g(non-commen)m(t)h(line)d(is)h(alw)m +(a)m(ys)h(the)g(k)m(eyw)m(ord)g(itself.)58 b(It)37 b(can)g(b)s(e)f(giv) +m(en)150 807 y(in)e(t)m(w)m(o)i(w)m(a)m(ys:)51 b(as)35 +b(a)g(simple)e(name,)k(i.e.,)f(without)e(surrounding)e(string)i +(quotation)h(marks,)h(or)f(as)h(a)150 917 y(string)h(enclosed)g(in)f +(double-quotes,)j(in)d(C)i(syn)m(tax,)i(p)s(ossibly)35 +b(with)h(bac)m(kslash)h(escap)s(es)h(lik)m(e)f Fn(\\")g +Fs(or)150 1027 y Fn(\\234)23 b Fs(or)i Fn(\\xa8)p Fs(.)37 +b(In)24 b(either)g(case,)j(it)d(m)m(ust)g(start)h(righ)m(t)f(at)h(the)g +(b)s(eginning)c(of)k(the)g(line,)f(without)f(leading)150 +1136 y(whitespace.)57 b(In)35 b(this)g(con)m(text,)k(a)e(\\\014eld")e (is)g(considered)g(to)h(extend)g(up)f(to,)j(but)d(not)h(include,)g(the) -150 628 y(\014rst)i(blank,)h(comma,)j(or)c(newline.)63 +150 1246 y(\014rst)i(blank,)h(comma,)j(or)c(newline.)63 b(Here)39 b(is)e(a)i(simple)e(example)h(tak)m(en)h(from)f(a)h(partial)f -(list)f(of)h(C)150 737 y(reserv)m(ed)31 b(w)m(ords:)390 -865 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 969 y(#)h(for)g(a)h(complete)d(list)i(of)g -(ANSI)g(C)g(reserved)f(words.)390 1073 y(unsigned)390 -1177 y(sizeof)390 1280 y(switch)390 1384 y(signed)390 -1488 y(if)390 1592 y(default)390 1696 y(for)390 1799 -y(while)390 1903 y(return)275 2030 y Fs(Note)38 b(that)f(unlik)m(e)e +(list)f(of)h(C)150 1355 y(reserv)m(ed)31 b(w)m(ords:)390 +1529 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 1633 y(#)h(for)g(a)h(complete)d(list)i(of)g +(ANSI)g(C)g(reserved)f(words.)390 1737 y(unsigned)390 +1841 y(sizeof)390 1944 y(switch)390 2048 y(signed)390 +2152 y(if)390 2256 y(default)390 2360 y(for)390 2463 +y(while)390 2567 y(return)275 2740 y Fs(Note)38 b(that)f(unlik)m(e)e Fn(flex)h 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)f(if)h(the)h(declaration)150 -2140 y(section)31 b(is)e(empt)m(y)-8 b(.)275 2274 y(Additional)26 +2849 y(section)31 b(is)e(empt)m(y)-8 b(.)275 3029 y(Additional)26 b(\014elds)h(ma)m(y)i(optionally)e(follo)m(w)h(the)h(leading)e(k)m(eyw) m(ord.)41 b(Fields)27 b(should)f(b)s(e)i(separated)150 -2383 y(b)m(y)g(commas,)i(and)d(terminate)i(at)g(the)f(end)g(of)g(line.) +3139 y(b)m(y)g(commas,)i(and)d(terminate)i(at)g(the)f(end)g(of)g(line.) 39 b(What)29 b(these)f(\014elds)f(mean)h(is)g(en)m(tirely)f(up)g(to)i -(y)m(ou;)150 2493 y(they)k(are)h(used)e(to)i(initialize)c(the)k(elemen) +(y)m(ou;)150 3248 y(they)k(are)h(used)e(to)i(initialize)c(the)k(elemen) m(ts)f(of)g(the)h(user-de\014ned)d Fn(struct)h Fs(pro)m(vided)f(b)m(y)i -(y)m(ou)h(in)e(the)150 2602 y(declaration)k(section.)59 -b(If)36 b(the)g(`)p Fn(-t)p Fs(')g(option)g(is)f Fl(not)46 -b Fs(enabled)35 b(these)i(\014elds)e(are)i(simply)d(ignored.)57 -b(All)150 2712 y(previous)29 b(examples)h(except)h(the)g(last)f(one)h -(con)m(tain)f(k)m(eyw)m(ord)h(attributes.)150 2934 y -Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 b(unctions)275 -3127 y Fs(The)30 b(optional)g(third)f(section)i(also)g(corresp)s(onds)e -(closely)h(with)g(con)m(v)m(en)m(tions)i(found)d(in)h -Fn(flex)g Fs(and)150 3236 y Fn(bison)p Fs(.)36 b(All)21 +(y)m(ou)h(in)e(the)150 3358 y(declaration)38 b(section.)66 +b(If)39 b(the)g(`)p Fn(-t)p Fs(')f(option)g(\(or,)k(equiv)-5 +b(alen)m(tly)d(,)40 b(the)f(`)p Fn(\045struct-type)p +Fs(')d(declaration\))150 3468 y(is)f Fl(not)45 b Fs(enabled)35 +b(these)h(\014elds)f(are)h(simply)d(ignored.)57 b(All)34 +b(previous)h(examples)g(except)i(the)f(last)g(one)150 +3577 y(con)m(tain)31 b(k)m(eyw)m(ord)g(attributes.)150 +3892 y Fj(3.1.3)63 b(Including)41 b(Additional)g(C)g(F)-10 +b(unctions)275 4130 y Fs(The)30 b(optional)g(third)f(section)i(also)g +(corresp)s(onds)e(closely)h(with)g(con)m(v)m(en)m(tions)i(found)d(in)h +Fn(flex)g Fs(and)150 4239 y Fn(bison)p Fs(.)36 b(All)21 b(text)i(in)e(this)f(section,)k(starting)e(at)h(the)f(\014nal)e(`)p Fn(\045\045)p Fs(')i(and)f(extending)h(to)g(the)g(end)g(of)g(the)g -(input)150 3346 y(\014le,)30 b(is)g(included)f(v)m(erbatim)h(in)m(to)h +(input)150 4349 y(\014le,)30 b(is)g(included)f(v)m(erbatim)h(in)m(to)h (the)g(generated)h(output)f(\014le.)41 b(Naturally)-8 b(,)31 b(it)f(is)g(y)m(our)h(resp)s(onsibilit)m(y)150 -3455 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)f(in)g(this)f -(section)h(is)g(v)-5 b(alid)28 b(C.)150 3711 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 3903 y Fs(Sev)m(eral)27 b(options)g(con)m(trol)h(ho)m(w)f -(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 4013 y(C)22 b(function)f(are)h(generated.)39 +4459 y(to)g(ensure)f(that)h(the)f(co)s(de)h(con)m(tained)f(in)g(this)f +(section)h(is)g(v)-5 b(alid)28 b(C.)150 4773 y Fj(3.1.4)63 +b(Where)41 b(to)g(place)f(directiv)m(es)g(for)h(GNU)h +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)g(GNU)g Fn(indent)e Fs(on)h(a)g Fn(gperf)f +Fs(input)g(\014le,)h(y)m(ou)g(will)e(see)j(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)f(that)h(con)m(trol)h +Fn(gperf)p Fs('s)d(in)m(terpretation)i(of)150 5230 y(the)23 +b(input)e(\014le.)37 b(Therefore)23 b(y)m(ou)g(ha)m(v)m(e)h(to)g +(insert)e(some)h(directiv)m(es)f(for)h(GNU)h Fn(indent)p +Fs(.)36 b(More)24 b(precisely)-8 b(,)150 5340 y(assuming)29 +b(the)i(most)f(general)h(input)d(\014le)i(structure)p +eop +%%Page: 17 19 +17 18 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(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)e(insert)g(`)p +Fn(*INDENT-OFF*)p Fs(')f(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)27 b(options)g(con)m(trol)h(ho)m(w)f(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)f(are)h(generated.)39 b(They)22 b(are)h(called)e Fn(hash)g Fs(and)h Fn(in_word_set)p -Fs(,)f(although)g(y)m(ou)i(ma)m(y)g(mo)s(dify)150 4122 +Fs(,)f(although)g(y)m(ou)i(ma)m(y)g(mo)s(dify)150 3324 y(their)31 b(names)h(with)f(a)h(command-line)f(option.)45 b(Both)33 b(functions)e(require)g(t)m(w)m(o)i(argumen)m(ts,)g(a)g -(string,)150 4232 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)g +(string,)150 3434 y Fn(char)c(*)43 b Fo(str)p Fs(,)j(and)d(a)g(length)g (parameter,)k Fn(int)42 b Fo(len)p Fs(.)78 b(Their)42 b(default)g(function)g(protot)m(yp)s(es)h(are)h(as)150 -4341 y(follo)m(ws:)3525 4573 y(F)-8 b(unction)-3725 b +3543 y(follo)m(ws:)3525 3796 y(F)-8 b(unction)-3725 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 4682 y Fs(By)35 b(default,)g(the)f(generated)i +Ff(\))390 3905 y Fs(By)35 b(default,)g(the)f(generated)i Fn(hash)d Fs(function)g(returns)g(an)i(in)m(teger)g(v)-5 -b(alue)33 b(created)j(b)m(y)e(adding)390 4792 y Fo(len)c -Fs(to)h(sev)m(eral)g(user-sp)s(eci\014ed)e Fo(str)37 -b Fs(k)m(ey)31 b(p)s(ositions)e(indexed)g(in)m(to)i(an)f -Fo(asso)s(ciated)h(v)-5 b(alues)34 b Fs(table)390 4902 -y(stored)j(in)f(a)i(lo)s(cal)f(static)h(arra)m(y)-8 b(.)62 -b(The)37 b(asso)s(ciated)h(v)-5 b(alues)37 b(table)g(is)f(constructed)i -(in)m(ternally)390 5011 y(b)m(y)30 b Fn(gperf)e Fs(and)h(later)h -(output)g(as)g(a)g(static)g(lo)s(cal)g(C)f(arra)m(y)h(called)f(`)p -Fn(hash_table)p Fs(';)f(its)i(meaning)390 5121 y(and)j(prop)s(erties)e -(are)j(describ)s(ed)d(b)s(elo)m(w)i(\(see)h(Chapter)f(7)h([Implemen)m -(tation],)g(page)g(23\).)50 b(The)390 5230 y(relev)-5 -b(an)m(t)22 b(k)m(ey)h(p)s(ositions)d(are)i(sp)s(eci\014ed)e(via)i(the) -g(`)p Fn(-k)p Fs(')g(option)f(when)g(running)e Fn(gperf)p -Fs(,)k(as)f(detailed)390 5340 y(in)29 b(the)i Fl(Options)38 -b Fs(section)31 b(b)s(elo)m(w\(see)g(Chapter)e(4)i([Options],)f(page)h -(15\).)p eop -%%Page: 14 16 -14 15 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 -b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(14)3525 -299 y(F)-8 b(unction)-3725 b Fg(in)p 253 299 35 5 v 41 -w(w)m(ord)p 542 299 V 41 w(set)44 b Ff(\()p Fn(const)30 +b(alue)33 b(created)j(b)m(y)e(adding)390 4015 y Fo(len)27 +b Fs(to)h(sev)m(eral)g(user-sp)s(eci\014ed)d Fo(str)34 +b Fs(b)m(yte)28 b(p)s(ositions)e(indexed)g(in)m(to)h(an)g +Fo(asso)s(ciated)h(v)-5 b(alues)31 b Fs(table)390 4124 +y(stored)d(in)f(a)h(lo)s(cal)g(static)g(arra)m(y)-8 b(.)41 +b(The)28 b(asso)s(ciated)g(v)-5 b(alues)28 b(table)g(is)f(constructed)h +(in)m(ternally)e(b)m(y)390 4234 y Fn(gperf)34 b Fs(and)g(later)h +(output)f(as)i(a)f(static)h(lo)s(cal)e(C)g(arra)m(y)i(called)e(`)p +Fn(hash_table)p Fs('.)52 b(The)35 b(relev)-5 b(an)m(t)390 +4344 y(selected)27 b(p)s(ositions)e(\(i.e.)40 b(indices)25 +b(in)m(to)i Fo(str)7 b Fs(\))26 b(are)h(sp)s(eci\014ed)e(via)i(the)g(`) +p Fn(-k)p Fs(')g(option)f(when)g(running)390 4453 y Fn(gperf)p +Fs(,)j(as)i(detailed)e(in)g(the)i Fl(Options)39 b Fs(section)30 +b(b)s(elo)m(w)g(\(see)h(Chapter)f(4)h([Options],)e(page)i(19\).)3525 +4705 y(F)-8 b(unction)-3725 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 408 y Fs(If)43 b Fo(str)49 b Fs(is)42 b(in)g(the)h(k)m(eyw)m -(ord)g(set,)k(returns)42 b(a)h(p)s(oin)m(ter)f(to)i(that)g(k)m(eyw)m -(ord.)79 b(More)43 b(exactly)-8 b(,)48 b(if)390 518 y(the)34 -b(option)f(`)p Fn(-t)p Fs(')h(w)m(as)g(giv)m(en,)g(it)g(returns)e(a)i -(p)s(oin)m(ter)f(to)h(the)g(matc)m(hing)g(k)m(eyw)m(ord's)g(structure.) -390 628 y(Otherwise)29 b(it)h(returns)f Fn(NULL)p Fs(.)275 -812 y(If)c(the)i(option)f(`)p Fn(-c)p Fs(')g(is)f(not)i(used,)f -Fo(str)33 b Fs(m)m(ust)26 b(b)s(e)g(a)h(NUL)f(terminated)g(string)f(of) -i(exactly)g(length)f Fo(len)p Fs(.)150 922 y(If)k(`)p -Fn(-c)p Fs(')g(is)f(used,)g Fo(str)37 b Fs(m)m(ust)30 -b(simply)d(b)s(e)j(an)g(arra)m(y)g(of)g Fo(len)g Fs(c)m(haracters)h -(and)f(do)s(es)f(not)i(need)f(to)g(b)s(e)g(NUL)150 1031 -y(terminated.)275 1166 y(The)f(co)s(de)i(generated)g(for)g(these)f(t)m -(w)m(o)i(functions)d(is)g(a\013ected)j(b)m(y)f(the)f(follo)m(wing)f -(options:)150 1325 y(`)p Fn(-t)p Fs(')150 1435 y(`)p -Fn(--struct-type)p Fs(')630 1544 y(Mak)m(e)j(use)e(of)h(the)f -(user-de\014ned)f Fn(struct)p Fs(.)150 1704 y(`)p Fn(-S)h -Fo(total-switc)m(h-statemen)m(ts)t Fs(')150 1813 y(`)p -Fn(--switch=)p Fo(total-switc)m(h-statemen)m(ts)t Fs(')630 -1923 y(Generate)22 b(1)f(or)g(more)g(C)f Fn(switch)f +Ff(\))390 4815 y Fs(If)k Fo(str)41 b Fs(is)32 b(in)h(the)h(k)m(eyw)m +(ord)g(set,)i(returns)c(a)j(p)s(oin)m(ter)e(to)h(that)h(k)m(eyw)m(ord.) +51 b(More)35 b(exactly)-8 b(,)36 b(if)d(the)390 4924 +y(option)d(`)p Fn(-t)p Fs(')h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)30 +b(the)h(`)p Fn(\045struct-type)p Fs(')d(declaration\))i(w)m(as)h(giv)m +(en,)g(it)f(returns)g(a)390 5034 y(p)s(oin)m(ter)f(to)i(the)g(matc)m +(hing)g(k)m(eyw)m(ord's)f(structure.)41 b(Otherwise)29 +b(it)h(returns)f Fn(NULL)p Fs(.)275 5230 y(If)39 b(the)i(option)e(`)p +Fn(-c)p Fs(')h(\(or,)j(equiv)-5 b(alen)m(tly)d(,)42 b(the)f(`)p +Fn(\045compare-strncmp)p Fs(')36 b(declaration\))k(is)f(not)h(used,)150 +5340 y Fo(str)k Fs(m)m(ust)37 b(b)s(e)f(a)i(NUL)f(terminated)g(string)f +(of)i(exactly)g(length)e Fo(len)p Fs(.)61 b(If)37 b(`)p +Fn(-c)p Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)p +eop +%%Page: 18 20 +18 19 bop 150 -116 a Fs(Chapter)30 b(3:)41 b(High-Lev)m(el)30 +b(Description)g(of)g(GNU)h Fn(gperf)1520 b Fs(18)150 +299 y(`)p Fn(\045compare-strncmp)p Fs(')22 b(declaration\))k(is)f +(used,)h Fo(str)32 b Fs(m)m(ust)26 b(simply)e(b)s(e)h(an)h(arra)m(y)g +(of)g Fo(len)f Fs(b)m(ytes)i(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)d(is)g(a\013ected)j(b) +m(y)f(the)f(follo)m(wing)f(options:)150 702 y(`)p Fn(-t)p +Fs(')150 812 y(`)p Fn(--struct-type)p Fs(')630 922 y(Mak)m(e)j(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,)i(\(and)d(p)s(oten)m -(tially)630 2032 y(sparse\))j(static)g(arra)m(y)-8 b(.)40 +(tially)630 1410 y(sparse\))j(static)g(arra)m(y)-8 b(.)40 b(Although)22 b(the)h(exact)h(time)f(and)f(space)i(sa)m(vings)f(of)g -(this)f(approac)m(h)630 2142 y(v)-5 b(ary)32 b(according)f(to)i(y)m +(this)f(approac)m(h)630 1519 y(v)-5 b(ary)32 b(according)f(to)i(y)m (our)e(C)g(compiler's)g(degree)h(of)g(optimization,)f(this)f(metho)s(d) -i(often)630 2252 y(results)d(in)g(smaller)g(and)h(faster)h(co)s(de.)275 -2411 y(If)d(the)i(`)p Fn(-t)p Fs(')f(and)f(`)p Fn(-S)p -Fs(')h(options)g(are)g(omitted,)h(the)f(default)g(action)g(is)f(to)i -(generate)h(a)e Fn(char)h(*)e Fs(arra)m(y)150 2521 y(con)m(taining)35 -b(the)h(k)m(eys,)h(together)g(with)d(additional)g(n)m(ull)f(strings)i -(used)f(for)h(padding)f(the)i(arra)m(y)-8 b(.)57 b(By)150 -2630 y(exp)s(erimen)m(ting)27 b(with)g(the)h(v)-5 b(arious)28 -b(input)e(and)i(output)g(options,)g(and)g(timing)f(the)h(resulting)f(C) -g(co)s(de,)150 2740 y(y)m(ou)k(can)f(determine)g(the)g(b)s(est)g -(option)g(c)m(hoices)h(for)f(di\013eren)m(t)g(k)m(eyw)m(ord)h(set)g(c)m -(haracteristics.)150 2997 y Fr(3.3)68 b(Use)46 b(of)f(NUL)g(c)l -(haracters)275 3190 y Fs(By)30 b(default,)g(the)g(co)s(de)g(generated)i -(b)m(y)e Fn(gperf)e Fs(op)s(erates)j(on)f(zero)h(terminated)f(strings,) -f(the)h(usual)150 3299 y(represen)m(tation)40 b(of)f(strings)g(in)f(C.) -i(This)d(means)j(that)g(the)g(k)m(eyw)m(ords)g(in)e(the)i(input)e -(\014le)g(m)m(ust)i(not)150 3409 y(con)m(tain)f(NUL)f(c)m(haracters,)43 -b(and)37 b(the)i Fo(str)45 b Fs(argumen)m(t)39 b(passed)f(to)h -Fn(hash)e Fs(or)i Fn(in_word_set)c Fs(m)m(ust)k(b)s(e)150 -3518 y(NUL)30 b(terminated)g(and)g(ha)m(v)m(e)i(exactly)f(length)f -Fo(len)p Fs(.)275 3653 y(If)f(option)g(`)p Fn(-c)p Fs(')h(is)f(used,)h -(then)f(the)h Fo(str)37 b Fs(argumen)m(t)30 b(do)s(es)g(not)g(need)f -(to)i(b)s(e)e(NUL)h(terminated.)40 b(The)150 3763 y(co)s(de)i -(generated)h(b)m(y)f Fn(gperf)e Fs(will)f(only)i(access)j(the)e -(\014rst)f Fo(len)p Fs(,)j(not)e Fo(len)p Fn(+)p Fo(1)p -Fs(,)i(b)m(ytes)f(starting)e(at)i Fo(str)p Fs(.)150 3872 -y(Ho)m(w)m(ev)m(er,)33 b(the)d(k)m(eyw)m(ords)h(in)e(the)i(input)d -(\014le)h(still)g(m)m(ust)h(not)h(con)m(tain)f(NUL)h(c)m(haracters.)275 -4007 y(If)26 b(option)h(`)p Fn(-l)p Fs(')g(is)f(used,)i(then)f(the)g -(hash)g(table)g(p)s(erforms)f(binary)f(comparison.)39 -b(The)27 b(k)m(eyw)m(ords)g(in)150 4116 y(the)33 b(input)f(\014le)g(ma) -m(y)i(con)m(tain)f(NUL)h(c)m(haracters,)h(written)e(in)f(string)g(syn)m -(tax)i(as)f Fn(\\000)f Fs(or)h Fn(\\x00)p Fs(,)h(and)150 -4226 y(the)28 b(co)s(de)h(generated)g(b)m(y)f Fn(gperf)e -Fs(will)g(treat)j(NUL)f(lik)m(e)g(an)m(y)g(other)h(c)m(haracter.)41 -b(Also,)29 b(in)e(this)g(case)i(the)150 4335 y(`)p Fn(-c)p -Fs(')h(option)g(is)g(ignored.)p eop -%%Page: 15 17 -15 16 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(15)150 299 y Fp(4)80 b(In)l(v)l(oking)53 -b Fm(gperf)275 522 y Fs(There)30 b(are)i Fl(many)40 b -Fs(options)31 b(to)h Fn(gperf)p Fs(.)41 b(They)31 b(w)m(ere)h(added)e -(to)i(mak)m(e)g(the)g(program)f(more)g(con)m(v)m(e-)150 -632 y(nien)m(t)g(for)f(use)h(with)f(real)h(applications.)41 -b(\\On-line")30 b(help)g(is)g(readily)g(a)m(v)-5 b(ailable)30 -b(via)h(the)g(`)p Fn(-h)p Fs(')g(option.)150 742 y(Here)g(is)e(the)i -(complete)g(list)e(of)h(options.)150 993 y Fr(4.1)68 -b(Options)45 b(that)h(a\013ect)g(In)l(terpretation)h(of)e(the)g(Input)g -(File)150 1206 y Fs(`)p Fn(-e)30 b Fo(k)m(eyw)m(ord-delimiter-list)r -Fs(')150 1315 y(`)p Fn(--delimiters=)p Fo(k)m(eyw)m(ord-delimiter-list) -r Fs(')630 1425 y(Allo)m(ws)g(the)h(user)f(to)h(pro)m(vide)f(a)h -(string)f(con)m(taining)g(delimiters)f(used)h(to)h(separate)h(k)m(ey-) -630 1535 y(w)m(ords)k(from)h(their)f(attributes.)60 b(The)37 -b(default)f(is)g Fn(")p Fs(,)p Fn(\\)p Fs(n)p Fn(")p -Fs(.)60 b(This)35 b(option)h(is)g(essen)m(tial)h(if)630 -1644 y(y)m(ou)26 b(w)m(an)m(t)g(to)h(use)e(k)m(eyw)m(ords)h(that)g(ha)m -(v)m(e)h(em)m(b)s(edded)d(commas)i(or)g(newlines.)37 -b(One)25 b(useful)630 1754 y(tric)m(k)30 b(is)g(to)h(use)f(-e'T)-8 -b(AB',)32 b(where)e(T)-8 b(AB)31 b(is)f(the)g(literal)f(tab)i(c)m -(haracter.)150 1909 y(`)p Fn(-t)p Fs(')150 2019 y(`)p -Fn(--struct-type)p Fs(')630 2128 y(Allo)m(ws)f(y)m(ou)i(to)g(include)d +i(often)630 1629 y(results)d(in)g(smaller)g(and)h(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)h(\(or,)g(equiv)-5 b(alen)m(tly)d(,)28 +b(the)g(`)p Fn(\045struct-type)p Fs(')d(and)i(`)p Fn(\045switch)p +Fs(')g(declara-)150 1898 y(tions\))e(are)g(omitted,)h(the)f(default)f +(action)h(is)f(to)i(generate)g(a)g Fn(char)j(*)24 b Fs(arra)m(y)i(con)m +(taining)e(the)h(k)m(eyw)m(ords,)150 2007 y(together)32 +b(with)d(additional)g(empt)m(y)i(strings)e(used)h(for)g(padding)f(the)h +(arra)m(y)-8 b(.)43 b(By)30 b(exp)s(erimen)m(ting)f(with)150 +2117 y(the)i(v)-5 b(arious)31 b(input)e(and)h(output)h(options,)g(and)g +(timing)e(the)j(resulting)d(C)i(co)s(de,)h(y)m(ou)f(can)h(determine)150 +2227 y(the)f(b)s(est)f(option)f(c)m(hoices)i(for)g(di\013eren)m(t)e(k)m +(eyw)m(ord)i(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,)g(the)g +(co)s(de)g(generated)i(b)m(y)e Fn(gperf)e Fs(op)s(erates)j(on)f(zero)h +(terminated)f(strings,)f(the)h(usual)150 2786 y(represen)m(tation)40 +b(of)f(strings)g(in)f(C.)i(This)d(means)j(that)g(the)g(k)m(eyw)m(ords)g +(in)e(the)i(input)e(\014le)g(m)m(ust)i(not)150 2896 y(con)m(tain)c(NUL) +g(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)30 b(and)g(ha)m(v)m(e)h(exactly)g(length)f +Fo(len)p Fs(.)275 3140 y(If)35 b(option)h(`)p Fn(-c)p +Fs(')g(\(or,)i(equiv)-5 b(alen)m(tly)d(,)37 b(the)f(`)p +Fn(\045compare-strncmp)p Fs(')c(declaration\))k(is)f(used,)i(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.)40 b(The)27 b(co)s(de)h(generated)h(b)m(y)f +Fn(gperf)f Fs(will)e(only)150 3359 y(access)k(the)f(\014rst)g +Fo(len)p Fs(,)f(not)i Fo(len)p Fn(+)p Fo(1)p Fs(,)e(b)m(ytes)i +(starting)f(at)g Fo(str)p Fs(.)40 b(Ho)m(w)m(ev)m(er,)31 +b(the)d(k)m(eyw)m(ords)g(in)f(the)h(input)e(\014le)150 +3469 y(still)i(m)m(ust)j(not)f(con)m(tain)h(NUL)f(b)m(ytes.)275 +3603 y(If)35 b(option)h(`)p Fn(-l)p Fs(')g(\(or,)i(equiv)-5 +b(alen)m(tly)d(,)37 b(the)f(`)p Fn(\045compare-lengths)p +Fs(')c(declaration\))k(is)f(used,)i(then)f(the)150 3713 +y(hash)c(table)h(p)s(erforms)e(binary)g(comparison.)46 +b(The)33 b(k)m(eyw)m(ords)g(in)e(the)i(input)e(\014le)g(ma)m(y)j(con)m +(tain)f(NUL)150 3822 y(b)m(ytes,)46 b(written)40 b(in)h(string)g(syn)m +(tax)h(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)g(an)m(y)h(other)g(b)m(yte.)75 b(Also,)44 b(in)c(this)g(case)j(the)f +(`)p Fn(-c)p Fs(')f(option)g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)44 +b(the)150 4042 y(`)p Fn(\045compare-strncmp)p Fs(')26 +b(declaration\))31 b(is)e(ignored.)p eop +%%Page: 19 21 +19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +b Fn(gperf)2433 b Fs(19)150 299 y Fp(4)80 b(In)l(v)l(oking)53 +b Fm(gperf)275 542 y Fs(There)35 b(are)i Fl(many)46 b +Fs(options)35 b(to)j 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)e +(for)f(use)g(with)f(real)h(applications.)47 b(\\On-line")32 +b(help)g(is)g(readily)g(a)m(v)-5 b(ailable)33 b(via)g(the)g(`)p +Fn(--help)p Fs(')150 761 y(option.)40 b(Here)31 b(is)e(the)i(complete)g +(list)e(of)h(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)29 b(y)m(ou)i(to)g(sp)s(ecify)e(the)i(name)f(of)h(the)f +(\014le)g(to)h(whic)m(h)e(the)i(output)f(is)f(written)g(to.)275 +1521 y(The)g(results)h(are)g(written)g(to)h(standard)e(output)h(if)g +(no)g(output)g(\014le)f(is)h(sp)s(eci\014ed)f(or)h(if)f(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)g +(are)h(also)f(a)m(v)-5 b(ailable)42 b(as)h(declarations)f(in)f(the)i +(input)e(\014le)g(\(see)j(Section)e(3.1.1.2)150 2090 +y([Gp)s(erf)30 b(Declarations],)h(page)g(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)e(y)m(ou)h(to)g(pro)m(vide)f(a)h(string)f +(con)m(taining)g(delimiters)f(used)g(to)j(separate)g(k)m(eyw)m(ords)630 +2583 y(from)k(their)g(attributes.)53 b(The)34 b(default)f(is)h +Fn(")p Fs(,)p Fn(")p Fs(.)53 b(This)33 b(option)h(is)f(essen)m(tial)i +(if)e(y)m(ou)i(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.)46 +b(One)33 b(useful)e(tric)m(k)i(is)630 2802 y(to)e(use)f(-e'T)-8 +b(AB',)33 b(where)c(T)-8 b(AB)31 b(is)f(the)g(literal)f(tab)i(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)f(y)m(ou)i(to)g(include)d (a)i Fn(struct)f Fs(t)m(yp)s(e)h(declaration)g(for)g(generated)h(co)s -(de.)44 b(An)m(y)31 b(text)630 2238 y(b)s(efore)43 b(a)i(pair)d(of)i +(de.)44 b(An)m(y)31 b(text)630 3293 y(b)s(efore)43 b(a)i(pair)d(of)i (consecutiv)m(e)h(`)p Fn(\045\045)p Fs(')e(is)g(considered)g(part)g(of) -h(the)g(t)m(yp)s(e)g(declaration.)630 2347 y(Keyw)m(ords)39 +h(the)g(t)m(yp)s(e)g(declaration.)630 3403 y(Keyw)m(ords)39 b(and)g(additional)e(\014elds)h(ma)m(y)j(follo)m(w)d(this,)j(one)f -(group)f(of)h(\014elds)e(p)s(er)g(line.)630 2457 y(A)31 +(group)f(of)h(\014elds)e(p)s(er)g(line.)630 3512 y(A)31 b(set)g(of)g(examples)f(for)g(generating)h(p)s(erfect)f(hash)g(tables)h -(and)f(functions)f(for)h(Ada,)h(C,)630 2566 y(C)p Fn(++)p +(and)f(functions)f(for)h(Ada,)h(C,)630 3622 y(C)p Fn(++)p Fs(,)24 b(P)m(ascal,)i(Mo)s(dula)c(2,)k(Mo)s(dula)c(3)i(and)f(Ja)m(v)-5 b(aScript)23 b(reserv)m(ed)g(w)m(ords)g(are)h(distributed)630 -2676 y(with)29 b(this)g(release.)150 2927 y Fr(4.2)68 -b(Options)45 b(to)h(sp)t(ecify)f(the)g(Language)h(for)f(the)g(Output)f -(Co)t(de)150 3140 y Fs(`)p Fn(-L)30 b Fo(generated-language-name)5 -b Fs(')150 3250 y(`)p Fn(--language=)p Fo(generated-language-name)g -Fs(')630 3359 y(Instructs)33 b Fn(gperf)f Fs(to)i(generate)h(co)s(de)f -(in)e(the)i(language)g(sp)s(eci\014ed)d(b)m(y)j(the)g(option's)f(ar-) -630 3469 y(gumen)m(t.)41 b(Languages)31 b(handled)e(are)i(curren)m -(tly:)630 3624 y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)25 -b(K&R)h(C.)g(This)e(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(old-st)m -(yle)g(C)g(com-)1110 3734 y(pilers)c(and)i(ANSI)f(C)h(compilers,)g(but) -g(ANSI)f(C)h(compilers)f(ma)m(y)h(\015ag)h(w)m(arn-)1110 -3843 y(ings)k(\(or)i(ev)m(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king) -g(`)p Fn(const)p Fs('.)630 3999 y(`)p Fn(C)p Fs(')382 -b(Common)23 b(C.)f(This)g(language)h(is)f(understo)s(o)s(d)f(b)m(y)i -(ANSI)g(C)f(compilers,)i(and)1110 4108 y(also)29 b(b)m(y)f(old-st)m -(yle)g(C)h(compilers,)e(pro)m(vided)g(that)j(y)m(ou)f -Fn(#define)f(const)f Fs(to)1110 4218 y(empt)m(y)k(for)f(compilers)f -(whic)m(h)g(don't)h(kno)m(w)h(ab)s(out)f(this)f(k)m(eyw)m(ord.)630 -4373 y(`)p Fn(ANSI-C)p Fs(')142 b(ANSI)39 b(C.)h(This)d(language)j(is)f -(understo)s(o)s(d)f(b)m(y)h(ANSI)g(C)h(compilers)e(and)1110 -4482 y(C)p Fn(++)29 b Fs(compilers.)630 4638 y(`)p Fn(C++)p -Fs(')286 b(C)p Fn(++)p Fs(.)40 b(This)28 b(language)j(is)f(understo)s -(o)s(d)e(b)m(y)i(C)p Fn(++)g Fs(compilers.)630 4793 y(The)g(default)f -(is)h(C.)150 4948 y(`)p Fn(-a)p Fs(')334 b(This)32 b(option)h(is)f -(supp)s(orted)g(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i -(of)g Fn(gperf)p Fs(.)49 b(It)630 5058 y(do)s(es)30 b(not)h(do)f(an)m -(ything.)150 5213 y(`)p Fn(-g)p Fs(')334 b(This)32 b(option)h(is)f +3731 y(with)29 b(this)g(release.)150 3894 y(`)p Fn(--ignore-case)p +Fs(')630 4003 y(Consider)42 b(upp)s(er)g(and)i(lo)m(w)m(er)g(case)h +(ASCI)s(I)e(c)m(haracters)i(as)f(equiv)-5 b(alen)m(t.)81 +b(The)44 b(string)630 4113 y(comparison)27 b(will)f(use)i(a)h(case)g +(insigni\014can)m(t)d(c)m(haracter)k(comparison.)39 b(Note)29 +b(that)g(lo)s(cale)630 4222 y(dep)s(enden)m(t)e(case)i(mappings)e(are)h +(ignored.)39 b(This)27 b(option)g(is)h(therefore)g(not)h(suitable)d(if) +i(a)630 4332 y(prop)s(erly)k(in)m(ternationalized)h(or)h(lo)s(cale)g(a) +m(w)m(are)i(case)f(mapping)e(should)f(b)s(e)i(used.)52 +b(\(F)-8 b(or)630 4442 y(example,)30 b(in)e(a)h(T)-8 +b(urkish)28 b(lo)s(cale,)h(the)h(upp)s(er)d(case)k(equiv)-5 +b(alen)m(t)28 b(of)i(the)g(lo)m(w)m(ercase)g(ASCI)s(I)630 +4551 y(letter)41 b(`)p Fn(i)p Fs(')h(is)e(the)h(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)c(is)g(b)s +(etter)i(to)f(apply)f(an)h(upp)s(ercase)f(or)h(lo)m(w)m(ercase)h(con)m +(v)m(ersion)g(on)f(the)g(string)630 4770 y(b)s(efore)30 +b(passing)f(it)h(to)h(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)g(are)h(also)f +(a)m(v)-5 b(ailable)42 b(as)h(declarations)f(in)f(the)i(input)e(\014le) +g(\(see)j(Section)e(3.1.1.2)150 5340 y([Gp)s(erf)30 b(Declarations],)h +(page)g(12\).)p eop +%%Page: 20 22 +20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +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)e(the)i(language)g(sp)s +(eci\014ed)d(b)m(y)j(the)g(option's)f(ar-)630 628 y(gumen)m(t.)41 +b(Languages)31 b(handled)e(are)i(curren)m(tly:)630 798 +y(`)p Fn(KR-C)p Fs(')238 b(Old-st)m(yle)25 b(K&R)h(C.)g(This)e +(language)j(is)f(understo)s(o)s(d)e(b)m(y)i(old-st)m(yle)g(C)g(com-) +1110 907 y(pilers)c(and)i(ANSI)f(C)h(compilers,)g(but)g(ANSI)f(C)h +(compilers)f(ma)m(y)h(\015ag)h(w)m(arn-)1110 1017 y(ings)k(\(or)i(ev)m +(en)g(errors\))f(b)s(ecause)h(of)f(lac)m(king)g(`)p Fn(const)p +Fs('.)630 1187 y(`)p Fn(C)p Fs(')382 b(Common)23 b(C.)f(This)g +(language)h(is)f(understo)s(o)s(d)f(b)m(y)i(ANSI)g(C)f(compilers,)i +(and)1110 1296 y(also)29 b(b)m(y)f(old-st)m(yle)g(C)h(compilers,)e(pro) +m(vided)g(that)j(y)m(ou)f Fn(#define)f(const)f Fs(to)1110 +1406 y(empt)m(y)k(for)f(compilers)f(whic)m(h)g(don't)h(kno)m(w)h(ab)s +(out)f(this)f(k)m(eyw)m(ord.)630 1576 y(`)p Fn(ANSI-C)p +Fs(')142 b(ANSI)39 b(C.)h(This)d(language)j(is)f(understo)s(o)s(d)f(b)m +(y)h(ANSI)g(C)h(compilers)e(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)28 b(language)j(is)f(understo)s(o)s(d)e(b)m(y)i +(C)p Fn(++)g Fs(compilers.)630 2025 y(The)g(default)f(is)h(C.)150 +2195 y(`)p Fn(-a)p Fs(')334 b(This)32 b(option)h(is)f(supp)s(orted)g +(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i(of)g +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)32 b(option)h(is)f (supp)s(orted)g(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i -(of)g Fn(gperf)p Fs(.)49 b(It)630 5322 y(do)s(es)30 b(not)h(do)f(an)m -(ything.)p eop -%%Page: 16 18 -16 17 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(16)150 299 y Fr(4.3)68 b(Options)45 -b(for)g(\014ne)g(tuning)g(Details)i(in)e(the)g(Output)f(Co)t(de)150 -588 y Fs(`)p Fn(-K)30 b Fo(k)m(ey-name)5 b Fs(')150 698 -y(`)p Fn(--slot-name=)p Fo(k)m(ey-name)g Fs(')630 808 -y(This)37 b(option)i(is)f(only)g(useful)f(when)h(option)h(`)p -Fn(-t)p Fs(')g(has)g(b)s(een)f(giv)m(en.)67 b(By)39 b(default,)i(the) -630 917 y(program)30 b(assumes)g(the)h(structure)f(comp)s(onen)m(t)h -(iden)m(ti\014er)d(for)i(the)h(k)m(eyw)m(ord)g(is)e(`)p -Fn(name)p Fs('.)630 1027 y(This)23 b(option)g(allo)m(ws)h(an)g -(arbitrary)g(c)m(hoice)h(of)f(iden)m(ti\014er)f(for)h(this)f(comp)s -(onen)m(t,)k(although)630 1136 y(it)j(still)e(m)m(ust)i(o)s(ccur)h(as)f -(the)h(\014rst)e(\014eld)g(in)g(y)m(our)i(supplied)c -Fn(struct)p Fs(.)150 1344 y(`)p Fn(-F)j Fo(initializers)t -Fs(')150 1453 y(`)p Fn(--initializer-suffix=)p Fo(in)o(iti)o(ali)o -(zers)t Fs(')630 1563 y(This)23 b(option)g(is)h(only)f(useful)g(when)g -(option)h(`)p Fn(-t)p Fs(')h(has)f(b)s(een)f(giv)m(en.)39 -b(It)25 b(p)s(ermits)d(to)j(sp)s(ecify)630 1673 y(initializers)k(for)j -(the)h(structure)e(mem)m(b)s(ers)h(follo)m(wing)e Fo(k)m(ey)k(name)j -Fs(in)31 b(empt)m(y)i(hash)e(table)630 1782 y(en)m(tries.)73 -b(The)40 b(list)g(of)h(initializers)d(should)h(start)j(with)d(a)j -(comma.)73 b(By)42 b(default,)h(the)630 1892 y(emitted)30 -b(co)s(de)h(will)d(zero-initialize)h(structure)g(mem)m(b)s(ers)h(follo) -m(wing)f Fo(k)m(ey)i(name)p Fs(.)150 2099 y(`)p Fn(-H)f -Fo(hash-function-name)5 b Fs(')150 2209 y(`)p Fn(--hash-fn-name=)p -Fo(hash-function-name)g Fs(')630 2318 y(Allo)m(ws)29 -b(y)m(ou)h(to)g(sp)s(ecify)f(the)h(name)g(for)f(the)h(generated)h(hash) -e(function.)39 b(Default)30 b(name)630 2428 y(is)f(`)p -Fn(hash)p Fs('.)40 b(This)29 b(option)h(p)s(ermits)e(the)j(use)f(of)h -(t)m(w)m(o)g(hash)f(tables)g(in)f(the)i(same)g(\014le.)150 -2635 y(`)p Fn(-N)f Fo(lo)s(okup-function-name)5 b Fs(')150 -2745 y(`)p Fn(--lookup-fn-name=)p Fo(lo)s(okup-fun)o(ction-name)g -Fs(')630 2855 y(Allo)m(ws)41 b(y)m(ou)h(to)h(sp)s(ecify)d(the)j(name)f -(for)f(the)h(generated)h(lo)s(okup)e(function.)74 b(Default)630 -2964 y(name)33 b(is)e(`)p Fn(in_word_set)p Fs('.)45 b(This)31 -b(option)h(p)s(ermits)f(completely)h(automatic)i(generation)630 -3074 y(of)24 b(p)s(erfect)h(hash)e(functions,)h(esp)s(ecially)f(when)g -(m)m(ultiple)f(generated)j(hash)f(functions)f(are)630 -3183 y(used)30 b(in)f(the)h(same)h(application.)150 3391 -y(`)p Fn(-Z)f Fo(class-name)5 b Fs(')150 3500 y(`)p Fn(--class-name=)p -Fo(class-name)g Fs(')630 3610 y(This)32 b(option)h(is)f(only)h(useful)f -(when)h(option)g(`)p Fn(-L)d(C++)p Fs(')i(has)i(b)s(een)f(giv)m(en.)50 -b(It)34 b(allo)m(ws)f(y)m(ou)630 3720 y(to)e(sp)s(ecify)e(the)i(name)f -(of)h(generated)g(C)p Fn(++)e Fs(class.)41 b(Default)30 -b(name)h(is)e Fn(Perfect_Hash)p Fs(.)150 3927 y(`)p Fn(-7)p -Fs(')150 4037 y(`)p Fn(--seven-bit)p Fs(')630 4146 y(This)35 -b(option)i(sp)s(eci\014es)f(that)h(all)f(strings)g(that)i(will)c(b)s(e) -j(passed)f(as)i(argumen)m(ts)f(to)h(the)630 4256 y(generated)e(hash)e -(function)f(and)i(the)g(generated)g(lo)s(okup)f(function)f(will)f -(solely)i(consist)630 4365 y(of)26 b(7-bit)f(ASCI)s(I)f(c)m(haracters)i -(\(c)m(haracters)i(in)c(the)h(range)h(0..127\).)42 b(\(Note)27 -b(that)f(the)f(ANSI)630 4475 y(C)30 b(functions)f Fn(isalnum)g -Fs(and)h Fn(isgraph)e Fs(do)j Fl(not)40 b Fs(guaran)m(tee)32 -b(that)f(a)g(c)m(haracter)h(is)e(in)f(this)630 4585 y(range.)44 -b(Only)30 b(an)h(explicit)f(test)i(lik)m(e)e(`)p Fn(c)h(>=)e('A')h(&&)g -(c)g(<=)f('Z')p Fs(')i(guaran)m(tees)i(this.\))43 b(This)630 -4694 y(w)m(as)g(the)f(default)g(in)f(v)m(ersions)h(of)g -Fn(gperf)f Fs(earlier)g(than)i(2.7;)49 b(no)m(w)43 b(the)f(default)g -(is)f(to)630 4804 y(assume)30 b(8-bit)g(c)m(haracters.)150 -5011 y(`)p Fn(-c)p Fs(')150 5121 y(`)p Fn(--compare-strncmp)p -Fs(')630 5230 y(Generates)22 b(C)f(co)s(de)g(that)h(uses)e(the)i +(of)g 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)f(are)h(also)g(a)m(v)-5 b(ailable)20 +b(as)h(declarations)f(in)g(the)h(input)d(\014le)i(\(see)i(Section)e +(3.1.1.2)150 3181 y([Gp)s(erf)30 b(Declarations],)h(page)g(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)20 +b(option)h(is)g(only)f(useful)g(when)h(option)g(`)p Fn(-t)p +Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)23 b(the)f(`)p +Fn(\045struct-type)p Fs(')630 3685 y(declaration\))39 +b(has)g(b)s(een)f(giv)m(en.)66 b(By)39 b(default,)i(the)e(program)g +(assumes)f(the)h(structure)630 3795 y(comp)s(onen)m(t)28 +b(iden)m(ti\014er)f(for)h(the)g(k)m(eyw)m(ord)g(is)g(`)p +Fn(name)p Fs('.)39 b(This)26 b(option)i(allo)m(ws)f(an)h(arbitrary)630 +3904 y(c)m(hoice)k(of)g(iden)m(ti\014er)e(for)h(this)g(comp)s(onen)m +(t,)h(although)f(it)g(still)e(m)m(ust)j(o)s(ccur)f(as)h(the)g(\014rst) +630 4014 y(\014eld)d(in)g(y)m(our)h(supplied)d Fn(struct)p +Fs(.)150 4184 y(`)p Fn(-F)j Fo(initializers)t Fs(')150 +4293 y(`)p Fn(--initializer-suffix=)p Fo(in)o(iti)o(ali)o(zers)t +Fs(')630 4403 y(This)20 b(option)h(is)g(only)f(useful)g(when)h(option)g +(`)p Fn(-t)p Fs(')g(\(or,)j(equiv)-5 b(alen)m(tly)d(,)23 +b(the)f(`)p Fn(\045struct-type)p Fs(')630 4512 y(declaration\))32 +b(has)h(b)s(een)e(giv)m(en.)48 b(It)32 b(p)s(ermits)f(to)i(sp)s(ecify)e +(initializers)e(for)k(the)f(structure)630 4622 y(mem)m(b)s(ers)23 +b(follo)m(wing)f Fo(slot-name)29 b Fs(in)22 b(empt)m(y)i(hash)f(table)g +(en)m(tries.)38 b(The)23 b(list)f(of)i(initializers)630 +4732 y(should)36 b(start)j(with)f(a)g(comma.)66 b(By)39 +b(default,)h(the)f(emitted)f(co)s(de)h(will)c(zero-initialize)630 +4841 y(structure)30 b(mem)m(b)s(ers)f(follo)m(wing)g +Fo(slot-name)p Fs(.)150 5011 y(`)p Fn(-H)h 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)29 b(y)m(ou)h(to)g(sp)s(ecify) +f(the)h(name)g(for)f(the)h(generated)h(hash)e(function.)39 +b(Default)30 b(name)630 5340 y(is)f(`)p Fn(hash)p Fs('.)40 +b(This)29 b(option)h(p)s(ermits)e(the)j(use)f(of)h(t)m(w)m(o)g(hash)f +(tables)g(in)f(the)i(same)g(\014le.)p eop +%%Page: 21 23 +21 22 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +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(l)o(o)s(okup-fu)o(nction-name)g Fs(')630 518 y(Allo)m(ws)41 +b(y)m(ou)h(to)h(sp)s(ecify)d(the)j(name)f(for)f(the)h(generated)h(lo)s +(okup)e(function.)74 b(Default)630 628 y(name)28 b(is)f(`)p +Fn(in_word_set)p Fs('.)37 b(This)26 b(option)h(p)s(ermits)f(m)m +(ultiple)g(generated)i(hash)f(functions)630 737 y(to)k(b)s(e)f(used)f +(in)g(the)i(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)65 b(option)i(is)f(only)h(useful)e +(when)i(option)f(`)p Fn(-L)30 b(C++)p Fs(')67 b(\(or,)77 +b(equiv)-5 b(alen)m(tly)d(,)76 b(the)630 1267 y(`)p Fn +(\045language=C++)p Fs(')43 b(declaration\))i(has)h(b)s(een)f(giv)m +(en.)87 b(It)46 b(allo)m(ws)f(y)m(ou)h(to)g(sp)s(ecify)f(the)630 +1377 y(name)30 b(of)h(generated)g(C)p Fn(++)f Fs(class.)40 +b(Default)31 b(name)f(is)g 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)35 b(option)i(sp)s(eci\014es)f(that)h(all)f +(strings)g(that)i(will)c(b)s(e)j(passed)f(as)i(argumen)m(ts)f(to)h(the) +630 1906 y(generated)e(hash)e(function)f(and)i(the)g(generated)g(lo)s +(okup)f(function)f(will)f(solely)i(consist)630 2016 y(of)f(7-bit)g +(ASCI)s(I)f(c)m(haracters)j(\(b)m(ytes)f(in)e(the)h(range)h(0..127\).) +51 b(\(Note)35 b(that)f(the)g(ANSI)e(C)630 2125 y(functions)e +Fn(isalnum)g 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)e(in)f(this)h(range.)630 +2235 y(Only)25 b(an)h(explicit)f(test)j(lik)m(e)d(`)p +Fn(c)31 b(>=)f('A')f(&&)h(c)g(<=)g('Z')p Fs(')25 b(guaran)m(tees)j +(this.\))39 b(This)25 b(w)m(as)i(the)630 2345 y(default)f(in)g(v)m +(ersions)g(of)h Fn(gperf)e Fs(earlier)h(than)g(2.7;)k(no)m(w)d(the)g +(default)f(is)f(to)j(supp)s(ort)d(8-bit)630 2454 y(and)30 +b(m)m(ultib)m(yte)f(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)f(b)s(efore)g(trying)g(a)i +(string)d(comparison.)69 b(This)38 b(option)h(is)630 +2984 y(mandatory)32 b(for)h(binary)d(comparisons)i(\(see)h(Section)g +(3.3)g([Binary)f(Strings],)g(page)h(18\).)630 3093 y(It)g(also)g(migh)m +(t)g(cut)g(do)m(wn)f(on)h(the)g(n)m(um)m(b)s(er)f(of)h(string)f +(comparisons)g(made)h(during)e(the)630 3203 y(lo)s(okup,)i(since)g(k)m +(eyw)m(ords)g(with)f(di\013eren)m(t)h(lengths)g(are)g(nev)m(er)h +(compared)f(via)g Fn(strcmp)p Fs(.)630 3313 y(Ho)m(w)m(ev)m(er,)k +(using)32 b(`)p Fn(-l)p Fs(')h(migh)m(t)g(greatly)h(increase)g(the)g +(size)f(of)h(the)f(generated)i(C)e(co)s(de)h(if)630 3422 +y(the)k(lo)s(okup)f(table)g(range)i(is)e(large)h(\(whic)m(h)f(implies)e +(that)j(the)g(switc)m(h)g(option)f(`)p Fn(-S)p Fs(')h(or)630 +3532 y(`)p Fn(\045switch)p Fs(')29 b(is)h(not)h(enabled\),)g(since)f +(the)h(length)f(table)h(con)m(tains)g(as)g(man)m(y)g(elemen)m(ts)g(as) +630 3641 y(there)g(are)f(en)m(tries)h(in)e(the)h(lo)s(okup)f(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)g(to)j(p)s(erform)e(string)g(comparisons.)630 -5340 y(The)30 b(default)f(action)i(is)f(to)h(use)f Fn(strcmp)p -Fs(.)p eop -%%Page: 17 19 -17 18 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(17)150 299 y(`)p Fn(-C)p Fs(')150 -408 y(`)p Fn(--readonly-tables)p Fs(')630 518 y(Mak)m(es)41 -b(the)f(con)m(ten)m(ts)h(of)f(all)f(generated)h(lo)s(okup)e(tables)i -(constan)m(t,)j(i.e.,)g(\\readonly".)630 628 y(Man)m(y)31 -b(compilers)e(can)i(generate)h(more)e(e\016cien)m(t)h(co)s(de)g(for)f -(this)g(b)m(y)g(putting)f(the)i(tables)630 737 y(in)e(readonly)h -(memory)-8 b(.)150 916 y(`)p Fn(-E)p Fs(')150 1026 y(`)p -Fn(--enum)p Fs(')142 b(De\014ne)31 b(constan)m(t)g(v)-5 -b(alues)30 b(using)f(an)h(en)m(um)g(lo)s(cal)g(to)h(the)g(lo)s(okup)e -(function)g(rather)h(than)630 1135 y(with)36 b(#de\014nes.)60 -b(This)35 b(also)i(means)h(that)f(di\013eren)m(t)g(lo)s(okup)f -(functions)g(can)h(reside)f(in)630 1245 y(the)31 b(same)f(\014le.)40 -b(Thanks)29 b(to)j(James)e(Clark)f Fn()p -Fs(.)150 1424 y(`)p Fn(-I)p Fs(')150 1534 y(`)p Fn(--includes)p -Fs(')630 1643 y(Include)g(the)i(necessary)h(system)f(include)e(\014le,) -h Fn()p Fs(,)f(at)i(the)g(b)s(eginning)e(of)i(the)630 -1753 y(co)s(de.)39 b(By)27 b(default,)f(this)f(is)g(not)h(done;)i(the)e -(user)f(m)m(ust)h(include)e(this)g(header)i(\014le)f(himself)630 -1862 y(to)31 b(allo)m(w)f(compilation)f(of)h(the)h(co)s(de.)150 -2041 y(`)p Fn(-G)p Fs(')150 2151 y(`)p Fn(--global)p -Fs(')630 2260 y(Generate)38 b(the)f(static)g(table)f(of)h(k)m(eyw)m +4171 y(The)30 b(default)f(action)i(is)f(to)h(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)f +(generated)h(lo)s(okup)e(tables)i(constan)m(t,)j(i.e.,)g(\\readonly".) +630 4701 y(Man)m(y)31 b(compilers)e(can)i(generate)h(more)e(e\016cien)m +(t)h(co)s(de)g(for)f(this)g(b)m(y)g(putting)f(the)i(tables)630 +4810 y(in)e(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)30 b(using)f(an)h(en)m(um)g(lo)s(cal)g(to) +h(the)g(lo)s(okup)e(function)g(rather)h(than)630 5230 +y(with)36 b(#de\014nes.)60 b(This)35 b(also)i(means)h(that)f +(di\013eren)m(t)g(lo)s(okup)f(functions)g(can)h(reside)f(in)630 +5340 y(the)31 b(same)f(\014le.)40 b(Thanks)29 b(to)j(James)e(Clark)f +Fn()p Fs(.)p eop +%%Page: 22 24 +22 23 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +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)29 b(the)i(necessary)h +(system)f(include)e(\014le,)h Fn()p Fs(,)f(at)i(the)g(b)s +(eginning)e(of)i(the)630 628 y(co)s(de.)39 b(By)27 b(default,)f(this)f +(is)g(not)h(done;)i(the)e(user)f(m)m(ust)h(include)e(this)g(header)i +(\014le)f(himself)630 737 y(to)31 b(allo)m(w)f(compilation)f(of)h(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)g(table)f(of)h(k)m(eyw)m (ords)g(as)g(a)g(static)g(global)f(v)-5 b(ariable,)37 -b(rather)f(than)630 2370 y(hiding)28 b(it)i(inside)e(of)i(the)h(lo)s +b(rather)f(than)630 1212 y(hiding)28 b(it)i(inside)e(of)i(the)h(lo)s (okup)e(function)g(\(whic)m(h)g(is)h(the)g(default)g(b)s(eha)m(vior\).) -150 2549 y(`)p Fn(-W)g Fo(hash-table-arra)m(y-name)5 -b Fs(')150 2659 y(`)p Fn(--word-array-name=)p Fo(hash-table-arra)m -(y-name)g Fs(')630 2768 y(Allo)m(ws)39 b(y)m(ou)h(to)h(sp)s(ecify)e +150 1358 y(`)p Fn(-P)p Fs(')150 1468 y(`)p Fn(--pic)p +Fs(')190 b(Optimize)40 b(the)h(generated)h(table)f(for)g(inclusion)d +(in)i(shared)g(libraries.)70 b(This)39 b(reduces)630 +1577 y(the)c(startup)g(time)g(of)g(programs)g(using)f(a)i(shared)e +(library)f(con)m(taining)i(the)g(generated)630 1687 y(co)s(de.)j(If)21 +b(the)h(option)g(`)p Fn(-t)p Fs(')f(\(or,)k(equiv)-5 +b(alen)m(tly)d(,)22 b(the)g(`)p Fn(\045struct-type)p +Fs(')d(declaration\))j(is)f(also)630 1797 y(giv)m(en,)31 +b(the)g(\014rst)e(\014eld)h(of)g(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)h(will)c(con)m(tain)k +(o\013sets)h(in)m(to)e(the)h(string)e(p)s(o)s(ol)h(instead)f(of)i +(actual)g(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,)g(y)m(ou)g(can)g(use)f(the)h +(expression)e(`)p Fn(stringpool)630 2125 y(+)f Fo(o)5 +b Fs(',)34 b(where)f Fo(o)38 b Fs(is)32 b(the)h(o\013set.)50 +b(The)32 b(string)g(p)s(o)s(ol)g(name)h(can)g(b)s(e)g(c)m(hanged)g +(through)g(the)630 2235 y(option)d(`)p Fn(--string-pool-name)p +Fs('.)150 2381 y(`)p Fn(-Q)g Fo(string-p)s(o)s(ol-name)5 +b Fs(')150 2491 y(`)p Fn(--string-pool-name=)p Fo(string-p)r(o)s +(ol-name)g Fs(')630 2600 y(Allo)m(ws)30 b(y)m(ou)i(to)g(sp)s(ecify)e +(the)h(name)h(of)f(the)h(generated)g(string)e(p)s(o)s(ol)g(created)i(b) +m(y)f(option)630 2710 y(`)p Fn(-P)p Fs('.)38 b(The)21 +b(default)f(name)i(is)e(`)p Fn(stringpool)p Fs('.)36 +b(This)19 b(option)i(p)s(ermits)f(the)h(use)g(of)h(t)m(w)m(o)h(hash)630 +2819 y(tables)h(in)e(the)i(same)g(\014le,)h(with)d(`)p +Fn(-P)p Fs(')i(and)f(ev)m(en)h(when)f(the)h(option)f(`)p +Fn(-G)p Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)630 +2929 y(the)31 b(`)p Fn(\045global-table)p Fs(')c(declaration\))j(is)g +(giv)m(en.)150 3075 y(`)p Fn(--null-strings)p Fs(')630 +3185 y(Use)39 b(NULL)g(strings)e(instead)i(of)f(empt)m(y)i(strings)d +(for)i(empt)m(y)g(k)m(eyw)m(ord)g(table)g(en)m(tries.)630 +3294 y(This)e(reduces)h(the)h(startup)g(time)f(of)h(programs)g(using)e +(a)i(shared)f(library)e(con)m(taining)630 3404 y(the)41 +b(generated)g(co)s(de)g(\(but)f(not)h(as)f(m)m(uc)m(h)h(as)g(option)f +(`)p Fn(-P)p Fs('\),)j(at)e(the)g(exp)s(ense)f(of)h(one)630 +3513 y(more)31 b(test-and-branc)m(h)f(instruction)f(at)i(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)39 b(y)m(ou)h(to)h(sp)s(ecify)e (the)h(name)g(for)f(the)i(generated)g(arra)m(y)f(con)m(taining)g(the)g -(hash)630 2878 y(table.)61 b(Default)37 b(name)g(is)f(`)p -Fn(wordlist)p Fs('.)60 b(This)35 b(option)i(p)s(ermits)e(the)i(use)g -(of)g(t)m(w)m(o)i(hash)630 2987 y(tables)30 b(in)f(the)i(same)g -(\014le,)e(ev)m(en)i(when)f(the)g(option)g(`)p Fn(-G)p -Fs(')g(is)g(giv)m(en.)150 3166 y(`)p Fn(-S)g Fo(total-switc)m -(h-statemen)m(ts)t Fs(')150 3276 y(`)p Fn(--switch=)p -Fo(total-switc)m(h-statemen)m(ts)t Fs(')630 3386 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 3495 -y(an)j(arra)m(y)g(lo)s(okup)f(table.)63 b(This)36 b(can)i(lead)g(to)g -(a)h(reduction)e(in)f(b)s(oth)h(time)h(and)f(space)630 -3605 y(requiremen)m(ts)f(for)g(some)h(k)m(ey\014les.)60 -b(The)36 b(argumen)m(t)h(to)h(this)d(option)h(determines)g(ho)m(w)630 -3714 y(man)m(y)c Fn(switch)f Fs(statemen)m(ts)j(are)e(generated.)47 -b(A)32 b(v)-5 b(alue)32 b(of)g(1)h(generates)g(1)g Fn(switch)d -Fs(con-)630 3824 y(taining)h(all)h(the)h(elemen)m(ts,)g(a)g(v)-5 -b(alue)32 b(of)h(2)g(generates)h(2)f(tables)g(with)e(1/2)j(the)f -(elemen)m(ts)630 3933 y(in)k(eac)m(h)i Fn(switch)p Fs(,)g(etc.)65 -b(This)36 b(is)h(useful)g(since)g(man)m(y)i(C)e(compilers)g(cannot)i -(correctly)630 4043 y(generate)29 b(co)s(de)f(for)f(large)g -Fn(switch)f Fs(statemen)m(ts.)41 b(This)26 b(option)h(w)m(as)h -(inspired)c(in)i(part)h(b)m(y)630 4153 y(Keith)j(Bostic's)h(original)d -(C)i(program.)150 4332 y(`)p Fn(-T)p Fs(')150 4441 y(`)p -Fn(--omit-struct-type)p Fs(')630 4551 y(Prev)m(en)m(ts)f(the)e -(transfer)h(of)f(the)h(t)m(yp)s(e)g(declaration)f(to)i(the)f(output)f -(\014le.)39 b(Use)28 b(this)e(option)630 4660 y(if)j(the)i(t)m(yp)s(e)f -(is)g(already)g(de\014ned)f(elsewhere.)150 4839 y(`)p -Fn(-p)p Fs(')334 b(This)32 b(option)h(is)f(supp)s(orted)g(for)h -(compatibilit)m(y)f(with)g(previous)g(releases)i(of)g -Fn(gperf)p Fs(.)49 b(It)630 4949 y(do)s(es)30 b(not)h(do)f(an)m -(ything.)150 5255 y Fr(4.4)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)p eop -%%Page: 18 20 -18 19 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(18)150 299 y(`)p Fn(-k)30 b Fo(k)m(eys)t -Fs(')150 408 y(`)p Fn(--key-positions=)p Fo(k)m(eys)t -Fs(')630 518 y(Allo)m(ws)25 b(selection)i(of)f(the)h(c)m(haracter)h(k)m -(ey)f(p)s(ositions)d(used)h(in)g(the)i(k)m(eyw)m(ords')g(hash)f(func-) -630 628 y(tion.)51 b(The)33 b(allo)m(w)m(able)g(c)m(hoices)i(range)f(b) -s(et)m(w)m(een)h(1-126,)i(inclusiv)m(e.)48 b(The)34 b(p)s(ositions)e -(are)630 737 y(separated)d(b)m(y)f(commas,)i(e.g.,)g(`)p -Fn(-k)g(9,4,13,14)p Fs(';)d(ranges)i(ma)m(y)g(b)s(e)f(used,)g(e.g.,)i -(`)p Fn(-k)g(2-7)p Fs(';)630 847 y(and)41 b(p)s(ositions)f(ma)m(y)i(o)s -(ccur)f(in)g(an)m(y)h(order.)74 b(F)-8 b(urthermore,)45 -b(the)c(meta-c)m(haracter)k('*')630 956 y(causes)35 b(the)h(generated)g -(hash)e(function)g(to)i(consider)e Fe(all)h Fs(c)m(haracter)i(p)s -(ositions)c(in)h(eac)m(h)630 1066 y(k)m(ey)-8 b(,)28 -b(whereas)e('$')h(instructs)e(the)h(hash)f(function)g(to)i(use)e(the)h -(\\\014nal)g(c)m(haracter")i(of)e(a)g(k)m(ey)630 1176 -y(\(this)g(is)g(the)h(only)f(w)m(a)m(y)i(to)g(use)e(a)h(c)m(haracter)i -(p)s(osition)c(greater)j(than)f(126,)i(inciden)m(tally\).)630 -1346 y(F)-8 b(or)37 b(instance,)g(the)f(option)g(`)p -Fn(-k)30 b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)e -(that)630 1456 y(considers)g(p)s(ositions)f(1,2,4,6,7,8,9,10,)42 -b(plus)33 b(the)i(last)g(c)m(haracter)i(in)d(eac)m(h)i(k)m(ey)g(\(whic) -m(h)630 1565 y(ma)m(y)24 b(di\013er)e(for)h(eac)m(h)i(k)m(ey)-8 -b(,)26 b(ob)m(viously\).)38 b(Keys)23 b(with)f(length)h(less)f(than)i -(the)f(indicated)f(k)m(ey)630 1675 y(p)s(ositions)33 -b(w)m(ork)i(prop)s(erly)-8 b(,)34 b(since)g(selected)i(k)m(ey)f(p)s -(ositions)e(exceeding)i(the)g(k)m(ey)h(length)630 1784 -y(are)31 b(simply)d(not)i(referenced)h(in)e(the)h(hash)g(function.)150 -2016 y(`)p Fn(-l)p Fs(')150 2125 y(`)p Fn(--compare-strlen)p -Fs(')630 2235 y(Compare)i(k)m(ey)h(lengths)f(b)s(efore)g(trying)f(a)i -(string)e(comparison.)46 b(This)31 b(migh)m(t)h(cut)g(do)m(wn)630 -2345 y(on)g(the)g(n)m(um)m(b)s(er)e(of)i(string)f(comparisons)g(made)h -(during)d(the)k(lo)s(okup,)e(since)g(k)m(eys)h(with)630 -2454 y(di\013eren)m(t)38 b(lengths)g(are)h(nev)m(er)g(compared)g(via)f -Fn(strcmp)p Fs(.)64 b(Ho)m(w)m(ev)m(er,)43 b(using)38 -b(`)p Fn(-l)p Fs(')g(migh)m(t)630 2564 y(greatly)f(increase)f(the)h -(size)g(of)f(the)h(generated)h(C)e(co)s(de)h(if)e(the)i(lo)s(okup)e -(table)i(range)g(is)630 2673 y(large)25 b(\(whic)m(h)e(implies)f(that)j -(the)g(switc)m(h)f(option)g(`)p Fn(-S)p Fs(')h(is)f(not)g(enabled\),)i -(since)e(the)h(length)630 2783 y(table)31 b(con)m(tains)h(as)g(man)m(y) -g(elemen)m(ts)g(as)f(there)h(are)g(en)m(tries)f(in)g(the)g(lo)s(okup)g -(table.)44 b(This)630 2892 y(option)34 b(is)g(mandatory)g(for)g(binary) -f(comparisons)h(\(see)h(Section)f(3.3)i([Binary)e(Strings],)630 -3002 y(page)d(14\).)150 3233 y(`)p Fn(-D)p Fs(')150 3343 -y(`)p Fn(--duplicates)p Fs(')630 3453 y(Handle)j(k)m(eyw)m(ords)h -(whose)f(k)m(ey)i(p)s(osition)d(sets)i(hash)f(to)h(duplicate)e(v)-5 -b(alues.)53 b(Duplicate)630 3562 y(hash)30 b(v)-5 b(alues)29 -b(o)s(ccur)i(for)f(t)m(w)m(o)h(reasons:)705 3733 y Fq(\017)60 -b Fs(Since)42 b Fn(gperf)g Fs(do)s(es)h(not)g(bac)m(ktrac)m(k)j(it)c -(is)h(p)s(ossible)d(for)j(it)g(to)h(pro)s(cess)f(all)f(y)m(our)810 -3842 y(input)23 b(k)m(eyw)m(ords)j(without)e(\014nding)f(a)i(unique)e -(mapping)h(for)h(eac)m(h)h(w)m(ord.)39 b(Ho)m(w)m(ev)m(er,)810 -3952 y(frequen)m(tly)28 b(only)h(a)h(v)m(ery)f(small)f(n)m(um)m(b)s(er) -g(of)h(duplicates)f(o)s(ccur,)i(and)e(the)i(ma)5 b(jorit)m(y)810 -4061 y(of)31 b(k)m(eys)g(still)d(require)h(one)i(prob)s(e)e(in)m(to)h -(the)h(table.)705 4232 y Fq(\017)60 b Fs(Sometimes)35 -b(a)h(set)g(of)f(k)m(eys)h(ma)m(y)g(ha)m(v)m(e)h(the)f(same)f(names,)i -(but)e(p)s(ossess)f(di\013eren)m(t)810 4341 y(attributes.)86 -b(With)45 b(the)g(-D)i(option)e Fn(gperf)f Fs(treats)i(all)f(these)h(k) -m(eys)g(as)f(part)h(of)810 4451 y(an)37 b(equiv)-5 b(alence)36 -b(class)g(and)g(generates)j(a)e(p)s(erfect)f(hash)g(function)g(with)f -(m)m(ultiple)810 4561 y(comparisons)26 b(for)g(duplicate)f(k)m(eys.)40 -b(It)26 b(is)g(up)f(to)j(y)m(ou)e(to)i(completely)e(disam)m(biguate)810 -4670 y(the)36 b(k)m(eyw)m(ords)f(b)m(y)g(mo)s(difying)e(the)j -(generated)g(C)f(co)s(de.)56 b(Ho)m(w)m(ev)m(er,)39 b -Fn(gperf)33 b Fs(helps)810 4780 y(y)m(ou)e(out)f(b)m(y)h(organizing)e -(the)i(output.)630 5011 y(Option)i(`)p Fn(-D)p Fs(')i(is)f(extremely)g -(useful)f(for)i(certain)f(large)h(or)g(highly)d(redundan)m(t)h(k)m(eyw) -m(ord)630 5121 y(sets,)e(e.g.,)h(assem)m(bler)e(instruction)e(op)s(co)s -(des.)41 b(Using)30 b(this)f(option)h(usually)e(means)i(that)630 -5230 y(the)d(generated)h(hash)f(function)f(is)g(no)h(longer)g(p)s -(erfect.)39 b(On)26 b(the)i(other)f(hand,)g(it)g(p)s(ermits)630 -5340 y Fn(gperf)i Fs(to)i(w)m(ork)g(on)f(k)m(eyw)m(ord)h(sets)f(that)h -(it)f(otherwise)g(could)g(not)g(handle.)p eop -%%Page: 19 21 -19 20 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(19)150 299 y(`)p Fn(-f)30 b Fo(iteration-amoun)m -(t)r Fs(')150 408 y(`)p Fn(--fast=)p Fo(iteration-amoun)m(t)r -Fs(')630 518 y(Generate)d(the)e(p)s(erfect)g(hash)g(function)f -(\\fast".)40 b(This)24 b(decreases)i Fn(gperf)p Fs('s)e(running)e(time) -630 628 y(at)27 b(the)f(cost)h(of)f(minimizing)c(generated)27 -b(table-size.)39 b(The)25 b(iteration)h(amoun)m(t)g(represen)m(ts)630 -737 y(the)32 b(n)m(um)m(b)s(er)e(of)i(times)f(to)h(iterate)h(when)d -(resolving)h(a)h(collision.)42 b(`0')32 b(means)g(iterate)g(b)m(y)630 -847 y(the)40 b(n)m(um)m(b)s(er)e(of)i(k)m(eyw)m(ords.)70 -b(This)37 b(option)j(is)e(probably)g(most)j(useful)d(when)g(used)h(in) -630 956 y(conjunction)29 b(with)g(options)h(`)p Fn(-D)p -Fs(')g(and/or)h(`)p Fn(-S)p Fs(')f(for)g Fl(lar)-5 b(ge)38 -b Fs(k)m(eyw)m(ord)31 b(sets.)150 1154 y(`)p Fn(-i)f -Fo(initial-v)-5 b(alue)5 b Fs(')150 1263 y(`)p Fn(--initial-asso=)p -Fo(initial)o(-v)-5 b(alue)5 b Fs(')630 1373 y(Pro)m(vides)28 -b(an)g(initial)d Fo(v)-5 b(alue)33 b Fs(for)28 b(the)g(asso)s(ciate)h -(v)-5 b(alues)28 b(arra)m(y)-8 b(.)41 b(Default)28 b(is)f(0.)41 -b(Increasing)630 1482 y(the)30 b(initial)d(v)-5 b(alue)30 +(hash)630 3988 y(table.)105 b(Default)52 b(name)f(is)g(`)p +Fn(wordlist)p Fs('.)103 b(This)50 b(option)h(p)s(ermits)f(the)i(use)g +(of)g(t)m(w)m(o)630 4098 y(hash)37 b(tables)g(in)g(the)h(same)g +(\014le,)h(ev)m(en)f(when)f(the)h(option)f(`)p Fn(-G)p +Fs(')h(\(or,)i(equiv)-5 b(alen)m(tly)d(,)39 b(the)630 +4208 y(`)p Fn(\045global-table)p Fs(')27 b(declaration\))k(is)e(giv)m +(en.)150 4354 y(`)p Fn(-S)h 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)f(table.)63 b(This)36 +b(can)i(lead)g(to)g(a)h(reduction)e(in)f(b)s(oth)h(time)h(and)f(space) +630 4792 y(requiremen)m(ts)42 b(for)i(some)f(input)f(\014les.)79 +b(The)43 b(argumen)m(t)h(to)g(this)e(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)33 b(of)f(1)i(generates)g(1)f +Fn(switch)630 5011 y Fs(con)m(taining)23 b(all)e(the)j(elemen)m(ts,)h +(a)e(v)-5 b(alue)22 b(of)i(2)f(generates)h(2)g(tables)e(with)g(1/2)i +(the)g(elemen)m(ts)630 5121 y(in)37 b(eac)m(h)i Fn(switch)p +Fs(,)g(etc.)65 b(This)36 b(is)h(useful)g(since)g(man)m(y)i(C)e +(compilers)g(cannot)i(correctly)630 5230 y(generate)29 +b(co)s(de)f(for)f(large)g Fn(switch)f Fs(statemen)m(ts.)41 +b(This)26 b(option)h(w)m(as)h(inspired)c(in)i(part)h(b)m(y)630 +5340 y(Keith)j(Bostic's)h(original)d(C)i(program.)p eop +%%Page: 23 25 +23 24 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +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)f(to)i(the)f +(output)f(\014le.)39 b(Use)28 b(this)e(option)630 628 +y(if)j(the)i(t)m(yp)s(e)f(is)g(already)g(de\014ned)f(elsewhere.)150 +795 y(`)p Fn(-p)p Fs(')334 b(This)32 b(option)h(is)f(supp)s(orted)g +(for)h(compatibilit)m(y)f(with)g(previous)g(releases)i(of)g +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)c(selection)h(of)g(the)g(b)m(yte) +h(p)s(ositions)d(used)h(in)g(the)h(k)m(eyw)m(ords')h(hash)e(function.) +38 b(The)630 1740 y(allo)m(w)m(able)21 b(c)m(hoices)i(range)f(b)s(et)m +(w)m(een)h(1-255,)j(inclusiv)m(e.)35 b(The)22 b(p)s(ositions)d(are)k +(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)g(an)m(y)h(order.)37 b(F)-8 +b(urthermore,)22 b(the)f(wildcard)d('*')j(causes)g(the)g(generated)h +(hash)630 2069 y(function)36 b(to)i(consider)f Fe(all)h +Fs(b)m(yte)g(p)s(ositions)d(in)h(eac)m(h)j(k)m(eyw)m(ord,)h(whereas)d +('$')h(instructs)630 2179 y(the)31 b(hash)g(function)e(to)j(use)f(the)g +(\\\014nal)g(b)m(yte")h(of)f(a)h(k)m(eyw)m(ord)f(\(this)f(is)h(the)g +(only)f(w)m(a)m(y)i(to)630 2288 y(use)e(a)h(b)m(yte)g(p)s(osition)d +(greater)k(than)e(255,)i(inciden)m(tally\).)630 2427 +y(F)-8 b(or)37 b(instance,)g(the)f(option)g(`)p Fn(-k)30 +b(1,2,4,6-10,'$')p Fs(')i(generates)38 b(a)e(hash)g(function)e(that)630 +2536 y(considers)g(p)s(ositions)f(1,2,4,6,7,8,9,10,)42 +b(plus)33 b(the)j(last)f(b)m(yte)g(in)f(eac)m(h)i(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)f(p)s +(osition)f(for)h(eac)m(h)i(k)m(eyw)m(ord,)h(ob)m(viously\).)65 +b(Keyw)m(ords)38 b(with)630 2756 y(length)29 b(less)g(than)g(the)g +(indicated)f(b)m(yte)j(p)s(ositions)c(w)m(ork)i(prop)s(erly)-8 +b(,)29 b(since)f(selected)i(b)m(yte)630 2865 y(p)s(ositions)j +(exceeding)i(the)h(k)m(eyw)m(ord)f(length)f(are)i(simply)c(not)k +(referenced)f(in)e(the)j(hash)630 2975 y(function.)630 +3113 y(This)27 b(option)i(is)f(not)h(normally)e(needed)i(since)f(v)m +(ersion)g(2.8)j(of)e Fn(gperf)p Fs(;)f(the)h(default)f(b)m(yte)630 +3223 y(p)s(ositions)34 b(are)i(computed)f(dep)s(ending)e(on)j(the)f(k)m +(eyw)m(ord)h(set,)i(through)d(a)h(searc)m(h)g(that)630 +3332 y(minimizes)28 b(the)i(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)g(k)m(eyw)m(ords)i(whose)f +(selected)h(b)m(yte)f(sets)h(hash)e(to)i(duplicate)e(v)-5 +b(alues.)45 b(Duplicate)630 3829 y(hash)33 b(v)-5 b(alues)33 +b(can)i(o)s(ccur)e(if)g(a)h(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)e +(attributes,)g(or)g(if)g(the)g(selected)h(b)m(yte)g(p)s(ositions)d(are) +j(not)f(w)m(ell)f(c)m(hosen.)44 b(With)630 4048 y(the)36 +b(-D)g(option)f Fn(gperf)f Fs(treats)j(all)d(these)j(k)m(eyw)m(ords)e +(as)h(part)g(of)g(an)f(equiv)-5 b(alence)35 b(class)630 +4157 y(and)c(generates)i(a)f(p)s(erfect)g(hash)f(function)f(with)h(m)m +(ultiple)e(comparisons)i(for)g(duplicate)630 4267 y(k)m(eyw)m(ords.)38 +b(It)21 b(is)e(up)h(to)h(y)m(ou)g(to)h(completely)e(disam)m(biguate)g +(the)h(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)g(y)m(ou)h(out)h(b)m(y)f(organizing)g(the)g +(output.)630 4515 y(Using)k(this)g(option)g(usually)f(means)i(that)g +(the)g(generated)h(hash)e(function)g(is)g(no)g(longer)630 +4625 y(p)s(erfect.)48 b(On)31 b(the)i(other)g(hand,)g(it)f(p)s(ermits)f +Fn(gperf)g Fs(to)i(w)m(ork)g(on)g(k)m(eyw)m(ord)g(sets)g(that)g(it)630 +4734 y(otherwise)d(could)f(not)i(handle.)150 4902 y(`)p +Fn(-m)f Fo(iterations)t Fs(')150 5011 y(`)p Fn(--multiple-iterations=)p +Fo(i)o(terations)t Fs(')630 5121 y(P)m(erform)24 b(m)m(ultiple)e(c)m +(hoices)j(of)f(the)h(`)p Fn(-i)p Fs(')f(and)g(`)p Fn(-j)p +Fs(')g(v)-5 b(alues,)25 b(and)e(c)m(ho)s(ose)j(the)e(b)s(est)g +(results.)630 5230 y(This)33 b(increases)i(the)g(running)d(time)i(b)m +(y)h(a)g(factor)h(of)f Fo(iterations)j Fs(but)c(do)s(es)g(a)i(go)s(o)s +(d)e(job)630 5340 y(minimizing)27 b(the)j(generated)i(table)e(size.)p +eop +%%Page: 24 26 +24 25 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +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)o(-v)-5 +b(alue)5 b Fs(')630 518 y(Pro)m(vides)28 b(an)g(initial)d +Fo(v)-5 b(alue)33 b Fs(for)28 b(the)g(asso)s(ciate)h(v)-5 +b(alues)28 b(arra)m(y)-8 b(.)41 b(Default)28 b(is)f(0.)41 +b(Increasing)630 628 y(the)30 b(initial)d(v)-5 b(alue)30 b(helps)e(in\015ate)h(the)h(\014nal)f(table)h(size,)g(p)s(ossibly)d -(leading)i(to)h(more)g(time)630 1592 y(e\016cien)m(t)e(k)m(eyw)m(ord)f +(leading)i(to)h(more)g(time)630 737 y(e\016cien)m(t)e(k)m(eyw)m(ord)f (lo)s(okups.)38 b(Note)29 b(that)e(this)f(option)h(is)f(not)h -(particularly)e(useful)g(when)630 1702 y(`)p Fn(-S)p -Fs(')30 b(is)g(used.)40 b(Also,)30 b(`)p Fn(-i)p Fs(')g(is)g(o)m(v)m -(erridden)f(when)g(the)i(`)p Fn(-r)p Fs(')f(option)g(is)g(used.)150 -1899 y(`)p Fn(-j)g Fo(jump-v)-5 b(alue)5 b Fs(')150 2008 -y(`)p Fn(--jump=)p Fo(jump-v)-5 b(alue)5 b Fs(')630 2118 -y(A\013ects)25 b(the)f(\\jump)f(v)-5 b(alue",)26 b(i.e.,)f(ho)m(w)f -(far)g(to)h(adv)-5 b(ance)24 b(the)g(asso)s(ciated)h(c)m(haracter)g(v) --5 b(alue)630 2228 y(up)s(on)29 b(collisions.)39 b Fo(Jump-v)-5 +(particularly)e(useful)g(when)630 847 y(`)p Fn(-S)p Fs(')j(\(or,)i +(equiv)-5 b(alen)m(tly)d(,)28 b(`)p Fn(\045switch)p Fs('\))f(is)h +(used.)39 b(Also,)29 b(`)p Fn(-i)p Fs(')f(is)f(o)m(v)m(erridden)h(when) +f(the)i(`)p Fn(-r)p Fs(')630 956 y(option)h(is)f(used.)150 +1150 y(`)p Fn(-j)h 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",)43 b(i.e.,)g(ho)m(w)d +(far)g(to)g(adv)-5 b(ance)41 b(the)f(asso)s(ciated)h(b)m(yte)f(v)-5 +b(alue)630 1479 y(up)s(on)29 b(collisions.)39 b Fo(Jump-v)-5 b(alue)34 b Fs(is)29 b(rounded)g(up)h(to)h(an)f(o)s(dd)g(n)m(um)m(b)s -(er,)f(the)i(default)f(is)f(5.)630 2337 y(If)h(the)g +(er,)f(the)i(default)f(is)f(5.)630 1588 y(If)h(the)g Fo(jump-v)-5 b(alue)34 b Fs(is)c(0)g Fn(gperf)f Fs(jumps)g(b)m(y)h -(random)g(amoun)m(ts.)150 2534 y(`)p Fn(-n)p Fs(')150 -2644 y(`)p Fn(--no-strlen)p Fs(')630 2754 y(Instructs)c(the)i +(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)d(the)j(length)e(of)h(a)h(k)m(eyw)m -(ord)g(when)e(computing)630 2863 y(its)40 b(hash)g(v)-5 +(ord)g(when)e(computing)630 2111 y(its)40 b(hash)g(v)-5 b(alue.)71 b(This)39 b(ma)m(y)i(sa)m(v)m(e)h(a)f(few)f(assem)m(bly)g -(instructions)f(in)g(the)i(generated)630 2973 y(lo)s(okup)29 -b(table.)150 3170 y(`)p Fn(-o)p Fs(')150 3280 y(`)p Fn -(--occurrence-sort)p Fs(')630 3389 y(Reorders)43 b(the)h(k)m(eyw)m -(ords)g(b)m(y)f(sorting)g(the)h(k)m(eyw)m(ords)g(so)g(that)g(frequen)m -(tly)f(o)s(ccuring)630 3499 y(k)m(ey)34 b(p)s(osition)e(set)h(comp)s -(onen)m(ts)h(app)s(ear)f(\014rst.)48 b(A)34 b(second)f(reordering)f -(pass)h(follo)m(ws)g(so)630 3608 y(that)43 b(k)m(eys)g(with)e -(\\already)i(determined)e(v)-5 b(alues")42 b(are)h(placed)e(to)m(w)m -(ards)j(the)e(fron)m(t)h(of)630 3718 y(the)c(k)m(eylist.)67 -b(This)37 b(ma)m(y)j(decrease)g(the)f(time)g(required)e(to)j(generate)g -(a)g(p)s(erfect)f(hash)630 3828 y(function)33 b(for)h(man)m(y)g(k)m -(eyw)m(ord)h(sets,)h(and)d(also)i(pro)s(duce)e(more)h(minimal)e(p)s -(erfect)i(hash)630 3937 y(functions.)68 b(The)39 b(reason)h(for)g(this) -f(is)f(that)j(the)f(reordering)f(helps)f(prune)g(the)i(searc)m(h)630 -4047 y(time)28 b(b)m(y)h(handling)d(inevitable)h(collisions)f(early)i -(in)f(the)i(searc)m(h)g(pro)s(cess.)40 b(On)28 b(the)h(other)630 -4156 y(hand,)i(if)f(the)i(n)m(um)m(b)s(er)e(of)i(k)m(eyw)m(ords)g(is)e -Fl(very)40 b Fs(large)31 b(using)f(`)p Fn(-o)p Fs(')i(ma)m(y)g -Fl(incr)-5 b(e)g(ase)39 b Fn(gperf)p Fs('s)630 4266 y(execution)34 -b(time,)h(since)e(collisions)f(will)f(b)s(egin)i(earlier)g(and)g(con)m -(tin)m(ue)h(throughout)g(the)630 4376 y(remainder)f(of)h(k)m(eyw)m(ord) -h(pro)s(cessing.)51 b(See)35 b(Cic)m(helli's)d(pap)s(er)h(from)h(the)g -(Jan)m(uary)g(1980)630 4485 y(Comm)m(unications)29 b(of)h(the)h(A)m(CM) -g(for)f(details.)150 4682 y(`)p Fn(-r)p Fs(')150 4792 -y(`)p Fn(--random)p Fs(')630 4902 y(Utilizes)37 b(randomness)h(to)h -(initialize)c(the)k(asso)s(ciated)g(v)-5 b(alues)37 b(table.)65 -b(This)37 b(frequen)m(tly)630 5011 y(generates)23 b(solutions)c(faster) -j(than)f(using)f(deterministic)f(initialization)f(\(whic)m(h)i(starts)i -(all)630 5121 y(asso)s(ciated)27 b(v)-5 b(alues)27 b(at)g(0\).)40 +(instructions)f(in)g(the)i(generated)630 2221 y(lo)s(okup)29 +b(table.)150 2414 y(`)p Fn(-r)p Fs(')150 2524 y(`)p Fn(--random)p +Fs(')630 2633 y(Utilizes)37 b(randomness)h(to)h(initialize)c(the)k +(asso)s(ciated)g(v)-5 b(alues)37 b(table.)65 b(This)37 +b(frequen)m(tly)630 2743 y(generates)23 b(solutions)c(faster)j(than)f +(using)f(deterministic)f(initialization)f(\(whic)m(h)i(starts)i(all)630 +2853 y(asso)s(ciated)27 b(v)-5 b(alues)27 b(at)g(0\).)40 b(F)-8 b(urthermore,)28 b(using)e(the)h(randomization)e(option)i -(generally)630 5230 y(increases)33 b(the)h(size)f(of)g(the)h(table.)50 -b(If)33 b Fn(gperf)f Fs(has)h(di\016cultly)d(with)i(a)i(certain)f(k)m -(eyw)m(ord)630 5340 y(set)e(try)f(using)f(`)p Fn(-r)p -Fs(')h(or)h(`)p Fn(-D)p Fs('.)p eop -%%Page: 20 22 -20 21 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 -b Fn(gperf)2433 b Fs(20)150 299 y(`)p Fn(-s)30 b Fo(size-m)m(ultiple)5 -b Fs(')150 408 y(`)p Fn(--size-multiple=)p Fo(size-m)m(ultipl)o(e)g -Fs(')630 518 y(A\013ects)40 b(the)e(size)g(of)h(the)f(generated)i(hash) -d(table.)65 b(The)38 b(n)m(umeric)f(argumen)m(t)i(for)f(this)630 -628 y(option)32 b(indicates)f(\\ho)m(w)i(man)m(y)g(times)f(larger)g(or) -g(smaller")g(the)g(maxim)m(um)f(asso)s(ciated)630 737 -y(v)-5 b(alue)23 b(range)h(should)d(b)s(e,)j(in)e(relationship)f(to)j -(the)g(n)m(um)m(b)s(er)e(of)h(k)m(eys.)40 b(If)22 b(the)i -Fo(size-m)m(ultiple)630 847 y Fs(is)31 b(negativ)m(e)j(the)e(maxim)m -(um)g(asso)s(ciated)g(v)-5 b(alue)32 b(is)g(calculated)g(b)m(y)g -Fl(dividing)41 b Fs(it)31 b(in)m(to)i(the)630 956 y(total)k(n)m(um)m(b) -s(er)e(of)h(k)m(eys.)59 b(F)-8 b(or)37 b(example,)h(a)f(v)-5 -b(alue)35 b(of)i(3)f(means)g(\\allo)m(w)h(the)f(maxim)m(um)630 -1066 y(asso)s(ciated)31 b(v)-5 b(alue)30 b(to)h(b)s(e)f(ab)s(out)g(3)g -(times)g(larger)g(than)h(the)f(n)m(um)m(b)s(er)f(of)i(input)d(k)m -(eys".)630 1200 y(Con)m(v)m(ersely)-8 b(,)42 b(a)e(v)-5 -b(alue)39 b(of)g(-3)h(means)g(\\allo)m(w)f(the)h(maxim)m(um)e(asso)s -(ciated)i(v)-5 b(alue)38 b(to)j(b)s(e)630 1310 y(ab)s(out)f(3)g(times)f -(smaller)f(than)i(the)g(n)m(um)m(b)s(er)f(of)h(input)d(k)m(eys".)71 -b(Negativ)m(e)41 b(v)-5 b(alues)40 b(are)630 1420 y(useful)i(for)i -(limiting)d(the)j(o)m(v)m(erall)h(size)f(of)g(the)g(generated)h(hash)f -(table,)j(though)d(this)630 1529 y(usually)28 b(increases)i(the)h(n)m -(um)m(b)s(er)e(of)h(duplicate)f(hash)h(v)-5 b(alues.)630 -1664 y(If)33 b(`generate)j(switc)m(h')e(option)f(`)p -Fn(-S)p Fs(')h(is)f Fl(not)43 b Fs(enabled,)34 b(the)g(maxim)m(um)f -(asso)s(ciated)h(v)-5 b(alue)630 1773 y(in\015uences)22 -b(the)j(static)f(arra)m(y)h(table)f(size,)h(and)f(a)g(larger)g(table)g -(should)e(decrease)j(the)f(time)630 1883 y(required)29 -b(for)h(an)g(unsuccessful)e(searc)m(h,)j(at)g(the)g(exp)s(ense)f(of)g -(extra)i(table)e(space.)630 2017 y(The)35 b(default)f(v)-5 -b(alue)35 b(is)f(1,)j(th)m(us)e(the)h(default)e(maxim)m(um)g(asso)s -(ciated)i(v)-5 b(alue)35 b(ab)s(out)g(the)630 2127 y(same)25 -b(size)f(as)h(the)f(n)m(um)m(b)s(er)g(of)g(k)m(eys)h(\(for)g -(e\016ciency)-8 b(,)26 b(the)f(maxim)m(um)e(asso)s(ciated)i(v)-5 -b(alue)24 b(is)630 2237 y(alw)m(a)m(ys)k(rounded)e(up)h(to)h(a)g(p)s(o) -m(w)m(er)g(of)g(2\).)40 b(The)27 b(actual)h(table)g(size)g(ma)m(y)g(v) --5 b(ary)27 b(somewhat,)630 2346 y(since)21 b(this)g(tec)m(hnique)h(is) -f(essen)m(tially)f(a)j(heuristic.)36 b(In)21 b(particular,)h(setting)g -(this)f(v)-5 b(alue)21 b(to)s(o)630 2456 y(high)32 b(slo)m(ws)i(do)m -(wn)f Fn(gperf)p Fs('s)f(run)m(time,)i(since)f(it)g(m)m(ust)h(searc)m -(h)g(through)f(a)h(m)m(uc)m(h)g(larger)630 2565 y(range)f(of)h(v)-5 -b(alues.)48 b(Judicious)30 b(use)j(of)g(the)h(`)p Fn(-f)p -Fs(')f(option)f(helps)g(alleviate)h(this)e(o)m(v)m(erhead,)630 -2675 y(ho)m(w)m(ev)m(er.)150 2932 y Fr(4.5)68 b(Informativ)l(e)47 -b(Output)150 3150 y Fs(`)p Fn(-h)p Fs(')150 3259 y(`)p +(generally)630 2962 y(increases)j(the)h(size)f(of)g(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(ultipl)o(e)g +Fs(')630 3375 y(A\013ects)40 b(the)e(size)g(of)h(the)f(generated)i +(hash)d(table.)65 b(The)38 b(n)m(umeric)f(argumen)m(t)i(for)f(this)630 +3485 y(option)32 b(indicates)f(\\ho)m(w)i(man)m(y)g(times)f(larger)g +(or)g(smaller")g(the)g(maxim)m(um)f(asso)s(ciated)630 +3594 y(v)-5 b(alue)37 b(range)h(should)d(b)s(e,)k(in)d(relationship)f +(to)j(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)f(as)i(an)f(in)m(teger,)k(a)c +(\015oating-p)s(oin)m(t)g(n)m(um)m(b)s(er)f(or)i(a)f(fraction.)65 +b(F)-8 b(or)39 b(example,)i(a)630 3814 y(v)-5 b(alue)39 +b(of)g(3)h(means)f(\\allo)m(w)g(the)h(maxim)m(um)e(asso)s(ciated)h(v)-5 +b(alue)39 b(to)h(b)s(e)f(ab)s(out)g(3)g(times)630 3923 +y(larger)32 b(than)h(the)g(n)m(um)m(b)s(er)e(of)i(input)e(k)m(eyw)m +(ords".)49 b(Con)m(v)m(ersely)-8 b(,)34 b(a)f(v)-5 b(alue)32 +b(of)h(1/3)h(means)630 4033 y(\\allo)m(w)41 b(the)g(maxim)m(um)e(asso)s +(ciated)j(v)-5 b(alue)40 b(to)i(b)s(e)e(ab)s(out)g(3)h(times)g(smaller) +e(than)i(the)630 4142 y(n)m(um)m(b)s(er)33 b(of)i(input)e(k)m(eyw)m +(ords".)55 b(V)-8 b(alues)34 b(smaller)g(than)g(1)h(are)g(useful)e(for) +i(limiting)d(the)630 4252 y(o)m(v)m(erall)d(size)f(of)h(the)f +(generated)i(hash)e(table,)h(though)f(the)g(option)g(`)p +Fn(-m)p Fs(')h(is)e(b)s(etter)i(at)g(this)630 4361 y(purp)s(ose.)630 +4513 y(If)44 b(`generate)h(switc)m(h')f(option)g(`)p +Fn(-S)p Fs(')g(\(or,)k(equiv)-5 b(alen)m(tly)d(,)46 b(`)p +Fn(\045switch)p Fs('\))d(is)g Fl(not)54 b Fs(enabled,)630 +4623 y(the)45 b(maxim)m(um)g(asso)s(ciated)g(v)-5 b(alue)45 +b(in\015uences)f(the)h(static)h(arra)m(y)g(table)f(size,)k(and)c(a)630 +4732 y(larger)26 b(table)g(should)e(decrease)j(the)f(time)g(required)e +(for)i(an)f(unsuccessful)f(searc)m(h,)k(at)f(the)630 +4842 y(exp)s(ense)j(of)g(extra)i(table)e(space.)630 4994 +y(The)35 b(default)f(v)-5 b(alue)35 b(is)f(1,)j(th)m(us)e(the)h +(default)e(maxim)m(um)g(asso)s(ciated)i(v)-5 b(alue)35 +b(ab)s(out)g(the)630 5103 y(same)h(size)f(as)g(the)h(n)m(um)m(b)s(er)e +(of)h(k)m(eyw)m(ords)h(\(for)g(e\016ciency)-8 b(,)37 +b(the)e(maxim)m(um)f(asso)s(ciated)630 5213 y(v)-5 b(alue)35 +b(is)g(alw)m(a)m(ys)h(rounded)e(up)g(to)i(a)g(p)s(o)m(w)m(er)g(of)f +(2\).)57 b(The)35 b(actual)h(table)g(size)f(ma)m(y)h(v)-5 +b(ary)630 5322 y(somewhat,)31 b(since)f(this)f(tec)m(hnique)h(is)g +(essen)m(tially)f(a)i(heuristic.)p eop +%%Page: 25 27 +25 26 bop 150 -116 a Fs(Chapter)30 b(4:)41 b(In)m(v)m(oking)30 +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)23 b(a)h(short)f(summary)g(on)h(the)g (meaning)f(of)h(eac)m(h)h(program)e(option.)38 b(Ab)s(orts)23 -b(further)630 3369 y(program)30 b(execution.)150 3528 -y(`)p Fn(-v)p Fs(')150 3638 y(`)p Fn(--version)p Fs(')630 -3748 y(Prin)m(ts)f(out)i(the)f(curren)m(t)h(v)m(ersion)e(n)m(um)m(b)s -(er.)150 3907 y(`)p Fn(-d)p Fs(')150 4017 y(`)p Fn(--debug)p +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)f(out)i(the)f(curren)m(t)h(v)m(ersion)e(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)27 b(the)i(debugging)e(option.)39 b(This)27 b(pro)s(duces)g(v)m(erb)s(ose)i(diagnostics)e(to)i(\\standard)630 -4126 y(error")i(when)g Fn(gperf)f Fs(is)g(executing.)44 +1493 y(error")i(when)g Fn(gperf)f Fs(is)g(executing.)44 b(It)32 b(is)e(useful)g(b)s(oth)h(for)g(main)m(taining)f(the)h(program) -630 4236 y(and)f(for)h(determining)e(whether)h(a)h(giv)m(en)g(set)g(of) +630 1602 y(and)f(for)h(determining)e(whether)h(a)h(giv)m(en)g(set)g(of) g(options)f(is)g(actually)h(sp)s(eeding)e(up)h(the)630 -4345 y(searc)m(h)41 b(for)e(a)h(solution.)68 b(Some)40 +1712 y(searc)m(h)41 b(for)e(a)h(solution.)68 b(Some)40 b(useful)e(information)g(is)h(dump)s(ed)f(at)i(the)g(end)g(of)g(the)630 -4455 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)g(is)g +1822 y(program)30 b(when)g(the)g(`)p Fn(-d)p Fs(')g(option)g(is)g (enabled.)p eop -%%Page: 21 23 -21 22 bop 150 -116 a Fs(Chapter)30 b(5:)41 b(Kno)m(wn)30 -b(Bugs)g(and)g(Limitations)e(with)h Fn(gperf)1397 b Fs(21)150 +%%Page: 26 28 +26 27 bop 150 -116 a Fs(Chapter)30 b(5:)41 b(Kno)m(wn)30 +b(Bugs)g(and)g(Limitations)e(with)h Fn(gperf)1397 b Fs(26)150 299 y Fp(5)80 b(Kno)l(wn)53 b(Bugs)f(and)i(Limitations)h(with)e Fm(gperf)275 533 y Fs(The)29 b(follo)m(wing)g(are)i(some)g(limitations) d(with)h(the)h(curren)m(t)h(release)f(of)h Fn(gperf)p @@ -3281,50 +3672,32 @@ b(Sev)m(eral)41 b(recen)m(t)h(enhancemen)m(ts)g(no)m(w)e(enable)330 (h)h(larger)f(k)m(eyw)m(ord)h(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)29 b(large)i(k)m(eyw)m(ord) f(sets)h(it)f(helps)f(greatly)i(to)g(ha)m(v)m(e)g(o)m(v)m(er)h(8)f -(megs)g(of)f(RAM.)330 1240 y(Ho)m(w)m(ev)m(er,)k(since)c -Fn(gperf)g Fs(do)s(es)g(not)i(bac)m(ktrac)m(k)h(no)e(guaran)m(teed)h -(solution)e(o)s(ccurs)g(on)h(ev)m(ery)h(run.)330 1350 -y(On)26 b(the)h(other)g(hand,)f(it)h(is)e(usually)g(easy)i(to)h(obtain) -e(a)h(solution)e(b)m(y)i(v)-5 b(arying)26 b(the)h(option)f(param-)330 -1460 y(eters.)52 b(In)33 b(particular,)g(try)h(the)g(`)p -Fn(-r)p Fs(')g(option,)g(and)f(also)h(try)g(c)m(hanging)g(the)g -(default)f(argumen)m(ts)330 1569 y(to)38 b(the)f(`)p -Fn(-s)p Fs(')h(and)e(`)p Fn(-j)p Fs(')h(options.)61 b(T)-8 -b(o)38 b Fl(guar)-5 b(ante)g(e)45 b Fs(a)38 b(solution,)g(use)f(the)g -(`)p Fn(-D)p Fs(')h(and)e(`)p Fn(-S)p Fs(')h(options,)330 -1679 y(although)27 b(the)h(\014nal)e(results)g(are)i(not)g(lik)m(ely)e -(to)i(b)s(e)f(a)h Fl(p)-5 b(erfe)g(ct)37 b Fs(hash)27 -b(function)f(an)m(ymore!)40 b(Finally)-8 b(,)330 1788 -y(use)32 b(the)g(`)p Fn(-f)p Fs(')g(option)f(if)g(y)m(ou)h(w)m(an)m(t)h -Fn(gperf)d Fs(to)j(generate)g(the)f(p)s(erfect)g(hash)f(function)g -Fl(fast)p Fs(,)i(with)330 1898 y(less)d(emphasis)f(on)h(making)g(it)f -(minimal.)225 2032 y Fq(\017)60 b Fs(The)43 b(size)h(of)g(the)g +(megs)g(of)f(RAM.)225 1240 y Fq(\017)60 b Fs(The)43 b(size)h(of)g(the)g (generate)h(static)g(k)m(eyw)m(ord)f(arra)m(y)g(can)g(get)h Fl(extr)-5 b(emely)53 b Fs(large)44 b(if)f(the)h(input)330 -2142 y(k)m(eyw)m(ord)d(\014le)e(is)g(large)i(or)f(if)f(the)i(k)m(eyw)m +1350 y(k)m(eyw)m(ord)d(\014le)e(is)g(large)i(or)f(if)f(the)i(k)m(eyw)m (ords)f(are)h(quite)f(similar.)67 b(This)39 b(tends)h(to)h(slo)m(w)e -(do)m(wn)330 2252 y(the)c(compilation)e(of)i(the)f(generated)i(C)e(co)s +(do)m(wn)330 1460 y(the)c(compilation)e(of)i(the)f(generated)i(C)e(co)s (de,)i(and)e Fl(gr)-5 b(e)g(atly)44 b Fs(in\015ates)34 b(the)h(ob)5 b(ject)35 b(co)s(de)g(size.)53 b(If)330 -2361 y(this)39 b(situation)g(o)s(ccurs,)j(consider)d(using)f(the)i(`)p +1569 y(this)39 b(situation)g(o)s(ccurs,)j(consider)d(using)f(the)i(`)p Fn(-S)p Fs(')g(option)f(to)i(reduce)e(data)i(size,)h(p)s(oten)m(tially) -330 2471 y(increasing)g(k)m(eyw)m(ord)i(recognition)f(time)g(a)h +330 1679 y(increasing)g(k)m(eyw)m(ord)i(recognition)f(time)g(a)h (negligible)e(amoun)m(t.)80 b(Since)43 b(man)m(y)g(C)h(compilers)330 -2580 y(cannot)33 b(correctly)g(generated)h(co)s(de)f(for)f(large)h -(switc)m(h)f(statemen)m(ts)j(it)d(is)g(imp)s(ortan)m(t)f(to)j(qualify) -330 2690 y(the)40 b Fo(-S)46 b Fs(option)39 b(with)g(an)h(appropriate)f -(n)m(umerical)g(argumen)m(t)h(that)h(con)m(trols)g(the)f(n)m(um)m(b)s -(er)f(of)330 2800 y(switc)m(h)30 b(statemen)m(ts)i(generated.)225 -2934 y Fq(\017)60 b Fs(The)31 b(maxim)m(um)f(n)m(um)m(b)s(er)f(of)j(k)m -(ey)f(p)s(ositions)f(selected)h(for)g(a)g(giv)m(en)h(k)m(ey)f(has)g(an) -g(arbitrary)f(limit)330 3044 y(of)40 b(126.)69 b(This)38 -b(restriction)h(should)e(b)s(e)i(remo)m(v)m(ed,)k(and)c(if)g(an)m(y)m -(one)i(considers)d(this)h(a)h(problem)330 3153 y(write)30 -b(me)g(and)g(let)g(me)h(kno)m(w)f(so)h(I)f(can)g(remo)m(v)m(e)i(the)f -(constrain)m(t.)p eop -%%Page: 22 24 -22 23 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)28 -b(Still)g(Left)j(to)g(Do)2133 b(22)150 299 y Fp(6)80 +1788 y(cannot)37 b(correctly)h(generate)g(co)s(de)f(for)g(large)g +(switc)m(h)f(statemen)m(ts)j(it)d(is)g(imp)s(ortan)m(t)g(to)i(qualify) +330 1898 y(the)i Fo(-S)46 b Fs(option)39 b(with)g(an)h(appropriate)f(n) +m(umerical)g(argumen)m(t)h(that)h(con)m(trols)g(the)f(n)m(um)m(b)s(er)f +(of)330 2007 y(switc)m(h)30 b(statemen)m(ts)i(generated.)225 +2142 y Fq(\017)60 b Fs(The)35 b(maxim)m(um)f(n)m(um)m(b)s(er)g(of)i +(selected)g(b)m(yte)g(p)s(ositions)d(has)i(an)h(arbitrary)e(limit)f(of) +j(255.)57 b(This)330 2252 y(restriction)27 b(should)f(b)s(e)h(remo)m(v) +m(ed,)j(and)d(if)g(an)m(y)m(one)i(considers)e(this)g(a)h(problem)e +(write)i(me)g(and)f(let)330 2361 y(me)j(kno)m(w)h(so)f(I)h(can)f(remo)m +(v)m(e)i(the)f(constrain)m(t.)p eop +%%Page: 27 29 +27 28 bop 150 -116 a Fs(Chapter)30 b(6:)41 b(Things)28 +b(Still)g(Left)j(to)g(Do)2133 b(27)150 299 y Fp(6)80 b(Things)54 b(Still)i(Left)d(to)g(Do)275 533 y Fs(It)24 b(should)e(b)s(e)i(\\relativ)m(ely")h(easy)g(to)g(replace)f(the)h (curren)m(t)f(p)s(erfect)g(hash)g(function)f(algorithm)g(with)150 @@ -3332,56 +3705,27 @@ b(should)e(b)s(e)i(\\relativ)m(ely")h(easy)g(to)g(replace)f(the)h (hash)e(mo)s(dule)g(is)g(essen)m(tial)h(indep)s(enden)m(t)e(from)i (other)150 752 y(program)c(mo)s(dules.)39 b(Additional)28 b(w)m(orth)m(while)h(impro)m(v)m(emen)m(ts)i(include:)225 -887 y Fq(\017)60 b Fs(Mak)m(e)38 b(the)e(algorithm)f(more)h(robust.)58 -b(A)m(t)37 b(presen)m(t,)h(the)e(program)g(halts)f(with)g(an)h(error)g -(diag-)330 996 y(nostic)k(if)g(it)g(can't)i(\014nd)d(a)i(direct)f -(solution)g(and)g(the)h(`)p Fn(-D)p Fs(')f(option)h(is)e(not)i -(enabled.)71 b(A)41 b(more)330 1106 y(comprehensiv)m(e,)c(alb)s(eit)d -(computationally)g(exp)s(ensiv)m(e,)j(approac)m(h)f(w)m(ould)e(emplo)m -(y)i(bac)m(ktrac)m(k-)330 1215 y(ing)28 b(or)g(enable)g(alternativ)m(e) -i(options)d(and)h(retry)-8 b(.)41 b(It's)29 b(not)g(clear)f(ho)m(w)h -(helpful)d(this)h(w)m(ould)h(b)s(e,)g(in)330 1325 y(general,)j(since)e -(most)i(searc)m(h)g(sets)g(are)g(rather)f(small)f(in)g(practice.)225 -1460 y Fq(\017)60 b Fs(Another)34 b(useful)e(extension)h(in)m(v)m(olv)m +887 y Fq(\017)60 b Fs(Another)34 b(useful)e(extension)h(in)m(v)m(olv)m (es)h(mo)s(difying)d(the)j(program)f(to)i(generate)g(\\minimal")d(p)s -(er-)330 1569 y(fect)42 b(hash)f(functions)e(\(under)i(certain)g +(er-)330 996 y(fect)42 b(hash)f(functions)e(\(under)i(certain)g (circumstances,)j(the)d(curren)m(t)g(v)m(ersion)g(can)g(b)s(e)g(rather) -330 1679 y(extra)m(v)-5 b(agan)m(t)37 b(in)32 b(the)i(generated)h -(table)e(size\).)51 b(Again,)35 b(this)d(is)h(mostly)h(of)f -(theoretical)i(in)m(terest,)330 1788 y(since)f(a)h(sparse)f(table)g -(often)h(pro)s(duces)f(faster)g(lo)s(okups,)h(and)f(use)g(of)h(the)f(`) -p Fn(-S)p Fs(')h Fn(switch)d Fs(option)330 1898 y(can)27 -b(minimize)e(the)i(data)h(size,)g(at)f(the)h(exp)s(ense)e(of)h(sligh)m -(tly)f(longer)g(lo)s(okups)g(\(note)i(that)g(the)f(gcc)330 -2007 y(compiler)35 b(generally)g(pro)s(duces)g(go)s(o)s(d)h(co)s(de)g -(for)g Fn(switch)f Fs(statemen)m(ts,)k(reducing)c(the)h(need)g(for)330 -2117 y(more)31 b(complex)f(sc)m(hemes\).)225 2252 y Fq(\017)60 -b Fs(In)27 b(addition)f(to)j(impro)m(ving)d(the)i(algorithm,)g(it)f(w)m -(ould)g(also)h(b)s(e)f(useful)f(to)j(generate)g(a)f(C)p -Fn(++)f Fs(class)330 2361 y(or)j(Ada)h(pac)m(k)-5 b(age)32 -b(as)f(the)f(co)s(de)h(output,)f(in)f(addition)g(to)i(the)g(curren)m(t) -f(C)g(routines.)p eop -%%Page: 23 25 -23 24 bop 150 -116 a Fs(Chapter)30 b(7:)41 b(Implemen)m(tation)29 -b(Details)i(of)f(GNU)h Fn(gperf)1499 b Fs(23)150 299 -y Fp(7)80 b(Implemen)l(tation)52 b(Details)j(of)f(GNU)g -Fm(gperf)275 533 y Fs(A)27 b(pap)s(er)f(describing)f(the)j(high-lev)m -(el)e(description)f(of)j(the)f(data)h(structures)f(and)g(algorithms)f -(used)150 643 y(to)e(implemen)m(t)d Fn(gperf)h Fs(will)e(so)s(on)j(b)s -(e)f(a)m(v)-5 b(ailable.)38 b(This)21 b(pap)s(er)h(is)g(useful)f(not)j -(only)e(from)g(a)i(main)m(tenance)150 752 y(and)30 b(enhancemen)m(t)h -(p)s(ersp)s(ectiv)m(e,)f(but)f(also)h(b)s(ecause)h(they)f(demonstrate)h -(sev)m(eral)g(clev)m(er)g(and)f(useful)150 862 y(programming)e(tec)m -(hniques,)i(e.g.,)h(`Iteration)f(Num)m(b)s(er')f(b)s(o)s(olean)g(arra)m -(ys,)h(double)e(hashing,)h(a)h(\\safe")150 971 y(and)i(e\016cien)m(t)g -(metho)s(d)g(for)g(reading)g(arbitrarily)d(long)j(input)f(from)g(a)i -(\014le,)f(and)g(a)h(pro)m(v)-5 b(ably)31 b(optimal)150 -1081 y(algorithm)g(for)i(sim)m(ultaneously)d(determining)g(b)s(oth)i -(the)g(minim)m(um)e(and)i(maxim)m(um)f(elemen)m(ts)h(in)g(a)150 -1191 y(list.)p eop -%%Page: 24 26 -24 25 bop 150 -116 a Fs(Chapter)30 b(8:)41 b(Bibliograph)m(y)2533 -b(24)150 299 y Fp(8)80 b(Bibliograph)l(y)275 533 y Fs([1])22 +330 1106 y(extra)m(v)-5 b(agan)m(t)39 b(in)c(the)i(generated)g(table)f +(size\).)59 b(This)35 b(is)g(mostly)h(of)h(theoretical)f(in)m(terest,)j +(since)330 1215 y(a)g(sparse)f(table)g(often)h(pro)s(duces)e(faster)i +(lo)s(okups,)g(and)f(use)g(of)h(the)g(`)p Fn(-S)p Fs(')f +Fn(switch)f Fs(option)h(can)330 1325 y(minimize)e(the)j(data)g(size,)i +(at)e(the)g(exp)s(ense)f(of)h(sligh)m(tly)e(longer)h(lo)s(okups)f +(\(note)j(that)f(the)g(gcc)330 1435 y(compiler)c(generally)g(pro)s +(duces)g(go)s(o)s(d)h(co)s(de)g(for)g Fn(switch)f Fs(statemen)m(ts,)k +(reducing)c(the)h(need)g(for)330 1544 y(more)31 b(complex)f(sc)m +(hemes\).)225 1679 y Fq(\017)60 b Fs(In)38 b(addition)f(to)j(impro)m +(ving)d(the)j(algorithm,)g(it)e(w)m(ould)g(also)h(b)s(e)g(useful)e(to)i +(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)f(addition)g(to)i(the)g(curren)m(t)f(C)g(and)g(C)p +Fn(++)f Fs(routines.)p eop +%%Page: 28 30 +28 29 bop 150 -116 a Fs(Chapter)30 b(7:)41 b(Bibliograph)m(y)2533 +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)29 b(Sciences)h(39\(1986\),)k @@ -3417,26 +3761,30 @@ b(of)h(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,)e(Douglas)h(C.)g 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,)f(April)e(1990.)275 2730 y([10])c(Seb)s(esta,)h(R.W.)e(and)g -(T)-8 b(a)m(ylor,)25 b(M.A.)f 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 2839 y(Lists)38 b Fs(SIGPLAN)30 b(Notices,)i(20,)f -(12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 2974 y([11])43 +(ceedings,)f(April)e(1990.)275 2730 y([10])42 b(Sc)m(hmidt,)h(Douglas)e +(C.)g 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,)25 b(M.A.)f 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,)i(20,)f +(12\(Septem)m(b)s(er)g(1985\),)i(47-53.)275 3218 y([12])43 b(Sprugnoli,)f(R.)g 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 3083 y(Static)33 +b(etrieving)44 b(Metho)-5 b(d)44 b(for)150 3328 y(Static)33 b(Sets)38 b Fs(Comm)m(unications)29 b(of)i(the)f(A)m(CM,)i(20)f(11\(No) -m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3218 y([12])27 +m(v)m(em)m(b)s(er)i(1977\),)f(841-850.)275 3462 y([13])27 b(Stallman,)f(Ric)m(hard)f(M.)i 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,)27 -b(1988.)275 3352 y([13])k(Stroustrup,)e(Bjarne)i Fl(The)h(C)p +b(1988.)275 3597 y([14])k(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(,)31 b(1986.)275 3487 y([14])g(Tiemann,)e +b Fs(Addison-W)-8 b(esley)g(,)31 b(1986.)275 3731 y([15])g(Tiemann,)e (Mic)m(hael)i(D.)g 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,)30 b(1989.)p eop -%%Page: 25 27 -25 26 bop 150 -116 a Fs(Concept)31 b(Index)2927 b(25)150 +%%Page: 29 31 +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(.) @@ -3444,67 +3792,127 @@ 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(12)150 972 y(`)p Fc(\045})p Fd(')12 b Fb(.)i(.)e(.)g(.)h(.)f(.)g +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(12)150 1250 y Fr(A)150 1384 y Fd(Arra)n(y)25 b(name)18 -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(17)150 1675 y Fr(B)150 1809 y Fd(Bugs)9 b Fb(.)k(.)g(.)f(.)g(.)g +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(13)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(13)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(14)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(12)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(12)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)18 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(.)i(.)g(.)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(.)j(.)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(.)h(.)f(.)g(.)h(.)f(.)g(.)g(.)h(.)f(.)g(.)h -(.)35 b Fd(8)150 2100 y Fr(C)150 2235 y Fd(Class)27 b(name)10 -b Fb(.)i(.)g(.)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(16)150 2513 y Fr(D)150 2647 y Fd(Declaration)27 -b(section)d Fb(.)12 b(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g -(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)49 -b Fd(11)150 2745 y(Delimiters)9 b Fb(.)k(.)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(.)35 b Fd(15)150 2842 -y(Duplicates)24 b Fb(.)12 b(.)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(.)49 b Fd(18)150 3133 y Fr(F)150 3267 y -Fd(F)-6 b(ormat)23 b Fb(.)12 b(.)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(.)49 b Fd(11)150 3365 y(F)-6 -b(unctions)25 b(section)18 b Fb(.)13 b(.)g(.)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(.)43 b Fd(11)2025 642 y Fr(H)2025 764 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(13)2025 855 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(.)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)22 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(.) -f(.)g(.)h(.)34 b Fd(13)2025 1100 y Fr(I)2025 1222 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(14)2025 1313 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(16)2025 1557 -y Fr(J)2025 1679 y Fd(Jump)24 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(19)2025 1936 y Fr(K)2025 2058 y Fd(Keyw)n(ords)25 +49 b Fd(20)2025 2573 y Fr(J)2025 2695 y Fd(Jump)24 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 2315 y Fr(M)2025 2437 y Fd(Minimal)26 b(p)r(erfect)g(hash) +b Fd(11)2025 3330 y Fr(M)2025 3452 y Fd(Minimal)26 b(p)r(erfect)g(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 2694 y Fr(N)2025 2816 y Fd(NUL)9 +(.)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(14)2025 3060 y Fr(S)2025 -3182 y Fd(Slot)26 b(name)13 b Fb(.)e(.)i(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.) +(.)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(.)e(.)i(.)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(16)2025 3274 y(Static)26 +(.)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 3365 y Fc(switch)22 b Fb(.)12 b(.)g(.)g(.)h(.)f(.)g(.)h(.) +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(14,)27 b(17)p +(.)f(.)g(.)h(.)f(.)g(.)h(.)f(.)g(.)46 b Fd(18,)27 b(22)p eop -%%Page: -1 28 --1 27 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 b(able)54 +%%Page: -1 32 +-1 31 bop 3725 -116 a Fs(i)150 299 y Fp(T)-13 b(able)54 b(of)g(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(.)e(.)h(.)g(.)g(.)g(.)g(.)g(.)g @@ -3529,45 +3937,56 @@ 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 Fn(struct)28 -b Fs(Declarations)j(and)f(C)g(Co)s(de)g(Inclusion)25 -b Fl(.)15 b(.)g(.)g(.)g(.)g(.)57 b Fs(11)748 2515 y(3.1.2)93 -b(F)-8 b(ormat)31 b(for)f(Keyw)m(ord)g(En)m(tries)17 -b Fl(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)46 b Fs(12)748 2624 y(3.1.3)93 b(Including)27 -b(Additional)h(C)i(F)-8 b(unctions)19 b Fl(.)c(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 b Fs(13)449 2734 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)f -Fn(gperf)23 b Fl(.)14 b(.)h(.)g(.)g(.)g(.)g(.)g(.)52 -b Fs(13)449 2844 y(3.3)92 b(Use)31 b(of)f(NUL)h(c)m(haracters)11 -b Fl(.)16 b(.)f(.)g(.)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(.) -40 b Fs(14)150 3086 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(15)449 3223 y Fs(4.1)92 b(Options)29 b(that)i(a\013ect)h(In)m -(terpretation)e(of)h(the)f(Input)f(File)e Fl(.)15 b(.)g(.)g(.)g(.)g(.)g -(.)57 b Fs(15)449 3333 y(4.2)92 b(Options)29 b(to)i(sp)s(ecify)e(the)i -(Language)g(for)f(the)h(Output)e(Co)s(de)14 b Fl(.)g(.)h(.)g(.)g(.)43 -b Fs(15)449 3442 y(4.3)92 b(Options)29 b(for)h(\014ne)g(tuning)f -(Details)h(in)f(the)i(Output)e(Co)s(de)23 b Fl(.)15 b(.)g(.)g(.)g(.)g -(.)g(.)53 b Fs(16)449 3552 y(4.4)92 b(Options)29 b(for)h(c)m(hanging)g -(the)h(Algorithms)e(emplo)m(y)m(ed)h(b)m(y)h Fn(gperf)21 -b Fl(.)14 b(.)50 b Fs(17)449 3661 y(4.5)92 b(Informativ)m(e)30 +g(.)g(.)54 b Fs(11)748 2405 y(3.1.1)93 b(Declarations)9 +b 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(.)39 b Fs(11)1047 2515 y(3.1.1.1)93 b(User-supplied)28 +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(.)d(.)g(.)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)d 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(.)e(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)46 b Fs(15)748 +2953 y(3.1.3)93 b(Including)27 b(Additional)h(C)i(F)-8 +b(unctions)19 b Fl(.)c(.)g(.)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)g +(directiv)m(es)e(for)i(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)f 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)28 b(the)i(Lo)s(cation)h +(of)f(the)h(Output)e(File)19 b Fl(.)c(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g +(.)g(.)g(.)g(.)g(.)g(.)49 b Fs(19)449 3771 y(4.2)92 b(Options)29 +b(that)i(a\013ect)h(In)m(terpretation)e(of)h(the)f(Input)f(File)e +Fl(.)15 b(.)g(.)g(.)g(.)g(.)g(.)57 b Fs(19)449 3880 y(4.3)92 +b(Options)29 b(to)i(sp)s(ecify)e(the)i(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)29 b(for)h(\014ne)g(tuning)f(Details)h(in)f(the)i +(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)29 b(for)h(c)m(hanging)g(the)h +(Algorithms)e(emplo)m(y)m(ed)h(b)m(y)h Fn(gperf)21 b +Fl(.)14 b(.)50 b Fs(23)449 4209 y(4.6)92 b(Informativ)m(e)30 b(Output)d 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(20)150 3904 y Fr(5)135 b(Kno)l(wn)45 +(.)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(21)150 4174 y(6)135 b(Things)44 b(Still)i(Left)g(to)f +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(22)150 4443 y(7)135 b(Implemen)l(tation)47 -b(Details)g(of)e(GNU)g Fk(gperf)37 b Fa(.)19 b(.)g(.)h(.)f(.)84 -b Fr(23)150 4713 y(8)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(24)150 -4983 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(25)p eop +(.)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 %%Trailer end userdict /end-hook known{end-hook}if -- cgit v1.2.1