{- This file has been auto-generated. Do not edit it. -}
{-# LANGUAGE MagicHash,DeriveDataTypeable #-}
{- |  /Notes on Mac OS Roman:/
     
        This is a legacy Mac OS encoding; in the Mac OS X Carbon and Cocoa
        environments, it is only supported directly in programming
        interfaces for QuickDraw Text, the Script Manager, and related
        Text Utilities. For other purposes it is supported via transcoding
        to and from Unicode.
     
        This character set is used for at least the following Mac OS
        localizations: U.S., British, Canadian French, French, Swiss
        French, German, Swiss German, Italian, Swiss Italian, Dutch,
        Swedish, Norwegian, Danish, Finnish, Spanish, Catalan,
        Portuguese, Brazilian, and the default International system.
     
        Variants of Mac OS Roman are used for Croatian, Icelandic,
        Turkish, Romanian, and other encodings. Separate mapping tables
        are available for these encodings.
     
        Before Mac OS 8.5, code point 0xDB was CURRENCY SIGN, and was
        mapped to U+00A4. In Mac OS 8.5 and later versions, code point
        0xDB is changed to EURO SIGN and maps to U+20AC; the standard
        Apple fonts are updated for Mac OS 8.5 to reflect this. There is
        a "currency sign" variant of the Mac OS Roman encoding that still
        maps 0xDB to U+00A4; this can be used for older fonts.
     
        Before Mac OS 8.5, the ROM bitmap versions of the fonts Chicago,
        New York, Geneva, and Monaco did not implement the full Mac OS
        Roman character set; they only supported character codes up to
        0xD8. The TrueType versions of these fonts have always implemented
        the full character set, as with the bitmap and TrueType versions
        of the other standard Roman fonts.
     
        In all Mac OS encodings, fonts such as Chicago which are used
        as "system" fonts (for menus, dialogs, etc.) have four glyphs
        at code points 0x11-0x14 for transient use by the Menu Manager.
        These glyphs are not intended as characters for use in normal
        text, and the associated code points are not generally
        interpreted as associated with these glyphs; they are usually
        interpreted (if at all) as the control codes DC1-DC4.
     
      /Unicode mapping issues and notes:/
     
        The following corporate zone Unicode character is used in this
        mapping:
     
          0xF8FF  Apple logo
     
        NOTE: The graphic image associated with the Apple logo character
        is not authorized for use without permission of Apple, and
        unauthorized use might constitute trademark infringement.
     
      /Details of mapping changes in each version:/
     
        Changes from version n08 to version b02:
     
        * Encoding changed for Mac OS 8.5; change mapping of 0xDB from
        CURRENCY SIGN (U+00A4) to EURO SIGN (U+20AC).
     
        Changes from version n03 to version n04:
     
        * Change mapping of 0xBD from U+2126 to its canonical
          decomposition, U+03A9.

0	 = � (0)

1	 =  (1)

2	 =  (2)

3	 =  (3)

4	 =  (4)

5	 =  (5)

6	 =  (6)

7	 =  (7)

8	 =  (8)

9	 = 	 (9)

10	 = 
 (10)

11	 =  (11)

12	 =  (12)

13	 = 
 (13)

14	 =  (14)

15	 =  (15)

16	 =  (16)

17	 =  (17)

18	 =  (18)

19	 =  (19)

20	 =  (20)

21	 =  (21)

22	 =  (22)

23	 =  (23)

24	 =  (24)

25	 =  (25)

26	 =  (26)

27	 =  (27)

28	 =  (28)

29	 =  (29)

30	 =  (30)

31	 =  (31)

32	 =   (32)

33	 = ! (33)

34	 = " (34)

35	 = # (35)

36	 = $ (36)

37	 = % (37)

38	 = & (38)

39	 = ' (39)

40	 = ( (40)

41	 = ) (41)

42	 = * (42)

43	 = + (43)

44	 = , (44)

45	 = - (45)

46	 = . (46)

47	 = / (47)

48	 = 0 (48)

49	 = 1 (49)

50	 = 2 (50)

51	 = 3 (51)

52	 = 4 (52)

53	 = 5 (53)

54	 = 6 (54)

55	 = 7 (55)

56	 = 8 (56)

57	 = 9 (57)

58	 = : (58)

59	 = &#59; (59)

60	 = < (60)

61	 = = (61)

62	 = > (62)

63	 = ? (63)

64	 = @ (64)

65	 = A (65)

66	 = B (66)

67	 = C (67)

68	 = D (68)

69	 = E (69)

70	 = F (70)

71	 = G (71)

72	 = H (72)

73	 = I (73)

74	 = J (74)

75	 = K (75)

76	 = L (76)

77	 = M (77)

78	 = N (78)

79	 = O (79)

80	 = P (80)

81	 = Q (81)

82	 = R (82)

83	 = S (83)

84	 = T (84)

85	 = U (85)

86	 = V (86)

87	 = W (87)

88	 = X (88)

89	 = Y (89)

90	 = Z (90)

91	 = [ (91)

92	 = \ (92)

93	 = ] (93)

94	 = ^ (94)

95	 = _ (95)

96	 = ` (96)

97	 = a (97)

98	 = b (98)

99	 = c (99)

100	 = d (100)

101	 = e (101)

102	 = f (102)

103	 = g (103)

104	 = h (104)

105	 = i (105)

106	 = j (106)

107	 = k (107)

108	 = l (108)

109	 = m (109)

110	 = n (110)

111	 = o (111)

112	 = p (112)

113	 = q (113)

114	 = r (114)

115	 = s (115)

116	 = t (116)

117	 = u (117)

118	 = v (118)

119	 = w (119)

120	 = x (120)

121	 = y (121)

122	 = z (122)

123	 = { (123)

124	 = | (124)

125	 = } (125)

126	 = ~ (126)

127	 =  (127)

128	 = Ä (196)

129	 = Å (197)

130	 = Ç (199)

131	 = É (201)

132	 = Ñ (209)

133	 = Ö (214)

134	 = Ü (220)

135	 = á (225)

136	 = à (224)

137	 = â (226)

138	 = ä (228)

139	 = ã (227)

140	 = å (229)

141	 = ç (231)

142	 = é (233)

143	 = è (232)

144	 = ê (234)

145	 = ë (235)

146	 = í (237)

147	 = ì (236)

148	 = î (238)

149	 = ï (239)

150	 = ñ (241)

151	 = ó (243)

152	 = ò (242)

153	 = ô (244)

154	 = ö (246)

155	 = õ (245)

156	 = ú (250)

157	 = ù (249)

158	 = û (251)

159	 = ü (252)

160	 = † (8224)

161	 = ° (176)

162	 = ¢ (162)

163	 = £ (163)

164	 = § (167)

165	 = • (8226)

166	 = ¶ (182)

167	 = ß (223)

168	 = ® (174)

169	 = © (169)

170	 = ™ (8482)

171	 = ´ (180)

172	 = ¨ (168)

173	 = ≠ (8800)

174	 = Æ (198)

175	 = Ø (216)

176	 = ∞ (8734)

177	 = ± (177)

178	 = ≤ (8804)

179	 = ≥ (8805)

180	 = ¥ (165)

181	 = µ (181)

182	 = ∂ (8706)

183	 = ∑ (8721)

184	 = ∏ (8719)

185	 = π (960)

186	 = ∫ (8747)

187	 = ª (170)

188	 = º (186)

189	 = Ω (937)

190	 = æ (230)

191	 = ø (248)

192	 = ¿ (191)

193	 = ¡ (161)

194	 = ¬ (172)

195	 = √ (8730)

196	 = ƒ (402)

197	 = ≈ (8776)

198	 = ∆ (8710)

199	 = « (171)

200	 = » (187)

201	 = … (8230)

202	 =   (160)

203	 = À (192)

204	 = Ã (195)

205	 = Õ (213)

206	 = Œ (338)

207	 = œ (339)

208	 = – (8211)

209	 = — (8212)

210	 = “ (8220)

211	 = ” (8221)

212	 = ‘ (8216)

213	 = ’ (8217)

214	 = ÷ (247)

215	 = ◊ (9674)

216	 = ÿ (255)

217	 = Ÿ (376)

218	 = ⁄ (8260)

219	 = € (8364)

220	 = ‹ (8249)

221	 = › (8250)

222	 = fi (64257)

223	 = fl (64258)

224	 = ‡ (8225)

225	 = · (183)

226	 = ‚ (8218)

227	 = „ (8222)

228	 = ‰ (8240)

229	 = Â (194)

230	 = Ê (202)

231	 = Á (193)

232	 = Ë (203)

233	 = È (200)

234	 = Í (205)

235	 = Î (206)

236	 = Ï (207)

237	 = Ì (204)

238	 = Ó (211)

239	 = Ô (212)

240	 =  (63743)

241	 = Ò (210)

242	 = Ú (218)

243	 = Û (219)

244	 = Ù (217)

245	 = ı (305)

246	 = ˆ (710)

247	 = ˜ (732)

248	 = ¯ (175)

249	 = ˘ (728)

250	 = ˙ (729)

251	 = ˚ (730)

252	 = ¸ (184)

253	 = ˝ (733)

254	 = ˛ (731)

255	 = ˇ (711)
 -}
module Data.Encoding.MacOSRoman(MacOSRoman(..)) where

import Data.Encoding.Base
import Data.Encoding.ByteSource
import Data.Encoding.ByteSink
import Data.Encoding.Exception
import Data.CharMap
import Data.Array.Static
import Data.Map.Static
import Control.Throws
import Prelude hiding (lookup)
import Data.Word

import Data.Typeable

data MacOSRoman = MacOSRoman
  deriving (Show,Eq,Typeable)

decoding_array_MacOSRoman = StaticArray (0) (255) "\0\0\0\0\1\0\0\0\2\0\0\0\3\0\0\0\4\0\0\0\5\0\0\0\6\0\0\0\7\0\0\0\8\0\0\0\9\0\0\0\10\0\0\0\11\0\0\0\12\0\0\0\13\0\0\0\14\0\0\0\15\0\0\0\16\0\0\0\17\0\0\0\18\0\0\0\19\0\0\0\20\0\0\0\21\0\0\0\22\0\0\0\23\0\0\0\24\0\0\0\25\0\0\0\26\0\0\0\27\0\0\0\28\0\0\0\29\0\0\0\30\0\0\0\31\0\0\0\32\0\0\0\33\0\0\0\34\0\0\0\35\0\0\0\36\0\0\0\37\0\0\0\38\0\0\0\39\0\0\0\40\0\0\0\41\0\0\0\42\0\0\0\43\0\0\0\44\0\0\0\45\0\0\0\46\0\0\0\47\0\0\0\48\0\0\0\49\0\0\0\50\0\0\0\51\0\0\0\52\0\0\0\53\0\0\0\54\0\0\0\55\0\0\0\56\0\0\0\57\0\0\0\58\0\0\0\59\0\0\0\60\0\0\0\61\0\0\0\62\0\0\0\63\0\0\0\64\0\0\0\65\0\0\0\66\0\0\0\67\0\0\0\68\0\0\0\69\0\0\0\70\0\0\0\71\0\0\0\72\0\0\0\73\0\0\0\74\0\0\0\75\0\0\0\76\0\0\0\77\0\0\0\78\0\0\0\79\0\0\0\80\0\0\0\81\0\0\0\82\0\0\0\83\0\0\0\84\0\0\0\85\0\0\0\86\0\0\0\87\0\0\0\88\0\0\0\89\0\0\0\90\0\0\0\91\0\0\0\92\0\0\0\93\0\0\0\94\0\0\0\95\0\0\0\96\0\0\0\97\0\0\0\98\0\0\0\99\0\0\0\100\0\0\0\101\0\0\0\102\0\0\0\103\0\0\0\104\0\0\0\105\0\0\0\106\0\0\0\107\0\0\0\108\0\0\0\109\0\0\0\110\0\0\0\111\0\0\0\112\0\0\0\113\0\0\0\114\0\0\0\115\0\0\0\116\0\0\0\117\0\0\0\118\0\0\0\119\0\0\0\120\0\0\0\121\0\0\0\122\0\0\0\123\0\0\0\124\0\0\0\125\0\0\0\126\0\0\0\127\0\0\0\196\0\0\0\197\0\0\0\199\0\0\0\201\0\0\0\209\0\0\0\214\0\0\0\220\0\0\0\225\0\0\0\224\0\0\0\226\0\0\0\228\0\0\0\227\0\0\0\229\0\0\0\231\0\0\0\233\0\0\0\232\0\0\0\234\0\0\0\235\0\0\0\237\0\0\0\236\0\0\0\238\0\0\0\239\0\0\0\241\0\0\0\243\0\0\0\242\0\0\0\244\0\0\0\246\0\0\0\245\0\0\0\250\0\0\0\249\0\0\0\251\0\0\0\252\0\0\0\32\32\0\0\176\0\0\0\162\0\0\0\163\0\0\0\167\0\0\0\34\32\0\0\182\0\0\0\223\0\0\0\174\0\0\0\169\0\0\0\34\33\0\0\180\0\0\0\168\0\0\0\96\34\0\0\198\0\0\0\216\0\0\0\30\34\0\0\177\0\0\0\100\34\0\0\101\34\0\0\165\0\0\0\181\0\0\0\2\34\0\0\17\34\0\0\15\34\0\0\192\3\0\0\43\34\0\0\170\0\0\0\186\0\0\0\169\3\0\0\230\0\0\0\248\0\0\0\191\0\0\0\161\0\0\0\172\0\0\0\26\34\0\0\146\1\0\0\72\34\0\0\6\34\0\0\171\0\0\0\187\0\0\0\38\32\0\0\160\0\0\0\192\0\0\0\195\0\0\0\213\0\0\0\82\1\0\0\83\1\0\0\19\32\0\0\20\32\0\0\28\32\0\0\29\32\0\0\24\32\0\0\25\32\0\0\247\0\0\0\202\37\0\0\255\0\0\0\120\1\0\0\68\32\0\0\172\32\0\0\57\32\0\0\58\32\0\0\1\251\0\0\2\251\0\0\33\32\0\0\183\0\0\0\26\32\0\0\30\32\0\0\48\32\0\0\194\0\0\0\202\0\0\0\193\0\0\0\203\0\0\0\200\0\0\0\205\0\0\0\206\0\0\0\207\0\0\0\204\0\0\0\211\0\0\0\212\0\0\0\255\248\0\0\210\0\0\0\218\0\0\0\219\0\0\0\217\0\0\0\49\1\0\0\198\2\0\0\220\2\0\0\175\0\0\0\216\2\0\0\217\2\0\0\218\2\0\0\184\0\0\0\221\2\0\0\219\2\0\0\199\2\0\0"#

encoding_map_MacOSRoman :: CharMap
encoding_map_MacOSRoman = LeafMap1 (StaticMap (StaticArray (1) (256) "\160\0\0\0\64\0\0\0\237\0\0\0\32\0\0\0\96\0\0\0\201\0\0\0\20\32\0\0\16\0\0\0\48\0\0\0\80\0\0\0\112\0\0\0\181\0\0\0\219\0\0\0\49\1\0\0\34\33\0\0\8\0\0\0\24\0\0\0\40\0\0\0\56\0\0\0\72\0\0\0\88\0\0\0\104\0\0\0\120\0\0\0\170\0\0\0\193\0\0\0\210\0\0\0\229\0\0\0\246\0\0\0\217\2\0\0\33\32\0\0\72\34\0\0\4\0\0\0\12\0\0\0\20\0\0\0\28\0\0\0\36\0\0\0\44\0\0\0\52\0\0\0\60\0\0\0\68\0\0\0\76\0\0\0\84\0\0\0\92\0\0\0\100\0\0\0\108\0\0\0\116\0\0\0\124\0\0\0\165\0\0\0\175\0\0\0\186\0\0\0\197\0\0\0\205\0\0\0\214\0\0\0\225\0\0\0\233\0\0\0\242\0\0\0\250\0\0\0\146\1\0\0\221\2\0\0\28\32\0\0\57\32\0\0\17\34\0\0\202\37\0\0\2\0\0\0\6\0\0\0\10\0\0\0\14\0\0\0\18\0\0\0\22\0\0\0\26\0\0\0\30\0\0\0\34\0\0\0\38\0\0\0\42\0\0\0\46\0\0\0\50\0\0\0\54\0\0\0\58\0\0\0\62\0\0\0\66\0\0\0\70\0\0\0\74\0\0\0\78\0\0\0\82\0\0\0\86\0\0\0\90\0\0\0\94\0\0\0\98\0\0\0\102\0\0\0\106\0\0\0\110\0\0\0\114\0\0\0\118\0\0\0\122\0\0\0\126\0\0\0\162\0\0\0\168\0\0\0\172\0\0\0\177\0\0\0\183\0\0\0\191\0\0\0\195\0\0\0\199\0\0\0\203\0\0\0\207\0\0\0\212\0\0\0\217\0\0\0\223\0\0\0\227\0\0\0\231\0\0\0\235\0\0\0\239\0\0\0\244\0\0\0\248\0\0\0\252\0\0\0\83\1\0\0\199\2\0\0\219\2\0\0\192\3\0\0\25\32\0\0\30\32\0\0\38\32\0\0\68\32\0\0\6\34\0\0\30\34\0\0\100\34\0\0\1\251\0\0\1\0\0\0\3\0\0\0\5\0\0\0\7\0\0\0\9\0\0\0\11\0\0\0\13\0\0\0\15\0\0\0\17\0\0\0\19\0\0\0\21\0\0\0\23\0\0\0\25\0\0\0\27\0\0\0\29\0\0\0\31\0\0\0\33\0\0\0\35\0\0\0\37\0\0\0\39\0\0\0\41\0\0\0\43\0\0\0\45\0\0\0\47\0\0\0\49\0\0\0\51\0\0\0\53\0\0\0\55\0\0\0\57\0\0\0\59\0\0\0\61\0\0\0\63\0\0\0\65\0\0\0\67\0\0\0\69\0\0\0\71\0\0\0\73\0\0\0\75\0\0\0\77\0\0\0\79\0\0\0\81\0\0\0\83\0\0\0\85\0\0\0\87\0\0\0\89\0\0\0\91\0\0\0\93\0\0\0\95\0\0\0\97\0\0\0\99\0\0\0\101\0\0\0\103\0\0\0\105\0\0\0\107\0\0\0\109\0\0\0\111\0\0\0\113\0\0\0\115\0\0\0\117\0\0\0\119\0\0\0\121\0\0\0\123\0\0\0\125\0\0\0\127\0\0\0\161\0\0\0\163\0\0\0\167\0\0\0\169\0\0\0\171\0\0\0\174\0\0\0\176\0\0\0\180\0\0\0\182\0\0\0\184\0\0\0\187\0\0\0\192\0\0\0\194\0\0\0\196\0\0\0\198\0\0\0\200\0\0\0\202\0\0\0\204\0\0\0\206\0\0\0\209\0\0\0\211\0\0\0\213\0\0\0\216\0\0\0\218\0\0\0\220\0\0\0\224\0\0\0\226\0\0\0\228\0\0\0\230\0\0\0\232\0\0\0\234\0\0\0\236\0\0\0\238\0\0\0\241\0\0\0\243\0\0\0\245\0\0\0\247\0\0\0\249\0\0\0\251\0\0\0\255\0\0\0\82\1\0\0\120\1\0\0\198\2\0\0\216\2\0\0\218\2\0\0\220\2\0\0\169\3\0\0\19\32\0\0\24\32\0\0\26\32\0\0\29\32\0\0\32\32\0\0\34\32\0\0\48\32\0\0\58\32\0\0\172\32\0\0\2\34\0\0\15\34\0\0\26\34\0\0\43\34\0\0\96\34\0\0\101\34\0\0\255\248\0\0\2\251\0\0\0\0\0\0"#) (StaticArray (1) (256) "\202\64\146\32\96\131\209\16\48\80\112\181\243\245\170\8\24\40\56\72\88\104\120\187\231\241\140\154\250\224\197\4\12\20\28\36\44\52\60\68\76\84\92\100\108\116\124\180\248\188\129\234\133\135\142\152\156\196\253\210\220\183\215\2\6\10\14\18\22\26\30\34\38\42\46\50\54\58\62\66\70\74\78\82\86\90\94\98\102\106\110\114\118\122\126\162\172\194\177\225\192\204\130\232\236\239\244\167\139\141\145\149\153\191\159\207\255\254\185\213\227\201\218\198\176\178\222\1\3\5\7\9\11\13\15\17\19\21\23\25\27\29\31\33\35\37\39\41\43\45\47\49\51\53\55\57\59\61\63\65\67\69\71\73\75\77\79\81\83\85\87\89\91\93\95\97\99\101\103\105\107\109\111\113\115\117\119\121\123\125\127\193\163\164\169\199\168\161\171\166\252\200\203\229\128\174\233\230\237\235\132\238\205\175\242\134\136\137\138\190\143\144\147\148\150\151\155\214\157\158\216\206\217\246\249\251\247\189\208\212\226\211\160\165\228\221\219\182\184\195\186\173\179\240\223\0"#))

instance Encoding MacOSRoman where
  decodeChar _ = do
    w <- fetchWord8
    return ()
    case decoding_array_MacOSRoman!w of
      Nothing -> throwException $ IllegalCharacter $ fromIntegral w
      Just c -> return c
  encodeChar _ c = mapEncode c encoding_map_MacOSRoman
  encodeable _ c = mapMember c encoding_map_MacOSRoman