From 688065cbc948f74819c4c9b93f0e9b0d78ed4dfc Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Wed, 7 May 2003 13:37:10 +0000 Subject: [PATCH] Documentation regenerated for 3.0. --- doc/gperf.dvi | Bin 84964 -> 104136 bytes doc/gperf.pdf | Bin 0 -> 234439 bytes doc/gperf.ps | 3625 +++++++++++++++++++++++++++---------------------- 3 files changed, 2022 insertions(+), 1603 deletions(-) create mode 100644 doc/gperf.pdf diff --git a/doc/gperf.dvi b/doc/gperf.dvi index 82beb8d875fb951d7b49f505165d88412be94d77..1ef26a686e236f805a6ec1fd359ad7fcfc316040 100644 GIT binary patch delta 25940 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 delta 17408 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 diff --git a/doc/gperf.pdf b/doc/gperf.pdf new file mode 100644 index 0000000000000000000000000000000000000000..74d1225771f12b1ff9e673a8b0b4ff8757b58f20 GIT binary patch literal 234439 zcmbq*W0YiDwr<*XW~FW0wr$(CZJU+0ZB$y7wry3KugGAChE%CXzq3EPdY|Wg_@tJ>5DMHbST39=qIO5ZZ zS{pc<2%8w$8Jj@y@XK1ul;~(DtYqF{{BW_%s?-EP_PFHG}VG zYNl?Efh4lcgR|q?eus?n$9WYw!;&m1KC^nFNG=GWY*7cy$!&~qj!+g8>v1+YrNS_% zL3Z9MiBL3>)Fq2o4|Eg$&6x`h$WCjr)d3f~!-hz+bWER+(xc0IFixymjf2i? zs}8=fDncDSqo$wMNpIO%)ViD_UP>&iUS#sO_iuDZ$%2yua)aJf`9Kz6(nGC4RuPQe z7jG+Y>pl!2pZo)QJ5P+Dp>AOvXJWaxfFEz7$sTOXHuREwiXY8xrOJ&?hCm<*cZs&@ z1SN0a?(*>+Cbq_Z{m#EfzqbeKk3IS0or#4W>aQurf7m%?4|@}QI(Y*#6DT?%J6mTH zTW2TyKeqPwJ}R0x*||6xnK1q)RL=}+BKP}wzOEt*|m%v20CiPy^rZp6^Q$XPe(>`%z6F?(9 ztK%nruX5MEkPcN{Lu3F_4CMtl{2U)ljDv>B`p;Ger7HJV_@x;Kc)j00`)Tb_V#xz417=Q?CMxX)X5E?LE*Cxl!ye zVzF}4|LEz{6!}Ot-W_WCh@$QWUJV9y&dPggTh%(^XyTqsGlcgF$CT|{=ndMbWSa-mdJ_citUZx1CZT zbKA4W6HZAHtO_%Y^~aFdgB=}M68q|10dVYj(H8P*;`}H9aJGC5vLb|RD>Uxdxi_Af zvlUJMQ`oLu&U;8Dqa9iO$Yr*i)!7IANva1)X0H0|-vf2KOBKrmY7dqHJ z?w(Uk&yr3t|6dV_oQ0oZ&s{fi(C=o0VnGv{H%uPpVhtff7Zw!ytl@Z?r;ri2when5 zs<&qx0o^5$IH<|=N7DkJrB_7~$xVK&nL+h8Cl=~FtfE3fpiWXSI9$o4K0UG%c+k96} z$SW;QGED^nJn)W<`lsfg=V;rG|hi2SY!k8L@l>Sv0LyiRh+E#5A_# z8yZqHzDER^mMxpWuOUIBde>Cm1T;$_%R_B^cg7$KotA_${gPDW#C{q$JMXEgg1BXD z)1@|%CQic3s!3zo+j$bpjc!teipDSze7HPhC~7PmQXKhiBU;M)!QXE47Rwjo7IdDz zjtE2(v>0^m)p^w1v)e40-QQ@^ePpiFS!1_psn6kp|E{JV4xBU~YQ{x3F$pv!D!X#~ zLb}p9zLbMuxEas9XkYih1LHXhGrd+qqChrAFYo&4q#6qvAl!Fj;% zPY?X`&7My*I<$`pDm-hgm<Ttgpr(}SY6?c{01Y9?ADFu5HhFCNy zb6vB|1dpFLj;cPUaT@r~t#ya0F%$8f^up@pBChOlL9u>U^7RH%?7GyScq$M5Aq`0< zg=<)YB5==CmizI0YNbcQV%jS+GGu3C0?zYa6V{14^qc{sU`H8sXUnd4)Ry7K^N=X0 z~p>Y08+_O>={t3m>tc{ftX09@3uAoF|Bl}w#tAZsUP!WRa!(8D^7p(Xh zGjP48=Ep(F7N+J;0qJA~F02+lyC`5W**ca`sC8V3ijm~z{Gq8~BQ2{fhXH(BuCM|? zbMPNE7F?!^EMdSp?&|uXi0Lu)0HG*V<≺Nhie|D^W_OeQ(6dZIclC-`&pWhJng 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

A}3@W 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 ciHqC^}YtaL7R7W(3RmV@f*q^f4*BVvI6$$)8%5 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 IdYT;n3-^3#r2qf` literal 0 HcmV?d00001 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 -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 -(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 -(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 -eop +(\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(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 -(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 -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 -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 -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.) -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) -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 -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 -(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 -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 -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 -(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 -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 -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(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 -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 -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 -(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 -(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 -(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 -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 -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 -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 -(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 +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 2428 y(is)f(`)p +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 -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 -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 +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 1135 y(with)36 b(#de\014nes.)60 +(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 1245 y(the)31 b(same)f(\014le.)40 +(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 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 -(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 -(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 -(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 +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 3495 +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 -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 +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 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 +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 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: 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 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 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 +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 +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 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 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 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 +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 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 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 +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 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 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 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(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 +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 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 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 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(`)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 -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 -(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 -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 -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 -(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 -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 -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 +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 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 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 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 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 +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(-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 +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 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 +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 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 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 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 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 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 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 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 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 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 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 -(.)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 +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(.)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 +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(.)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(.) +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