| 1 | {-# OPTIONS_GHC -fglasgow-exts -fno-full-laziness -fno-cse -cpp -fallow-overlapping-instances #-} |
|---|
| 2 | |
|---|
| 3 | module Pugs.Parser.Charnames (nameToCode) where |
|---|
| 4 | |
|---|
| 5 | import Pugs.Internals |
|---|
| 6 | |
|---|
| 7 | #ifdef PUGS_HAVE_PERL5 |
|---|
| 8 | |
|---|
| 9 | import Pugs.Embed.Perl5 |
|---|
| 10 | |
|---|
| 11 | -- If we do have Perl 5, support for all unicode names via Perl5's charnames::vianame. |
|---|
| 12 | |
|---|
| 13 | nameToCode :: String -> Maybe Int |
|---|
| 14 | nameToCode name = inlinePerformIO $ do |
|---|
| 15 | sv <- evalPerl5 ("use utf8; use charnames ':full'; ord(qq[\\N{"++name++"}])") nullEnv 1 |
|---|
| 16 | svToVInt sv >>= \iv -> case iv of |
|---|
| 17 | 0 -> svToVStr sv >>= \pv -> case pv of |
|---|
| 18 | "0" -> return (Just 0) |
|---|
| 19 | _ -> return Nothing -- undef |
|---|
| 20 | x -> return (Just x) |
|---|
| 21 | |
|---|
| 22 | #else |
|---|
| 23 | |
|---|
| 24 | import qualified Data.HashTable as H |
|---|
| 25 | import Data.ByteString.Unsafe (unsafePackAddressLen) |
|---|
| 26 | |
|---|
| 27 | -- If we don't have Perl 5, support for names in the 0x00 - 0xFF range only. |
|---|
| 28 | |
|---|
| 29 | nameToCode :: String -> Maybe Int |
|---|
| 30 | nameToCode name = inlinePerformIO (H.lookup _NameToCode (cast name)) |
|---|
| 31 | |
|---|
| 32 | {-# NOINLINE _NameToCode #-} |
|---|
| 33 | _NameToCode :: H.HashTable ByteString Int |
|---|
| 34 | _NameToCode = unsafePerformIO $! hashList =<< mapM compute |
|---|
| 35 | [ (unsafePackAddressLen 4 "NULL"#, 0x0000) |
|---|
| 36 | , (unsafePackAddressLen 16 "START OF HEADING"#, 0x0001) |
|---|
| 37 | , (unsafePackAddressLen 13 "START OF TEXT"#, 0x0002) |
|---|
| 38 | , (unsafePackAddressLen 11 "END OF TEXT"#, 0x0003) |
|---|
| 39 | , (unsafePackAddressLen 19 "END OF TRANSMISSION"#, 0x0004) |
|---|
| 40 | , (unsafePackAddressLen 7 "ENQUIRY"#, 0x0005) |
|---|
| 41 | , (unsafePackAddressLen 11 "ACKNOWLEDGE"#, 0x0006) |
|---|
| 42 | , (unsafePackAddressLen 4 "BELL"#, 0x0007) |
|---|
| 43 | , (unsafePackAddressLen 9 "BACKSPACE"#, 0x0008) |
|---|
| 44 | , (unsafePackAddressLen 20 "CHARACTER TABULATION"#, 0x0009) |
|---|
| 45 | , (unsafePackAddressLen 14 "LINE FEED (LF)"#, 0x000A) |
|---|
| 46 | , (unsafePackAddressLen 9 "LINE FEED"#, 0x000A) |
|---|
| 47 | , (unsafePackAddressLen 15 "LINE TABULATION"#, 0x000B) |
|---|
| 48 | , (unsafePackAddressLen 14 "FORM FEED (FF)"#, 0x000C) |
|---|
| 49 | , (unsafePackAddressLen 9 "FORM FEED"#, 0x000C) |
|---|
| 50 | , (unsafePackAddressLen 20 "CARRIAGE RETURN (CR)"#, 0x000D) |
|---|
| 51 | , (unsafePackAddressLen 15 "CARRIAGE RETURN"#, 0x000D) |
|---|
| 52 | , (unsafePackAddressLen 9 "SHIFT OUT"#, 0x000E) |
|---|
| 53 | , (unsafePackAddressLen 8 "SHIFT IN"#, 0x000F) |
|---|
| 54 | , (unsafePackAddressLen 16 "DATA LINK ESCAPE"#, 0x0010) |
|---|
| 55 | , (unsafePackAddressLen 18 "DEVICE CONTROL ONE"#, 0x0011) |
|---|
| 56 | , (unsafePackAddressLen 18 "DEVICE CONTROL TWO"#, 0x0012) |
|---|
| 57 | , (unsafePackAddressLen 20 "DEVICE CONTROL THREE"#, 0x0013) |
|---|
| 58 | , (unsafePackAddressLen 19 "DEVICE CONTROL FOUR"#, 0x0014) |
|---|
| 59 | , (unsafePackAddressLen 20 "NEGATIVE ACKNOWLEDGE"#, 0x0015) |
|---|
| 60 | , (unsafePackAddressLen 16 "SYNCHRONOUS IDLE"#, 0x0016) |
|---|
| 61 | , (unsafePackAddressLen 25 "END OF TRANSMISSION BLOCK"#, 0x0017) |
|---|
| 62 | , (unsafePackAddressLen 6 "CANCEL"#, 0x0018) |
|---|
| 63 | , (unsafePackAddressLen 13 "END OF MEDIUM"#, 0x0019) |
|---|
| 64 | , (unsafePackAddressLen 10 "SUBSTITUTE"#, 0x001A) |
|---|
| 65 | , (unsafePackAddressLen 6 "ESCAPE"#, 0x001B) |
|---|
| 66 | , (unsafePackAddressLen 26 "INFORMATION SEPARATOR FOUR"#, 0x001C) |
|---|
| 67 | , (unsafePackAddressLen 27 "INFORMATION SEPARATOR THREE"#, 0x001D) |
|---|
| 68 | , (unsafePackAddressLen 25 "INFORMATION SEPARATOR TWO"#, 0x001E) |
|---|
| 69 | , (unsafePackAddressLen 25 "INFORMATION SEPARATOR ONE"#, 0x001F) |
|---|
| 70 | , (unsafePackAddressLen 5 "SPACE"#, 0x0020) |
|---|
| 71 | , (unsafePackAddressLen 16 "EXCLAMATION MARK"#, 0x0021) |
|---|
| 72 | , (unsafePackAddressLen 14 "QUOTATION MARK"#, 0x0022) |
|---|
| 73 | , (unsafePackAddressLen 11 "NUMBER SIGN"#, 0x0023) |
|---|
| 74 | , (unsafePackAddressLen 11 "DOLLAR SIGN"#, 0x0024) |
|---|
| 75 | , (unsafePackAddressLen 12 "PERCENT SIGN"#, 0x0025) |
|---|
| 76 | , (unsafePackAddressLen 9 "AMPERSAND"#, 0x0026) |
|---|
| 77 | , (unsafePackAddressLen 10 "APOSTROPHE"#, 0x0027) |
|---|
| 78 | , (unsafePackAddressLen 16 "LEFT PARENTHESIS"#, 0x0028) |
|---|
| 79 | , (unsafePackAddressLen 17 "RIGHT PARENTHESIS"#, 0x0029) |
|---|
| 80 | , (unsafePackAddressLen 8 "ASTERISK"#, 0x002A) |
|---|
| 81 | , (unsafePackAddressLen 9 "PLUS SIGN"#, 0x002B) |
|---|
| 82 | , (unsafePackAddressLen 5 "COMMA"#, 0x002C) |
|---|
| 83 | , (unsafePackAddressLen 12 "HYPHEN-MINUS"#, 0x002D) |
|---|
| 84 | , (unsafePackAddressLen 9 "FULL STOP"#, 0x002E) |
|---|
| 85 | , (unsafePackAddressLen 7 "SOLIDUS"#, 0x002F) |
|---|
| 86 | , (unsafePackAddressLen 10 "DIGIT ZERO"#, 0x0030) |
|---|
| 87 | , (unsafePackAddressLen 9 "DIGIT ONE"#, 0x0031) |
|---|
| 88 | , (unsafePackAddressLen 9 "DIGIT TWO"#, 0x0032) |
|---|
| 89 | , (unsafePackAddressLen 11 "DIGIT THREE"#, 0x0033) |
|---|
| 90 | , (unsafePackAddressLen 10 "DIGIT FOUR"#, 0x0034) |
|---|
| 91 | , (unsafePackAddressLen 10 "DIGIT FIVE"#, 0x0035) |
|---|
| 92 | , (unsafePackAddressLen 9 "DIGIT SIX"#, 0x0036) |
|---|
| 93 | , (unsafePackAddressLen 11 "DIGIT SEVEN"#, 0x0037) |
|---|
| 94 | , (unsafePackAddressLen 11 "DIGIT EIGHT"#, 0x0038) |
|---|
| 95 | , (unsafePackAddressLen 10 "DIGIT NINE"#, 0x0039) |
|---|
| 96 | , (unsafePackAddressLen 5 "COLON"#, 0x003A) |
|---|
| 97 | , (unsafePackAddressLen 9 "SEMICOLON"#, 0x003B) |
|---|
| 98 | , (unsafePackAddressLen 14 "LESS-THAN SIGN"#, 0x003C) |
|---|
| 99 | , (unsafePackAddressLen 11 "EQUALS SIGN"#, 0x003D) |
|---|
| 100 | , (unsafePackAddressLen 17 "GREATER-THAN SIGN"#, 0x003E) |
|---|
| 101 | , (unsafePackAddressLen 13 "QUESTION MARK"#, 0x003F) |
|---|
| 102 | , (unsafePackAddressLen 13 "COMMERCIAL AT"#, 0x0040) |
|---|
| 103 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER A"#, 0x0041) |
|---|
| 104 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER B"#, 0x0042) |
|---|
| 105 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER C"#, 0x0043) |
|---|
| 106 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER D"#, 0x0044) |
|---|
| 107 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER E"#, 0x0045) |
|---|
| 108 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER F"#, 0x0046) |
|---|
| 109 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER G"#, 0x0047) |
|---|
| 110 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER H"#, 0x0048) |
|---|
| 111 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER I"#, 0x0049) |
|---|
| 112 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER J"#, 0x004A) |
|---|
| 113 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER K"#, 0x004B) |
|---|
| 114 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER L"#, 0x004C) |
|---|
| 115 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER M"#, 0x004D) |
|---|
| 116 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER N"#, 0x004E) |
|---|
| 117 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER O"#, 0x004F) |
|---|
| 118 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER P"#, 0x0050) |
|---|
| 119 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER Q"#, 0x0051) |
|---|
| 120 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER R"#, 0x0052) |
|---|
| 121 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER S"#, 0x0053) |
|---|
| 122 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER T"#, 0x0054) |
|---|
| 123 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER U"#, 0x0055) |
|---|
| 124 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER V"#, 0x0056) |
|---|
| 125 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER W"#, 0x0057) |
|---|
| 126 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER X"#, 0x0058) |
|---|
| 127 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER Y"#, 0x0059) |
|---|
| 128 | , (unsafePackAddressLen 22 "LATIN CAPITAL LETTER Z"#, 0x005A) |
|---|
| 129 | , (unsafePackAddressLen 19 "LEFT SQUARE BRACKET"#, 0x005B) |
|---|
| 130 | , (unsafePackAddressLen 15 "REVERSE SOLIDUS"#, 0x005C) |
|---|
| 131 | , (unsafePackAddressLen 20 "RIGHT SQUARE BRACKET"#, 0x005D) |
|---|
| 132 | , (unsafePackAddressLen 17 "CIRCUMFLEX ACCENT"#, 0x005E) |
|---|
| 133 | , (unsafePackAddressLen 8 "LOW LINE"#, 0x005F) |
|---|
| 134 | , (unsafePackAddressLen 12 "GRAVE ACCENT"#, 0x0060) |
|---|
| 135 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER A"#, 0x0061) |
|---|
| 136 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER B"#, 0x0062) |
|---|
| 137 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER C"#, 0x0063) |
|---|
| 138 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER D"#, 0x0064) |
|---|
| 139 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER E"#, 0x0065) |
|---|
| 140 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER F"#, 0x0066) |
|---|
| 141 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER G"#, 0x0067) |
|---|
| 142 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER H"#, 0x0068) |
|---|
| 143 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER I"#, 0x0069) |
|---|
| 144 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER J"#, 0x006A) |
|---|
| 145 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER K"#, 0x006B) |
|---|
| 146 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER L"#, 0x006C) |
|---|
| 147 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER M"#, 0x006D) |
|---|
| 148 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER N"#, 0x006E) |
|---|
| 149 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER O"#, 0x006F) |
|---|
| 150 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER P"#, 0x0070) |
|---|
| 151 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER Q"#, 0x0071) |
|---|
| 152 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER R"#, 0x0072) |
|---|
| 153 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER S"#, 0x0073) |
|---|
| 154 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER T"#, 0x0074) |
|---|
| 155 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER U"#, 0x0075) |
|---|
| 156 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER V"#, 0x0076) |
|---|
| 157 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER W"#, 0x0077) |
|---|
| 158 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER X"#, 0x0078) |
|---|
| 159 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER Y"#, 0x0079) |
|---|
| 160 | , (unsafePackAddressLen 20 "LATIN SMALL LETTER Z"#, 0x007A) |
|---|
| 161 | , (unsafePackAddressLen 18 "LEFT CURLY BRACKET"#, 0x007B) |
|---|
| 162 | , (unsafePackAddressLen 13 "VERTICAL LINE"#, 0x007C) |
|---|
| 163 | , (unsafePackAddressLen 19 "RIGHT CURLY BRACKET"#, 0x007D) |
|---|
| 164 | , (unsafePackAddressLen 5 "TILDE"#, 0x007E) |
|---|
| 165 | , (unsafePackAddressLen 6 "DELETE"#, 0x007F) |
|---|
| 166 | , (unsafePackAddressLen 20 "BREAK PERMITTED HERE"#, 0x0082) |
|---|
| 167 | , (unsafePackAddressLen 13 "NO BREAK HERE"#, 0x0083) |
|---|
| 168 | , (unsafePackAddressLen 15 "NEXT LINE (NEL)"#, 0x0085) |
|---|
| 169 | , (unsafePackAddressLen 9 "NEXT LINE"#, 0x0085) |
|---|
| 170 | , (unsafePackAddressLen 22 "START OF SELECTED AREA"#, 0x0086) |
|---|
| 171 | , (unsafePackAddressLen 20 "END OF SELECTED AREA"#, 0x0087) |
|---|
| 172 | , (unsafePackAddressLen 24 "CHARACTER TABULATION SET"#, 0x0088) |
|---|
| 173 | , (unsafePackAddressLen 39 "CHARACTER TABULATION WITH JUSTIFICATION"#, 0x0089) |
|---|
| 174 | , (unsafePackAddressLen 19 "LINE TABULATION SET"#, 0x008A) |
|---|
| 175 | , (unsafePackAddressLen 20 "PARTIAL LINE FORWARD"#, 0x008B) |
|---|
| 176 | , (unsafePackAddressLen 21 "PARTIAL LINE BACKWARD"#, 0x008C) |
|---|
| 177 | , (unsafePackAddressLen 17 "REVERSE LINE FEED"#, 0x008D) |
|---|
| 178 | , (unsafePackAddressLen 16 "SINGLE SHIFT TWO"#, 0x008E) |
|---|
| 179 | , (unsafePackAddressLen 18 "SINGLE SHIFT THREE"#, 0x008F) |
|---|
| 180 | , (unsafePackAddressLen 21 "DEVICE CONTROL STRING"#, 0x0090) |
|---|
| 181 | , (unsafePackAddressLen 15 "PRIVATE USE ONE"#, 0x0091) |
|---|
| 182 | , (unsafePackAddressLen 15 "PRIVATE USE TWO"#, 0x0092) |
|---|
| 183 | , (unsafePackAddressLen 18 "SET TRANSMIT STATE"#, 0x0093) |
|---|
| 184 | , (unsafePackAddressLen 16 "CANCEL CHARACTER"#, 0x0094) |
|---|
| 185 | , (unsafePackAddressLen 15 "MESSAGE WAITING"#, 0x0095) |
|---|
| 186 | , (unsafePackAddressLen 21 "START OF GUARDED AREA"#, 0x0096) |
|---|
| 187 | , (unsafePackAddressLen 19 "END OF GUARDED AREA"#, 0x0097) |
|---|
| 188 | , (unsafePackAddressLen 15 "START OF STRING"#, 0x0098) |
|---|
| 189 | , (unsafePackAddressLen 27 "SINGLE CHARACTER INTRODUCER"#, 0x009A) |
|---|
| 190 | , (unsafePackAddressLen 27 "CONTROL SEQUENCE INTRODUCER"#, 0x009B) |
|---|
| 191 | , (unsafePackAddressLen 17 "STRING TERMINATOR"#, 0x009C) |
|---|
| 192 | , (unsafePackAddressLen 24 "OPERATING SYSTEM COMMAND"#, 0x009D) |
|---|
| 193 | , (unsafePackAddressLen 15 "PRIVACY MESSAGE"#, 0x009E) |
|---|
| 194 | , (unsafePackAddressLen 27 "APPLICATION PROGRAM COMMAND"#, 0x009F) |
|---|
| 195 | , (unsafePackAddressLen 14 "NO-BREAK SPACE"#, 0x00A0) |
|---|
| 196 | , (unsafePackAddressLen 25 "INVERTED EXCLAMATION MARK"#, 0x00A1) |
|---|
| 197 | , (unsafePackAddressLen 9 "CENT SIGN"#, 0x00A2) |
|---|
| 198 | , (unsafePackAddressLen 10 "POUND SIGN"#, 0x00A3) |
|---|
| 199 | , (unsafePackAddressLen 13 "CURRENCY SIGN"#, 0x00A4) |
|---|
| 200 | , (unsafePackAddressLen 8 "YEN SIGN"#, 0x00A5) |
|---|
| 201 | , (unsafePackAddressLen 10 "BROKEN BAR"#, 0x00A6) |
|---|
| 202 | , (unsafePackAddressLen 12 "SECTION SIGN"#, 0x00A7) |
|---|
| 203 | , (unsafePackAddressLen 9 "DIAERESIS"#, 0x00A8) |
|---|
| 204 | , (unsafePackAddressLen 14 "COPYRIGHT SIGN"#, 0x00A9) |
|---|
| 205 | , (unsafePackAddressLen 26 "FEMININE ORDINAL INDICATOR"#, 0x00AA) |
|---|
| 206 | , (unsafePackAddressLen 41 "LEFT-POINTING DOUBLE ANGLE QUOTATION MARK"#, 0x00AB) |
|---|
| 207 | , (unsafePackAddressLen 8 "NOT SIGN"#, 0x00AC) |
|---|
| 208 | , (unsafePackAddressLen 11 "SOFT HYPHEN"#, 0x00AD) |
|---|
| 209 | , (unsafePackAddressLen 15 "REGISTERED SIGN"#, 0x00AE) |
|---|
| 210 | , (unsafePackAddressLen 6 "MACRON"#, 0x00AF) |
|---|
| 211 | , (unsafePackAddressLen 11 "DEGREE SIGN"#, 0x00B0) |
|---|
| 212 | , (unsafePackAddressLen 15 "PLUS-MINUS SIGN"#, 0x00B1) |
|---|
| 213 | , (unsafePackAddressLen 15 "SUPERSCRIPT TWO"#, 0x00B2) |
|---|
| 214 | , (unsafePackAddressLen 17 "SUPERSCRIPT THREE"#, 0x00B3) |
|---|
| 215 | , (unsafePackAddressLen 12 "ACUTE ACCENT"#, 0x00B4) |
|---|
| 216 | , (unsafePackAddressLen 10 "MICRO SIGN"#, 0x00B5) |
|---|
| 217 | , (unsafePackAddressLen 12 "PILCROW SIGN"#, 0x00B6) |
|---|
| 218 | , (unsafePackAddressLen 10 "MIDDLE DOT"#, 0x00B7) |
|---|
| 219 | , (unsafePackAddressLen 7 "CEDILLA"#, 0x00B8) |
|---|
| 220 | , (unsafePackAddressLen 15 "SUPERSCRIPT ONE"#, 0x00B9) |
|---|
| 221 | , (unsafePackAddressLen 27 "MASCULINE ORDINAL INDICATOR"#, 0x00BA) |
|---|
| 222 | , (unsafePackAddressLen 42 "RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK"#, 0x00BB) |
|---|
| 223 | , (unsafePackAddressLen 27 "VULGAR FRACTION ONE QUARTER"#, 0x00BC) |
|---|
| 224 | , (unsafePackAddressLen 24 "VULGAR FRACTION ONE HALF"#, 0x00BD) |
|---|
| 225 | , (unsafePackAddressLen 30 "VULGAR FRACTION THREE QUARTERS"#, 0x00BE) |
|---|
| 226 | , (unsafePackAddressLen 22 "INVERTED QUESTION MARK"#, 0x00BF) |
|---|
| 227 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER A WITH GRAVE"#, 0x00C0) |
|---|
| 228 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER A WITH ACUTE"#, 0x00C1) |
|---|
| 229 | , (unsafePackAddressLen 38 "LATIN CAPITAL LETTER A WITH CIRCUMFLEX"#, 0x00C2) |
|---|
| 230 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER A WITH TILDE"#, 0x00C3) |
|---|
| 231 | , (unsafePackAddressLen 37 "LATIN CAPITAL LETTER A WITH DIAERESIS"#, 0x00C4) |
|---|
| 232 | , (unsafePackAddressLen 38 "LATIN CAPITAL LETTER A WITH RING ABOVE"#, 0x00C5) |
|---|
| 233 | , (unsafePackAddressLen 23 "LATIN CAPITAL LETTER AE"#, 0x00C6) |
|---|
| 234 | , (unsafePackAddressLen 35 "LATIN CAPITAL LETTER C WITH CEDILLA"#, 0x00C7) |
|---|
| 235 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER E WITH GRAVE"#, 0x00C8) |
|---|
| 236 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER E WITH ACUTE"#, 0x00C9) |
|---|
| 237 | , (unsafePackAddressLen 38 "LATIN CAPITAL LETTER E WITH CIRCUMFLEX"#, 0x00CA) |
|---|
| 238 | , (unsafePackAddressLen 37 "LATIN CAPITAL LETTER E WITH DIAERESIS"#, 0x00CB) |
|---|
| 239 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER I WITH GRAVE"#, 0x00CC) |
|---|
| 240 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER I WITH ACUTE"#, 0x00CD) |
|---|
| 241 | , (unsafePackAddressLen 38 "LATIN CAPITAL LETTER I WITH CIRCUMFLEX"#, 0x00CE) |
|---|
| 242 | , (unsafePackAddressLen 37 "LATIN CAPITAL LETTER I WITH DIAERESIS"#, 0x00CF) |
|---|
| 243 | , (unsafePackAddressLen 24 "LATIN CAPITAL LETTER ETH"#, 0x00D0) |
|---|
| 244 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER N WITH TILDE"#, 0x00D1) |
|---|
| 245 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER O WITH GRAVE"#, 0x00D2) |
|---|
| 246 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER O WITH ACUTE"#, 0x00D3) |
|---|
| 247 | , (unsafePackAddressLen 38 "LATIN CAPITAL LETTER O WITH CIRCUMFLEX"#, 0x00D4) |
|---|
| 248 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER O WITH TILDE"#, 0x00D5) |
|---|
| 249 | , (unsafePackAddressLen 37 "LATIN CAPITAL LETTER O WITH DIAERESIS"#, 0x00D6) |
|---|
| 250 | , (unsafePackAddressLen 19 "MULTIPLICATION SIGN"#, 0x00D7) |
|---|
| 251 | , (unsafePackAddressLen 34 "LATIN CAPITAL LETTER O WITH STROKE"#, 0x00D8) |
|---|
| 252 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER U WITH GRAVE"#, 0x00D9) |
|---|
| 253 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER U WITH ACUTE"#, 0x00DA) |
|---|
| 254 | , (unsafePackAddressLen 38 "LATIN CAPITAL LETTER U WITH CIRCUMFLEX"#, 0x00DB) |
|---|
| 255 | , (unsafePackAddressLen 37 "LATIN CAPITAL LETTER U WITH DIAERESIS"#, 0x00DC) |
|---|
| 256 | , (unsafePackAddressLen 33 "LATIN CAPITAL LETTER Y WITH ACUTE"#, 0x00DD) |
|---|
| 257 | , (unsafePackAddressLen 26 "LATIN CAPITAL LETTER THORN"#, 0x00DE) |
|---|
| 258 | , (unsafePackAddressLen 26 "LATIN SMALL LETTER SHARP S"#, 0x00DF) |
|---|
| 259 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER A WITH GRAVE"#, 0x00E0) |
|---|
| 260 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER A WITH ACUTE"#, 0x00E1) |
|---|
| 261 | , (unsafePackAddressLen 36 "LATIN SMALL LETTER A WITH CIRCUMFLEX"#, 0x00E2) |
|---|
| 262 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER A WITH TILDE"#, 0x00E3) |
|---|
| 263 | , (unsafePackAddressLen 35 "LATIN SMALL LETTER A WITH DIAERESIS"#, 0x00E4) |
|---|
| 264 | , (unsafePackAddressLen 36 "LATIN SMALL LETTER A WITH RING ABOVE"#, 0x00E5) |
|---|
| 265 | , (unsafePackAddressLen 21 "LATIN SMALL LETTER AE"#, 0x00E6) |
|---|
| 266 | , (unsafePackAddressLen 33 "LATIN SMALL LETTER C WITH CEDILLA"#, 0x00E7) |
|---|
| 267 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER E WITH GRAVE"#, 0x00E8) |
|---|
| 268 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER E WITH ACUTE"#, 0x00E9) |
|---|
| 269 | , (unsafePackAddressLen 36 "LATIN SMALL LETTER E WITH CIRCUMFLEX"#, 0x00EA) |
|---|
| 270 | , (unsafePackAddressLen 35 "LATIN SMALL LETTER E WITH DIAERESIS"#, 0x00EB) |
|---|
| 271 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER I WITH GRAVE"#, 0x00EC) |
|---|
| 272 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER I WITH ACUTE"#, 0x00ED) |
|---|
| 273 | , (unsafePackAddressLen 36 "LATIN SMALL LETTER I WITH CIRCUMFLEX"#, 0x00EE) |
|---|
| 274 | , (unsafePackAddressLen 35 "LATIN SMALL LETTER I WITH DIAERESIS"#, 0x00EF) |
|---|
| 275 | , (unsafePackAddressLen 22 "LATIN SMALL LETTER ETH"#, 0x00F0) |
|---|
| 276 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER N WITH TILDE"#, 0x00F1) |
|---|
| 277 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER O WITH GRAVE"#, 0x00F2) |
|---|
| 278 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER O WITH ACUTE"#, 0x00F3) |
|---|
| 279 | , (unsafePackAddressLen 36 "LATIN SMALL LETTER O WITH CIRCUMFLEX"#, 0x00F4) |
|---|
| 280 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER O WITH TILDE"#, 0x00F5) |
|---|
| 281 | , (unsafePackAddressLen 35 "LATIN SMALL LETTER O WITH DIAERESIS"#, 0x00F6) |
|---|
| 282 | , (unsafePackAddressLen 13 "DIVISION SIGN"#, 0x00F7) |
|---|
| 283 | , (unsafePackAddressLen 32 "LATIN SMALL LETTER O WITH STROKE"#, 0x00F8) |
|---|
| 284 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER U WITH GRAVE"#, 0x00F9) |
|---|
| 285 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER U WITH ACUTE"#, 0x00FA) |
|---|
| 286 | , (unsafePackAddressLen 36 "LATIN SMALL LETTER U WITH CIRCUMFLEX"#, 0x00FB) |
|---|
| 287 | , (unsafePackAddressLen 35 "LATIN SMALL LETTER U WITH DIAERESIS"#, 0x00FC) |
|---|
| 288 | , (unsafePackAddressLen 31 "LATIN SMALL LETTER Y WITH ACUTE"#, 0x00FD) |
|---|
| 289 | , (unsafePackAddressLen 24 "LATIN SMALL LETTER THORN"#, 0x00FE) |
|---|
| 290 | , (unsafePackAddressLen 35 "LATIN SMALL LETTER Y WITH DIAERESIS"#, 0x00FF) |
|---|
| 291 | ] |
|---|
| 292 | where |
|---|
| 293 | hashList :: [(ByteString, a)] -> IO (H.HashTable ByteString a) |
|---|
| 294 | hashList = H.fromList hashByteString |
|---|
| 295 | compute (f, y) = f >>= \x -> return (x, y) |
|---|
| 296 | |
|---|
| 297 | #endif |
|---|