[前][次][番号順一覧][スレッド一覧]

ruby-changes:2745

From: ko1@a...
Date: 15 Dec 2007 14:42:46 +0900
Subject: [ruby-changes:2745] matz - Ruby:r14236 (trunk): * transcode.c (str_transcode, transcode_dispatch): added two-step

matz	2007-12-15 14:42:25 +0900 (Sat, 15 Dec 2007)

  New Revision: 14236

  Modified files:
    trunk/ChangeLog
    trunk/test/ruby/test_transcode.rb
    trunk/transcode.c
    trunk/transcode_data.h
    trunk/transcode_data_iso_8859.c

  Log:
    * transcode.c (str_transcode, transcode_dispatch): added two-step
    
    * trancode.c: some minor formatting fixes
    
    * transcode_data.h, transcode_data_iso_8859.c: Shortened
      extremely frequently used macros to shorten file length.
    
    * test/ruby/test_transcode.rb: Fixed name of test class;
      added setup method to ensure all necessary encodings exist;
      split tests into more test methods; added tests; fixed ordering
      of arguments in assert_equal to have expected result first.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/transcode_data.h?r1=14236&r2=14235
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_transcode.rb?r1=14236&r2=14235
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14236&r2=14235
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/transcode.c?r1=14236&r2=14235
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/transcode_data_iso_8859.c?r1=14236&r2=14235

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14235)
+++ ChangeLog	(revision 14236)
@@ -52,6 +52,23 @@
 
 	* string.c (rb_str_casecmp): ditto.
 
+Fri Dec 14 15:25:30 2007  Martin Duerst  <duerst@i...>
+
+        * transcode.c (encoding_equal): new function.
+
+	* transcode.c (str_transcode, transcode_dispatch): added two-step
+          conversion logic via UTF-8.
+
+	* trancode.c: some minor formatting fixes
+
+	* transcode_data.h, transcode_data_iso_8859.c: Shortened
+	  extremely frequently used macros to shorten file length.
+
+	* test/ruby/test_transcode.rb: Fixed name of test class;
+	  added setup method to ensure all necessary encodings exist;
+	  split tests into more test methods; added tests; fixed ordering
+	  of arguments in assert_equal to have expected result first.
+
 Fri Dec 14 13:47:54 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* common.mk (ruby.imp): fix for circular dependency.  a patch from
Index: transcode_data_iso_8859.c
===================================================================
--- transcode_data_iso_8859.c	(revision 14235)
+++ transcode_data_iso_8859.c	(revision 14236)
@@ -22,71 +22,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_1_infos[129] = {
-                      NOMAP, output2('\xC2','\x80'),
-     output2('\xC2','\x81'), output2('\xC2','\x82'),
-     output2('\xC2','\x83'), output2('\xC2','\x84'),
-     output2('\xC2','\x85'), output2('\xC2','\x86'),
-     output2('\xC2','\x87'), output2('\xC2','\x88'),
-     output2('\xC2','\x89'), output2('\xC2','\x8A'),
-     output2('\xC2','\x8B'), output2('\xC2','\x8C'),
-     output2('\xC2','\x8D'), output2('\xC2','\x8E'),
-     output2('\xC2','\x8F'), output2('\xC2','\x90'),
-     output2('\xC2','\x91'), output2('\xC2','\x92'),
-     output2('\xC2','\x93'), output2('\xC2','\x94'),
-     output2('\xC2','\x95'), output2('\xC2','\x96'),
-     output2('\xC2','\x97'), output2('\xC2','\x98'),
-     output2('\xC2','\x99'), output2('\xC2','\x9A'),
-     output2('\xC2','\x9B'), output2('\xC2','\x9C'),
-     output2('\xC2','\x9D'), output2('\xC2','\x9E'),
-     output2('\xC2','\x9F'), output2('\xC2','\xA0'),
-     output2('\xC2','\xA1'), output2('\xC2','\xA2'),
-     output2('\xC2','\xA3'), output2('\xC2','\xA4'),
-     output2('\xC2','\xA5'), output2('\xC2','\xA6'),
-     output2('\xC2','\xA7'), output2('\xC2','\xA8'),
-     output2('\xC2','\xA9'), output2('\xC2','\xAA'),
-     output2('\xC2','\xAB'), output2('\xC2','\xAC'),
-     output2('\xC2','\xAD'), output2('\xC2','\xAE'),
-     output2('\xC2','\xAF'), output2('\xC2','\xB0'),
-     output2('\xC2','\xB1'), output2('\xC2','\xB2'),
-     output2('\xC2','\xB3'), output2('\xC2','\xB4'),
-     output2('\xC2','\xB5'), output2('\xC2','\xB6'),
-     output2('\xC2','\xB7'), output2('\xC2','\xB8'),
-     output2('\xC2','\xB9'), output2('\xC2','\xBA'),
-     output2('\xC2','\xBB'), output2('\xC2','\xBC'),
-     output2('\xC2','\xBD'), output2('\xC2','\xBE'),
-     output2('\xC2','\xBF'), output2('\xC3','\x80'),
-     output2('\xC3','\x81'), output2('\xC3','\x82'),
-     output2('\xC3','\x83'), output2('\xC3','\x84'),
-     output2('\xC3','\x85'), output2('\xC3','\x86'),
-     output2('\xC3','\x87'), output2('\xC3','\x88'),
-     output2('\xC3','\x89'), output2('\xC3','\x8A'),
-     output2('\xC3','\x8B'), output2('\xC3','\x8C'),
-     output2('\xC3','\x8D'), output2('\xC3','\x8E'),
-     output2('\xC3','\x8F'), output2('\xC3','\x90'),
-     output2('\xC3','\x91'), output2('\xC3','\x92'),
-     output2('\xC3','\x93'), output2('\xC3','\x94'),
-     output2('\xC3','\x95'), output2('\xC3','\x96'),
-     output2('\xC3','\x97'), output2('\xC3','\x98'),
-     output2('\xC3','\x99'), output2('\xC3','\x9A'),
-     output2('\xC3','\x9B'), output2('\xC3','\x9C'),
-     output2('\xC3','\x9D'), output2('\xC3','\x9E'),
-     output2('\xC3','\x9F'), output2('\xC3','\xA0'),
-     output2('\xC3','\xA1'), output2('\xC3','\xA2'),
-     output2('\xC3','\xA3'), output2('\xC3','\xA4'),
-     output2('\xC3','\xA5'), output2('\xC3','\xA6'),
-     output2('\xC3','\xA7'), output2('\xC3','\xA8'),
-     output2('\xC3','\xA9'), output2('\xC3','\xAA'),
-     output2('\xC3','\xAB'), output2('\xC3','\xAC'),
-     output2('\xC3','\xAD'), output2('\xC3','\xAE'),
-     output2('\xC3','\xAF'), output2('\xC3','\xB0'),
-     output2('\xC3','\xB1'), output2('\xC3','\xB2'),
-     output2('\xC3','\xB3'), output2('\xC3','\xB4'),
-     output2('\xC3','\xB5'), output2('\xC3','\xB6'),
-     output2('\xC3','\xB7'), output2('\xC3','\xB8'),
-     output2('\xC3','\xB9'), output2('\xC3','\xBA'),
-     output2('\xC3','\xBB'), output2('\xC3','\xBC'),
-     output2('\xC3','\xBD'), output2('\xC3','\xBE'),
-     output2('\xC3','\xBF'),
+                      NOMAP, o2('\xC2','\x80'),
+     o2('\xC2','\x81'), o2('\xC2','\x82'),
+     o2('\xC2','\x83'), o2('\xC2','\x84'),
+     o2('\xC2','\x85'), o2('\xC2','\x86'),
+     o2('\xC2','\x87'), o2('\xC2','\x88'),
+     o2('\xC2','\x89'), o2('\xC2','\x8A'),
+     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
+     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
+     o2('\xC2','\x8F'), o2('\xC2','\x90'),
+     o2('\xC2','\x91'), o2('\xC2','\x92'),
+     o2('\xC2','\x93'), o2('\xC2','\x94'),
+     o2('\xC2','\x95'), o2('\xC2','\x96'),
+     o2('\xC2','\x97'), o2('\xC2','\x98'),
+     o2('\xC2','\x99'), o2('\xC2','\x9A'),
+     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
+     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
+     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
+     o2('\xC2','\xA1'), o2('\xC2','\xA2'),
+     o2('\xC2','\xA3'), o2('\xC2','\xA4'),
+     o2('\xC2','\xA5'), o2('\xC2','\xA6'),
+     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
+     o2('\xC2','\xA9'), o2('\xC2','\xAA'),
+     o2('\xC2','\xAB'), o2('\xC2','\xAC'),
+     o2('\xC2','\xAD'), o2('\xC2','\xAE'),
+     o2('\xC2','\xAF'), o2('\xC2','\xB0'),
+     o2('\xC2','\xB1'), o2('\xC2','\xB2'),
+     o2('\xC2','\xB3'), o2('\xC2','\xB4'),
+     o2('\xC2','\xB5'), o2('\xC2','\xB6'),
+     o2('\xC2','\xB7'), o2('\xC2','\xB8'),
+     o2('\xC2','\xB9'), o2('\xC2','\xBA'),
+     o2('\xC2','\xBB'), o2('\xC2','\xBC'),
+     o2('\xC2','\xBD'), o2('\xC2','\xBE'),
+     o2('\xC2','\xBF'), o2('\xC3','\x80'),
+     o2('\xC3','\x81'), o2('\xC3','\x82'),
+     o2('\xC3','\x83'), o2('\xC3','\x84'),
+     o2('\xC3','\x85'), o2('\xC3','\x86'),
+     o2('\xC3','\x87'), o2('\xC3','\x88'),
+     o2('\xC3','\x89'), o2('\xC3','\x8A'),
+     o2('\xC3','\x8B'), o2('\xC3','\x8C'),
+     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
+     o2('\xC3','\x8F'), o2('\xC3','\x90'),
+     o2('\xC3','\x91'), o2('\xC3','\x92'),
+     o2('\xC3','\x93'), o2('\xC3','\x94'),
+     o2('\xC3','\x95'), o2('\xC3','\x96'),
+     o2('\xC3','\x97'), o2('\xC3','\x98'),
+     o2('\xC3','\x99'), o2('\xC3','\x9A'),
+     o2('\xC3','\x9B'), o2('\xC3','\x9C'),
+     o2('\xC3','\x9D'), o2('\xC3','\x9E'),
+     o2('\xC3','\x9F'), o2('\xC3','\xA0'),
+     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
+     o2('\xC3','\xA3'), o2('\xC3','\xA4'),
+     o2('\xC3','\xA5'), o2('\xC3','\xA6'),
+     o2('\xC3','\xA7'), o2('\xC3','\xA8'),
+     o2('\xC3','\xA9'), o2('\xC3','\xAA'),
+     o2('\xC3','\xAB'), o2('\xC3','\xAC'),
+     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
+     o2('\xC3','\xAF'), o2('\xC3','\xB0'),
+     o2('\xC3','\xB1'), o2('\xC3','\xB2'),
+     o2('\xC3','\xB3'), o2('\xC3','\xB4'),
+     o2('\xC3','\xB5'), o2('\xC3','\xB6'),
+     o2('\xC3','\xB7'), o2('\xC3','\xB8'),
+     o2('\xC3','\xB9'), o2('\xC3','\xBA'),
+     o2('\xC3','\xBB'), o2('\xC3','\xBC'),
+     o2('\xC3','\xBD'), o2('\xC3','\xBE'),
+     o2('\xC3','\xBF'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_1 = {
@@ -103,22 +103,22 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_1_C2_infos[64] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA1'), output1('\xA2'), output1('\xA3'),
-     output1('\xA4'), output1('\xA5'), output1('\xA6'), output1('\xA7'),
-     output1('\xA8'), output1('\xA9'), output1('\xAA'), output1('\xAB'),
-     output1('\xAC'), output1('\xAD'), output1('\xAE'), output1('\xAF'),
-     output1('\xB0'), output1('\xB1'), output1('\xB2'), output1('\xB3'),
-     output1('\xB4'), output1('\xB5'), output1('\xB6'), output1('\xB7'),
-     output1('\xB8'), output1('\xB9'), output1('\xBA'), output1('\xBB'),
-     output1('\xBC'), output1('\xBD'), output1('\xBE'), output1('\xBF'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA1'), o1('\xA2'), o1('\xA3'),
+     o1('\xA4'), o1('\xA5'), o1('\xA6'), o1('\xA7'),
+     o1('\xA8'), o1('\xA9'), o1('\xAA'), o1('\xAB'),
+     o1('\xAC'), o1('\xAD'), o1('\xAE'), o1('\xAF'),
+     o1('\xB0'), o1('\xB1'), o1('\xB2'), o1('\xB3'),
+     o1('\xB4'), o1('\xB5'), o1('\xB6'), o1('\xB7'),
+     o1('\xB8'), o1('\xB9'), o1('\xBA'), o1('\xBB'),
+     o1('\xBC'), o1('\xBD'), o1('\xBE'), o1('\xBF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_1_C2 = {
@@ -135,22 +135,22 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_1_C3_infos[64] = {
-     output1('\xC0'), output1('\xC1'), output1('\xC2'), output1('\xC3'),
-     output1('\xC4'), output1('\xC5'), output1('\xC6'), output1('\xC7'),
-     output1('\xC8'), output1('\xC9'), output1('\xCA'), output1('\xCB'),
-     output1('\xCC'), output1('\xCD'), output1('\xCE'), output1('\xCF'),
-     output1('\xD0'), output1('\xD1'), output1('\xD2'), output1('\xD3'),
-     output1('\xD4'), output1('\xD5'), output1('\xD6'), output1('\xD7'),
-     output1('\xD8'), output1('\xD9'), output1('\xDA'), output1('\xDB'),
-     output1('\xDC'), output1('\xDD'), output1('\xDE'), output1('\xDF'),
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
-     output1('\xF0'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF7'),
-     output1('\xF8'), output1('\xF9'), output1('\xFA'), output1('\xFB'),
-     output1('\xFC'), output1('\xFD'), output1('\xFE'), output1('\xFF'),
+     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
+     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
+     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
+     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
+     o1('\xD0'), o1('\xD1'), o1('\xD2'), o1('\xD3'),
+     o1('\xD4'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
+     o1('\xD8'), o1('\xD9'), o1('\xDA'), o1('\xDB'),
+     o1('\xDC'), o1('\xDD'), o1('\xDE'), o1('\xDF'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
+     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
+     o1('\xFC'), o1('\xFD'), o1('\xFE'), o1('\xFF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_1_C3 = {
@@ -208,71 +208,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_2_infos[129] = {
-                      NOMAP, output2('\xC2','\x80'),
-     output2('\xC2','\x81'), output2('\xC2','\x82'),
-     output2('\xC2','\x83'), output2('\xC2','\x84'),
-     output2('\xC2','\x85'), output2('\xC2','\x86'),
-     output2('\xC2','\x87'), output2('\xC2','\x88'),
-     output2('\xC2','\x89'), output2('\xC2','\x8A'),
-     output2('\xC2','\x8B'), output2('\xC2','\x8C'),
-     output2('\xC2','\x8D'), output2('\xC2','\x8E'),
-     output2('\xC2','\x8F'), output2('\xC2','\x90'),
-     output2('\xC2','\x91'), output2('\xC2','\x92'),
-     output2('\xC2','\x93'), output2('\xC2','\x94'),
-     output2('\xC2','\x95'), output2('\xC2','\x96'),
-     output2('\xC2','\x97'), output2('\xC2','\x98'),
-     output2('\xC2','\x99'), output2('\xC2','\x9A'),
-     output2('\xC2','\x9B'), output2('\xC2','\x9C'),
-     output2('\xC2','\x9D'), output2('\xC2','\x9E'),
-     output2('\xC2','\x9F'), output2('\xC2','\xA0'),
-     output2('\xC4','\x84'), output2('\xCB','\x98'),
-     output2('\xC5','\x81'), output2('\xC2','\xA4'),
-     output2('\xC4','\xBD'), output2('\xC5','\x9A'),
-     output2('\xC2','\xA7'), output2('\xC2','\xA8'),
-     output2('\xC5','\xA0'), output2('\xC5','\x9E'),
-     output2('\xC5','\xA4'), output2('\xC5','\xB9'),
-     output2('\xC2','\xAD'), output2('\xC5','\xBD'),
-     output2('\xC5','\xBB'), output2('\xC2','\xB0'),
-     output2('\xC4','\x85'), output2('\xCB','\x9B'),
-     output2('\xC5','\x82'), output2('\xC2','\xB4'),
-     output2('\xC4','\xBE'), output2('\xC5','\x9B'),
-     output2('\xCB','\x87'), output2('\xC2','\xB8'),
-     output2('\xC5','\xA1'), output2('\xC5','\x9F'),
-     output2('\xC5','\xA5'), output2('\xC5','\xBA'),
-     output2('\xCB','\x9D'), output2('\xC5','\xBE'),
-     output2('\xC5','\xBC'), output2('\xC5','\x94'),
-     output2('\xC3','\x81'), output2('\xC3','\x82'),
-     output2('\xC4','\x82'), output2('\xC3','\x84'),
-     output2('\xC4','\xB9'), output2('\xC4','\x86'),
-     output2('\xC3','\x87'), output2('\xC4','\x8C'),
-     output2('\xC3','\x89'), output2('\xC4','\x98'),
-     output2('\xC3','\x8B'), output2('\xC4','\x9A'),
-     output2('\xC3','\x8D'), output2('\xC3','\x8E'),
-     output2('\xC4','\x8E'), output2('\xC4','\x90'),
-     output2('\xC5','\x83'), output2('\xC5','\x87'),
-     output2('\xC3','\x93'), output2('\xC3','\x94'),
-     output2('\xC5','\x90'), output2('\xC3','\x96'),
-     output2('\xC3','\x97'), output2('\xC5','\x98'),
-     output2('\xC5','\xAE'), output2('\xC3','\x9A'),
-     output2('\xC5','\xB0'), output2('\xC3','\x9C'),
-     output2('\xC3','\x9D'), output2('\xC5','\xA2'),
-     output2('\xC3','\x9F'), output2('\xC5','\x95'),
-     output2('\xC3','\xA1'), output2('\xC3','\xA2'),
-     output2('\xC4','\x83'), output2('\xC3','\xA4'),
-     output2('\xC4','\xBA'), output2('\xC4','\x87'),
-     output2('\xC3','\xA7'), output2('\xC4','\x8D'),
-     output2('\xC3','\xA9'), output2('\xC4','\x99'),
-     output2('\xC3','\xAB'), output2('\xC4','\x9B'),
-     output2('\xC3','\xAD'), output2('\xC3','\xAE'),
-     output2('\xC4','\x8F'), output2('\xC4','\x91'),
-     output2('\xC5','\x84'), output2('\xC5','\x88'),
-     output2('\xC3','\xB3'), output2('\xC3','\xB4'),
-     output2('\xC5','\x91'), output2('\xC3','\xB6'),
-     output2('\xC3','\xB7'), output2('\xC5','\x99'),
-     output2('\xC5','\xAF'), output2('\xC3','\xBA'),
-     output2('\xC5','\xB1'), output2('\xC3','\xBC'),
-     output2('\xC3','\xBD'), output2('\xC5','\xA3'),
-     output2('\xCB','\x99'),
+                      NOMAP, o2('\xC2','\x80'),
+     o2('\xC2','\x81'), o2('\xC2','\x82'),
+     o2('\xC2','\x83'), o2('\xC2','\x84'),
+     o2('\xC2','\x85'), o2('\xC2','\x86'),
+     o2('\xC2','\x87'), o2('\xC2','\x88'),
+     o2('\xC2','\x89'), o2('\xC2','\x8A'),
+     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
+     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
+     o2('\xC2','\x8F'), o2('\xC2','\x90'),
+     o2('\xC2','\x91'), o2('\xC2','\x92'),
+     o2('\xC2','\x93'), o2('\xC2','\x94'),
+     o2('\xC2','\x95'), o2('\xC2','\x96'),
+     o2('\xC2','\x97'), o2('\xC2','\x98'),
+     o2('\xC2','\x99'), o2('\xC2','\x9A'),
+     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
+     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
+     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
+     o2('\xC4','\x84'), o2('\xCB','\x98'),
+     o2('\xC5','\x81'), o2('\xC2','\xA4'),
+     o2('\xC4','\xBD'), o2('\xC5','\x9A'),
+     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
+     o2('\xC5','\xA0'), o2('\xC5','\x9E'),
+     o2('\xC5','\xA4'), o2('\xC5','\xB9'),
+     o2('\xC2','\xAD'), o2('\xC5','\xBD'),
+     o2('\xC5','\xBB'), o2('\xC2','\xB0'),
+     o2('\xC4','\x85'), o2('\xCB','\x9B'),
+     o2('\xC5','\x82'), o2('\xC2','\xB4'),
+     o2('\xC4','\xBE'), o2('\xC5','\x9B'),
+     o2('\xCB','\x87'), o2('\xC2','\xB8'),
+     o2('\xC5','\xA1'), o2('\xC5','\x9F'),
+     o2('\xC5','\xA5'), o2('\xC5','\xBA'),
+     o2('\xCB','\x9D'), o2('\xC5','\xBE'),
+     o2('\xC5','\xBC'), o2('\xC5','\x94'),
+     o2('\xC3','\x81'), o2('\xC3','\x82'),
+     o2('\xC4','\x82'), o2('\xC3','\x84'),
+     o2('\xC4','\xB9'), o2('\xC4','\x86'),
+     o2('\xC3','\x87'), o2('\xC4','\x8C'),
+     o2('\xC3','\x89'), o2('\xC4','\x98'),
+     o2('\xC3','\x8B'), o2('\xC4','\x9A'),
+     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
+     o2('\xC4','\x8E'), o2('\xC4','\x90'),
+     o2('\xC5','\x83'), o2('\xC5','\x87'),
+     o2('\xC3','\x93'), o2('\xC3','\x94'),
+     o2('\xC5','\x90'), o2('\xC3','\x96'),
+     o2('\xC3','\x97'), o2('\xC5','\x98'),
+     o2('\xC5','\xAE'), o2('\xC3','\x9A'),
+     o2('\xC5','\xB0'), o2('\xC3','\x9C'),
+     o2('\xC3','\x9D'), o2('\xC5','\xA2'),
+     o2('\xC3','\x9F'), o2('\xC5','\x95'),
+     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
+     o2('\xC4','\x83'), o2('\xC3','\xA4'),
+     o2('\xC4','\xBA'), o2('\xC4','\x87'),
+     o2('\xC3','\xA7'), o2('\xC4','\x8D'),
+     o2('\xC3','\xA9'), o2('\xC4','\x99'),
+     o2('\xC3','\xAB'), o2('\xC4','\x9B'),
+     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
+     o2('\xC4','\x8F'), o2('\xC4','\x91'),
+     o2('\xC5','\x84'), o2('\xC5','\x88'),
+     o2('\xC3','\xB3'), o2('\xC3','\xB4'),
+     o2('\xC5','\x91'), o2('\xC3','\xB6'),
+     o2('\xC3','\xB7'), o2('\xC5','\x99'),
+     o2('\xC5','\xAF'), o2('\xC3','\xBA'),
+     o2('\xC5','\xB1'), o2('\xC3','\xBC'),
+     o2('\xC3','\xBD'), o2('\xC5','\xA3'),
+     o2('\xCB','\x99'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_2 = {
@@ -289,16 +289,16 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_2_C2_infos[40] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA4'), output1('\xA7'), output1('\xA8'),
-     output1('\xAD'), output1('\xB0'), output1('\xB4'), output1('\xB8'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA4'), o1('\xA7'), o1('\xA8'),
+     o1('\xAD'), o1('\xB0'), o1('\xB4'), o1('\xB8'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C2 = {
@@ -315,14 +315,14 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_2_C3_infos[31] = {
-     output1('\xC1'), output1('\xC2'), output1('\xC4'), output1('\xC7'),
-     output1('\xC9'), output1('\xCB'), output1('\xCD'), output1('\xCE'),
-     output1('\xD3'), output1('\xD4'), output1('\xD6'), output1('\xD7'),
-     output1('\xDA'), output1('\xDC'), output1('\xDD'), output1('\xDF'),
-     output1('\xE1'), output1('\xE2'), output1('\xE4'), output1('\xE7'),
-     output1('\xE9'), output1('\xEB'), output1('\xED'), output1('\xEE'),
-     output1('\xF3'), output1('\xF4'), output1('\xF6'), output1('\xF7'),
-     output1('\xFA'), output1('\xFC'), output1('\xFD'),
+     o1('\xC1'), o1('\xC2'), o1('\xC4'), o1('\xC7'),
+     o1('\xC9'), o1('\xCB'), o1('\xCD'), o1('\xCE'),
+     o1('\xD3'), o1('\xD4'), o1('\xD6'), o1('\xD7'),
+     o1('\xDA'), o1('\xDC'), o1('\xDD'), o1('\xDF'),
+     o1('\xE1'), o1('\xE2'), o1('\xE4'), o1('\xE7'),
+     o1('\xE9'), o1('\xEB'), o1('\xED'), o1('\xEE'),
+     o1('\xF3'), o1('\xF4'), o1('\xF6'), o1('\xF7'),
+     o1('\xFA'), o1('\xFC'), o1('\xFD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C3 = {
@@ -339,11 +339,11 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_2_C4_infos[20] = {
-     output1('\xC3'), output1('\xE3'), output1('\xA1'), output1('\xB1'),
-     output1('\xC6'), output1('\xE6'), output1('\xC8'), output1('\xE8'),
-     output1('\xCF'), output1('\xEF'), output1('\xD0'), output1('\xF0'),
-     output1('\xCA'), output1('\xEA'), output1('\xCC'), output1('\xEC'),
-     output1('\xC5'), output1('\xE5'), output1('\xA5'), output1('\xB5'),
+     o1('\xC3'), o1('\xE3'), o1('\xA1'), o1('\xB1'),
+     o1('\xC6'), o1('\xE6'), o1('\xC8'), o1('\xE8'),
+     o1('\xCF'), o1('\xEF'), o1('\xD0'), o1('\xF0'),
+     o1('\xCA'), o1('\xEA'), o1('\xCC'), o1('\xEC'),
+     o1('\xC5'), o1('\xE5'), o1('\xA5'), o1('\xB5'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C4 = {
@@ -360,14 +360,14 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_2_C5_infos[32] = {
-     output1('\xA3'), output1('\xB3'), output1('\xD1'), output1('\xF1'),
-     output1('\xD2'), output1('\xF2'), output1('\xD5'), output1('\xF5'),
-     output1('\xC0'), output1('\xE0'), output1('\xD8'), output1('\xF8'),
-     output1('\xA6'), output1('\xB6'), output1('\xAA'), output1('\xBA'),
-     output1('\xA9'), output1('\xB9'), output1('\xDE'), output1('\xFE'),
-     output1('\xAB'), output1('\xBB'), output1('\xD9'), output1('\xF9'),
-     output1('\xDB'), output1('\xFB'), output1('\xAC'), output1('\xBC'),
-     output1('\xAF'), output1('\xBF'), output1('\xAE'), output1('\xBE'),
+     o1('\xA3'), o1('\xB3'), o1('\xD1'), o1('\xF1'),
+     o1('\xD2'), o1('\xF2'), o1('\xD5'), o1('\xF5'),
+     o1('\xC0'), o1('\xE0'), o1('\xD8'), o1('\xF8'),
+     o1('\xA6'), o1('\xB6'), o1('\xAA'), o1('\xBA'),
+     o1('\xA9'), o1('\xB9'), o1('\xDE'), o1('\xFE'),
+     o1('\xAB'), o1('\xBB'), o1('\xD9'), o1('\xF9'),
+     o1('\xDB'), o1('\xFB'), o1('\xAC'), o1('\xBC'),
+     o1('\xAF'), o1('\xBF'), o1('\xAE'), o1('\xBE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_C5 = {
@@ -384,8 +384,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_2_CB_infos[5] = {
-     output1('\xB7'), output1('\xA2'), output1('\xFF'), output1('\xB2'),
-     output1('\xBD'),
+     o1('\xB7'), o1('\xA2'), o1('\xFF'), o1('\xB2'),
+     o1('\xBD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_2_CB = {
@@ -444,67 +444,67 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_3_infos[122] = {
-                      NOMAP, output2('\xC2','\x80'),
-     output2('\xC2','\x81'), output2('\xC2','\x82'),
-     output2('\xC2','\x83'), output2('\xC2','\x84'),
-     output2('\xC2','\x85'), output2('\xC2','\x86'),
-     output2('\xC2','\x87'), output2('\xC2','\x88'),
-     output2('\xC2','\x89'), output2('\xC2','\x8A'),
-     output2('\xC2','\x8B'), output2('\xC2','\x8C'),
-     output2('\xC2','\x8D'), output2('\xC2','\x8E'),
-     output2('\xC2','\x8F'), output2('\xC2','\x90'),
-     output2('\xC2','\x91'), output2('\xC2','\x92'),
-     output2('\xC2','\x93'), output2('\xC2','\x94'),
-     output2('\xC2','\x95'), output2('\xC2','\x96'),
-     output2('\xC2','\x97'), output2('\xC2','\x98'),
-     output2('\xC2','\x99'), output2('\xC2','\x9A'),
-     output2('\xC2','\x9B'), output2('\xC2','\x9C'),
-     output2('\xC2','\x9D'), output2('\xC2','\x9E'),
-     output2('\xC2','\x9F'), output2('\xC2','\xA0'),
-     output2('\xC4','\xA6'), output2('\xCB','\x98'),
-     output2('\xC2','\xA3'), output2('\xC2','\xA4'),
-     output2('\xC4','\xA4'), output2('\xC2','\xA7'),
-     output2('\xC2','\xA8'), output2('\xC4','\xB0'),
-     output2('\xC5','\x9E'), output2('\xC4','\x9E'),
-     output2('\xC4','\xB4'), output2('\xC2','\xAD'),
-     output2('\xC5','\xBB'), output2('\xC2','\xB0'),
-     output2('\xC4','\xA7'), output2('\xC2','\xB2'),
-     output2('\xC2','\xB3'), output2('\xC2','\xB4'),
-     output2('\xC2','\xB5'), output2('\xC4','\xA5'),
-     output2('\xC2','\xB7'), output2('\xC2','\xB8'),
-     output2('\xC4','\xB1'), output2('\xC5','\x9F'),
-     output2('\xC4','\x9F'), output2('\xC4','\xB5'),
-     output2('\xC2','\xBD'), output2('\xC5','\xBC'),
-     output2('\xC3','\x80'), output2('\xC3','\x81'),
-     output2('\xC3','\x82'), output2('\xC3','\x84'),
-     output2('\xC4','\x8A'), output2('\xC4','\x88'),
-     output2('\xC3','\x87'), output2('\xC3','\x88'),
-     output2('\xC3','\x89'), output2('\xC3','\x8A'),
-     output2('\xC3','\x8B'), output2('\xC3','\x8C'),
-     output2('\xC3','\x8D'), output2('\xC3','\x8E'),
-     output2('\xC3','\x8F'), output2('\xC3','\x91'),
-     output2('\xC3','\x92'), output2('\xC3','\x93'),
-     output2('\xC3','\x94'), output2('\xC4','\xA0'),
-     output2('\xC3','\x96'), output2('\xC3','\x97'),
-     output2('\xC4','\x9C'), output2('\xC3','\x99'),
-     output2('\xC3','\x9A'), output2('\xC3','\x9B'),
-     output2('\xC3','\x9C'), output2('\xC5','\xAC'),
-     output2('\xC5','\x9C'), output2('\xC3','\x9F'),
-     output2('\xC3','\xA0'), output2('\xC3','\xA1'),
-     output2('\xC3','\xA2'), output2('\xC3','\xA4'),
-     output2('\xC4','\x8B'), output2('\xC4','\x89'),
-     output2('\xC3','\xA7'), output2('\xC3','\xA8'),
-     output2('\xC3','\xA9'), output2('\xC3','\xAA'),
-     output2('\xC3','\xAB'), output2('\xC3','\xAC'),
-     output2('\xC3','\xAD'), output2('\xC3','\xAE'),
-     output2('\xC3','\xAF'), output2('\xC3','\xB1'),
-     output2('\xC3','\xB2'), output2('\xC3','\xB3'),
-     output2('\xC3','\xB4'), output2('\xC4','\xA1'),
-     output2('\xC3','\xB6'), output2('\xC3','\xB7'),
-     output2('\xC4','\x9D'), output2('\xC3','\xB9'),
-     output2('\xC3','\xBA'), output2('\xC3','\xBB'),
-     output2('\xC3','\xBC'), output2('\xC5','\xAD'),
-     output2('\xC5','\x9D'), output2('\xCB','\x99'),
+                      NOMAP, o2('\xC2','\x80'),
+     o2('\xC2','\x81'), o2('\xC2','\x82'),
+     o2('\xC2','\x83'), o2('\xC2','\x84'),
+     o2('\xC2','\x85'), o2('\xC2','\x86'),
+     o2('\xC2','\x87'), o2('\xC2','\x88'),
+     o2('\xC2','\x89'), o2('\xC2','\x8A'),
+     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
+     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
+     o2('\xC2','\x8F'), o2('\xC2','\x90'),
+     o2('\xC2','\x91'), o2('\xC2','\x92'),
+     o2('\xC2','\x93'), o2('\xC2','\x94'),
+     o2('\xC2','\x95'), o2('\xC2','\x96'),
+     o2('\xC2','\x97'), o2('\xC2','\x98'),
+     o2('\xC2','\x99'), o2('\xC2','\x9A'),
+     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
+     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
+     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
+     o2('\xC4','\xA6'), o2('\xCB','\x98'),
+     o2('\xC2','\xA3'), o2('\xC2','\xA4'),
+     o2('\xC4','\xA4'), o2('\xC2','\xA7'),
+     o2('\xC2','\xA8'), o2('\xC4','\xB0'),
+     o2('\xC5','\x9E'), o2('\xC4','\x9E'),
+     o2('\xC4','\xB4'), o2('\xC2','\xAD'),
+     o2('\xC5','\xBB'), o2('\xC2','\xB0'),
+     o2('\xC4','\xA7'), o2('\xC2','\xB2'),
+     o2('\xC2','\xB3'), o2('\xC2','\xB4'),
+     o2('\xC2','\xB5'), o2('\xC4','\xA5'),
+     o2('\xC2','\xB7'), o2('\xC2','\xB8'),
+     o2('\xC4','\xB1'), o2('\xC5','\x9F'),
+     o2('\xC4','\x9F'), o2('\xC4','\xB5'),
+     o2('\xC2','\xBD'), o2('\xC5','\xBC'),
+     o2('\xC3','\x80'), o2('\xC3','\x81'),
+     o2('\xC3','\x82'), o2('\xC3','\x84'),
+     o2('\xC4','\x8A'), o2('\xC4','\x88'),
+     o2('\xC3','\x87'), o2('\xC3','\x88'),
+     o2('\xC3','\x89'), o2('\xC3','\x8A'),
+     o2('\xC3','\x8B'), o2('\xC3','\x8C'),
+     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
+     o2('\xC3','\x8F'), o2('\xC3','\x91'),
+     o2('\xC3','\x92'), o2('\xC3','\x93'),
+     o2('\xC3','\x94'), o2('\xC4','\xA0'),
+     o2('\xC3','\x96'), o2('\xC3','\x97'),
+     o2('\xC4','\x9C'), o2('\xC3','\x99'),
+     o2('\xC3','\x9A'), o2('\xC3','\x9B'),
+     o2('\xC3','\x9C'), o2('\xC5','\xAC'),
+     o2('\xC5','\x9C'), o2('\xC3','\x9F'),
+     o2('\xC3','\xA0'), o2('\xC3','\xA1'),
+     o2('\xC3','\xA2'), o2('\xC3','\xA4'),
+     o2('\xC4','\x8B'), o2('\xC4','\x89'),
+     o2('\xC3','\xA7'), o2('\xC3','\xA8'),
+     o2('\xC3','\xA9'), o2('\xC3','\xAA'),
+     o2('\xC3','\xAB'), o2('\xC3','\xAC'),
+     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
+     o2('\xC3','\xAF'), o2('\xC3','\xB1'),
+     o2('\xC3','\xB2'), o2('\xC3','\xB3'),
+     o2('\xC3','\xB4'), o2('\xC4','\xA1'),
+     o2('\xC3','\xB6'), o2('\xC3','\xB7'),
+     o2('\xC4','\x9D'), o2('\xC3','\xB9'),
+     o2('\xC3','\xBA'), o2('\xC3','\xBB'),
+     o2('\xC3','\xBC'), o2('\xC5','\xAD'),
+     o2('\xC5','\x9D'), o2('\xCB','\x99'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_3 = {
@@ -521,18 +521,18 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_3_C2_infos[46] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA3'), output1('\xA4'), output1('\xA7'),
-     output1('\xA8'), output1('\xAD'), output1('\xB0'), output1('\xB2'),
-     output1('\xB3'), output1('\xB4'), output1('\xB5'), output1('\xB7'),
-     output1('\xB8'), output1('\xBD'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA3'), o1('\xA4'), o1('\xA7'),
+     o1('\xA8'), o1('\xAD'), o1('\xB0'), o1('\xB2'),
+     o1('\xB3'), o1('\xB4'), o1('\xB5'), o1('\xB7'),
+     o1('\xB8'), o1('\xBD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C2 = {
@@ -549,18 +549,18 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_3_C3_infos[47] = {
-     output1('\xC0'), output1('\xC1'), output1('\xC2'), output1('\xC4'),
-     output1('\xC7'), output1('\xC8'), output1('\xC9'), output1('\xCA'),
-     output1('\xCB'), output1('\xCC'), output1('\xCD'), output1('\xCE'),
-     output1('\xCF'), output1('\xD1'), output1('\xD2'), output1('\xD3'),
-     output1('\xD4'), output1('\xD6'), output1('\xD7'), output1('\xD9'),
-     output1('\xDA'), output1('\xDB'), output1('\xDC'), output1('\xDF'),
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE4'),
-     output1('\xE7'), output1('\xE8'), output1('\xE9'), output1('\xEA'),
-     output1('\xEB'), output1('\xEC'), output1('\xED'), output1('\xEE'),
-     output1('\xEF'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF6'), output1('\xF7'), output1('\xF9'),
-     output1('\xFA'), output1('\xFB'), output1('\xFC'),
+     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC4'),
+     o1('\xC7'), o1('\xC8'), o1('\xC9'), o1('\xCA'),
+     o1('\xCB'), o1('\xCC'), o1('\xCD'), o1('\xCE'),
+     o1('\xCF'), o1('\xD1'), o1('\xD2'), o1('\xD3'),
+     o1('\xD4'), o1('\xD6'), o1('\xD7'), o1('\xD9'),
+     o1('\xDA'), o1('\xDB'), o1('\xDC'), o1('\xDF'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE4'),
+     o1('\xE7'), o1('\xE8'), o1('\xE9'), o1('\xEA'),
+     o1('\xEB'), o1('\xEC'), o1('\xED'), o1('\xEE'),
+     o1('\xEF'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF6'), o1('\xF7'), o1('\xF9'),
+     o1('\xFA'), o1('\xFB'), o1('\xFC'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C3 = {
@@ -577,11 +577,11 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_3_C4_infos[18] = {
-     output1('\xC6'), output1('\xE6'), output1('\xC5'), output1('\xE5'),
-     output1('\xD8'), output1('\xF8'), output1('\xAB'), output1('\xBB'),
-     output1('\xD5'), output1('\xF5'), output1('\xA6'), output1('\xB6'),
-     output1('\xA1'), output1('\xB1'), output1('\xA9'), output1('\xB9'),
-     output1('\xAC'), output1('\xBC'),
+     o1('\xC6'), o1('\xE6'), o1('\xC5'), o1('\xE5'),
+     o1('\xD8'), o1('\xF8'), o1('\xAB'), o1('\xBB'),
+     o1('\xD5'), o1('\xF5'), o1('\xA6'), o1('\xB6'),
+     o1('\xA1'), o1('\xB1'), o1('\xA9'), o1('\xB9'),
+     o1('\xAC'), o1('\xBC'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C4 = {
@@ -598,8 +598,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_3_C5_infos[8] = {
-     output1('\xDE'), output1('\xFE'), output1('\xAA'), output1('\xBA'),
-     output1('\xDD'), output1('\xFD'), output1('\xAF'), output1('\xBF'),
+     o1('\xDE'), o1('\xFE'), o1('\xAA'), o1('\xBA'),
+     o1('\xDD'), o1('\xFD'), o1('\xAF'), o1('\xBF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_C5 = {
@@ -616,7 +616,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_3_CB_infos[2] = {
-     output1('\xA2'), output1('\xFF'),
+     o1('\xA2'), o1('\xFF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_3_CB = {
@@ -675,71 +675,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_4_infos[129] = {
-                      NOMAP, output2('\xC2','\x80'),
-     output2('\xC2','\x81'), output2('\xC2','\x82'),
-     output2('\xC2','\x83'), output2('\xC2','\x84'),
-     output2('\xC2','\x85'), output2('\xC2','\x86'),
-     output2('\xC2','\x87'), output2('\xC2','\x88'),
-     output2('\xC2','\x89'), output2('\xC2','\x8A'),
-     output2('\xC2','\x8B'), output2('\xC2','\x8C'),
-     output2('\xC2','\x8D'), output2('\xC2','\x8E'),
-     output2('\xC2','\x8F'), output2('\xC2','\x90'),
-     output2('\xC2','\x91'), output2('\xC2','\x92'),
-     output2('\xC2','\x93'), output2('\xC2','\x94'),
-     output2('\xC2','\x95'), output2('\xC2','\x96'),
-     output2('\xC2','\x97'), output2('\xC2','\x98'),
-     output2('\xC2','\x99'), output2('\xC2','\x9A'),
-     output2('\xC2','\x9B'), output2('\xC2','\x9C'),
-     output2('\xC2','\x9D'), output2('\xC2','\x9E'),
-     output2('\xC2','\x9F'), output2('\xC2','\xA0'),
-     output2('\xC4','\x84'), output2('\xC4','\xB8'),
-     output2('\xC5','\x96'), output2('\xC2','\xA4'),
-     output2('\xC4','\xA8'), output2('\xC4','\xBB'),
-     output2('\xC2','\xA7'), output2('\xC2','\xA8'),
-     output2('\xC5','\xA0'), output2('\xC4','\x92'),
-     output2('\xC4','\xA2'), output2('\xC5','\xA6'),
-     output2('\xC2','\xAD'), output2('\xC5','\xBD'),
-     output2('\xC2','\xAF'), output2('\xC2','\xB0'),
-     output2('\xC4','\x85'), output2('\xCB','\x9B'),
-     output2('\xC5','\x97'), output2('\xC2','\xB4'),
-     output2('\xC4','\xA9'), output2('\xC4','\xBC'),
-     output2('\xCB','\x87'), output2('\xC2','\xB8'),
-     output2('\xC5','\xA1'), output2('\xC4','\x93'),
-     output2('\xC4','\xA3'), output2('\xC5','\xA7'),
-     output2('\xC5','\x8A'), output2('\xC5','\xBE'),
-     output2('\xC5','\x8B'), output2('\xC4','\x80'),
-     output2('\xC3','\x81'), output2('\xC3','\x82'),
-     output2('\xC3','\x83'), output2('\xC3','\x84'),
-     output2('\xC3','\x85'), output2('\xC3','\x86'),
-     output2('\xC4','\xAE'), output2('\xC4','\x8C'),
-     output2('\xC3','\x89'), output2('\xC4','\x98'),
-     output2('\xC3','\x8B'), output2('\xC4','\x96'),
-     output2('\xC3','\x8D'), output2('\xC3','\x8E'),
-     output2('\xC4','\xAA'), output2('\xC4','\x90'),
-     output2('\xC5','\x85'), output2('\xC5','\x8C'),
-     output2('\xC4','\xB6'), output2('\xC3','\x94'),
-     output2('\xC3','\x95'), output2('\xC3','\x96'),
-     output2('\xC3','\x97'), output2('\xC3','\x98'),
-     output2('\xC5','\xB2'), output2('\xC3','\x9A'),
-     output2('\xC3','\x9B'), output2('\xC3','\x9C'),
-     output2('\xC5','\xA8'), output2('\xC5','\xAA'),
-     output2('\xC3','\x9F'), output2('\xC4','\x81'),
-     output2('\xC3','\xA1'), output2('\xC3','\xA2'),
-     output2('\xC3','\xA3'), output2('\xC3','\xA4'),
-     output2('\xC3','\xA5'), output2('\xC3','\xA6'),
-     output2('\xC4','\xAF'), output2('\xC4','\x8D'),
-     output2('\xC3','\xA9'), output2('\xC4','\x99'),
-     output2('\xC3','\xAB'), output2('\xC4','\x97'),
-     output2('\xC3','\xAD'), output2('\xC3','\xAE'),
-     output2('\xC4','\xAB'), output2('\xC4','\x91'),
-     output2('\xC5','\x86'), output2('\xC5','\x8D'),
-     output2('\xC4','\xB7'), output2('\xC3','\xB4'),
-     output2('\xC3','\xB5'), output2('\xC3','\xB6'),
-     output2('\xC3','\xB7'), output2('\xC3','\xB8'),
-     output2('\xC5','\xB3'), output2('\xC3','\xBA'),
-     output2('\xC3','\xBB'), output2('\xC3','\xBC'),
-     output2('\xC5','\xA9'), output2('\xC5','\xAB'),
-     output2('\xCB','\x99'),
+                      NOMAP, o2('\xC2','\x80'),
+     o2('\xC2','\x81'), o2('\xC2','\x82'),
+     o2('\xC2','\x83'), o2('\xC2','\x84'),
+     o2('\xC2','\x85'), o2('\xC2','\x86'),
+     o2('\xC2','\x87'), o2('\xC2','\x88'),
+     o2('\xC2','\x89'), o2('\xC2','\x8A'),
+     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
+     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
+     o2('\xC2','\x8F'), o2('\xC2','\x90'),
+     o2('\xC2','\x91'), o2('\xC2','\x92'),
+     o2('\xC2','\x93'), o2('\xC2','\x94'),
+     o2('\xC2','\x95'), o2('\xC2','\x96'),
+     o2('\xC2','\x97'), o2('\xC2','\x98'),
+     o2('\xC2','\x99'), o2('\xC2','\x9A'),
+     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
+     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
+     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
+     o2('\xC4','\x84'), o2('\xC4','\xB8'),
+     o2('\xC5','\x96'), o2('\xC2','\xA4'),
+     o2('\xC4','\xA8'), o2('\xC4','\xBB'),
+     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
+     o2('\xC5','\xA0'), o2('\xC4','\x92'),
+     o2('\xC4','\xA2'), o2('\xC5','\xA6'),
+     o2('\xC2','\xAD'), o2('\xC5','\xBD'),
+     o2('\xC2','\xAF'), o2('\xC2','\xB0'),
+     o2('\xC4','\x85'), o2('\xCB','\x9B'),
+     o2('\xC5','\x97'), o2('\xC2','\xB4'),
+     o2('\xC4','\xA9'), o2('\xC4','\xBC'),
+     o2('\xCB','\x87'), o2('\xC2','\xB8'),
+     o2('\xC5','\xA1'), o2('\xC4','\x93'),
+     o2('\xC4','\xA3'), o2('\xC5','\xA7'),
+     o2('\xC5','\x8A'), o2('\xC5','\xBE'),
+     o2('\xC5','\x8B'), o2('\xC4','\x80'),
+     o2('\xC3','\x81'), o2('\xC3','\x82'),
+     o2('\xC3','\x83'), o2('\xC3','\x84'),
+     o2('\xC3','\x85'), o2('\xC3','\x86'),
+     o2('\xC4','\xAE'), o2('\xC4','\x8C'),
+     o2('\xC3','\x89'), o2('\xC4','\x98'),
+     o2('\xC3','\x8B'), o2('\xC4','\x96'),
+     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
+     o2('\xC4','\xAA'), o2('\xC4','\x90'),
+     o2('\xC5','\x85'), o2('\xC5','\x8C'),
+     o2('\xC4','\xB6'), o2('\xC3','\x94'),
+     o2('\xC3','\x95'), o2('\xC3','\x96'),
+     o2('\xC3','\x97'), o2('\xC3','\x98'),
+     o2('\xC5','\xB2'), o2('\xC3','\x9A'),
+     o2('\xC3','\x9B'), o2('\xC3','\x9C'),
+     o2('\xC5','\xA8'), o2('\xC5','\xAA'),
+     o2('\xC3','\x9F'), o2('\xC4','\x81'),
+     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
+     o2('\xC3','\xA3'), o2('\xC3','\xA4'),
+     o2('\xC3','\xA5'), o2('\xC3','\xA6'),
+     o2('\xC4','\xAF'), o2('\xC4','\x8D'),
+     o2('\xC3','\xA9'), o2('\xC4','\x99'),
+     o2('\xC3','\xAB'), o2('\xC4','\x97'),
+     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
+     o2('\xC4','\xAB'), o2('\xC4','\x91'),
+     o2('\xC5','\x86'), o2('\xC5','\x8D'),
+     o2('\xC4','\xB7'), o2('\xC3','\xB4'),
+     o2('\xC3','\xB5'), o2('\xC3','\xB6'),
+     o2('\xC3','\xB7'), o2('\xC3','\xB8'),
+     o2('\xC5','\xB3'), o2('\xC3','\xBA'),
+     o2('\xC3','\xBB'), o2('\xC3','\xBC'),
+     o2('\xC5','\xA9'), o2('\xC5','\xAB'),
+     o2('\xCB','\x99'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_4 = {
@@ -756,17 +756,17 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_4_C2_infos[41] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA4'), output1('\xA7'), output1('\xA8'),
-     output1('\xAD'), output1('\xAF'), output1('\xB0'), output1('\xB4'),
-     output1('\xB8'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA4'), o1('\xA7'), o1('\xA8'),
+     o1('\xAD'), o1('\xAF'), o1('\xB0'), o1('\xB4'),
+     o1('\xB8'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C2 = {
@@ -783,16 +783,16 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_4_C3_infos[37] = {
-     output1('\xC1'), output1('\xC2'), output1('\xC3'), output1('\xC4'),
-     output1('\xC5'), output1('\xC6'), output1('\xC9'), output1('\xCB'),
-     output1('\xCD'), output1('\xCE'), output1('\xD4'), output1('\xD5'),
-     output1('\xD6'), output1('\xD7'), output1('\xD8'), output1('\xDA'),
-     output1('\xDB'), output1('\xDC'), output1('\xDF'), output1('\xE1'),
-     output1('\xE2'), output1('\xE3'), output1('\xE4'), output1('\xE5'),
-     output1('\xE6'), output1('\xE9'), output1('\xEB'), output1('\xED'),
-     output1('\xEE'), output1('\xF4'), output1('\xF5'), output1('\xF6'),
-     output1('\xF7'), output1('\xF8'), output1('\xFA'), output1('\xFB'),
-     output1('\xFC'),
+     o1('\xC1'), o1('\xC2'), o1('\xC3'), o1('\xC4'),
+     o1('\xC5'), o1('\xC6'), o1('\xC9'), o1('\xCB'),
+     o1('\xCD'), o1('\xCE'), o1('\xD4'), o1('\xD5'),
+     o1('\xD6'), o1('\xD7'), o1('\xD8'), o1('\xDA'),
+     o1('\xDB'), o1('\xDC'), o1('\xDF'), o1('\xE1'),
+     o1('\xE2'), o1('\xE3'), o1('\xE4'), o1('\xE5'),
+     o1('\xE6'), o1('\xE9'), o1('\xEB'), o1('\xED'),
+     o1('\xEE'), o1('\xF4'), o1('\xF5'), o1('\xF6'),
+     o1('\xF7'), o1('\xF8'), o1('\xFA'), o1('\xFB'),
+     o1('\xFC'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C3 = {
@@ -809,13 +809,13 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_4_C4_infos[27] = {
-     output1('\xC0'), output1('\xE0'), output1('\xA1'), output1('\xB1'),
-     output1('\xC8'), output1('\xE8'), output1('\xD0'), output1('\xF0'),
-     output1('\xAA'), output1('\xBA'), output1('\xCC'), output1('\xEC'),
-     output1('\xCA'), output1('\xEA'), output1('\xAB'), output1('\xBB'),
-     output1('\xA5'), output1('\xB5'), output1('\xCF'), output1('\xEF'),
-     output1('\xC7'), output1('\xE7'), output1('\xD3'), output1('\xF3'),
-     output1('\xA2'), output1('\xA6'), output1('\xB6'),
+     o1('\xC0'), o1('\xE0'), o1('\xA1'), o1('\xB1'),
+     o1('\xC8'), o1('\xE8'), o1('\xD0'), o1('\xF0'),
+     o1('\xAA'), o1('\xBA'), o1('\xCC'), o1('\xEC'),
+     o1('\xCA'), o1('\xEA'), o1('\xAB'), o1('\xBB'),
+     o1('\xA5'), o1('\xB5'), o1('\xCF'), o1('\xEF'),
+     o1('\xC7'), o1('\xE7'), o1('\xD3'), o1('\xF3'),
+     o1('\xA2'), o1('\xA6'), o1('\xB6'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C4 = {
@@ -832,11 +832,11 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_4_C5_infos[20] = {
-     output1('\xD1'), output1('\xF1'), output1('\xBD'), output1('\xBF'),
-     output1('\xD2'), output1('\xF2'), output1('\xA3'), output1('\xB3'),
-     output1('\xA9'), output1('\xB9'), output1('\xAC'), output1('\xBC'),
-     output1('\xDD'), output1('\xFD'), output1('\xDE'), output1('\xFE'),
-     output1('\xD9'), output1('\xF9'), output1('\xAE'), output1('\xBE'),
+     o1('\xD1'), o1('\xF1'), o1('\xBD'), o1('\xBF'),
+     o1('\xD2'), o1('\xF2'), o1('\xA3'), o1('\xB3'),
+     o1('\xA9'), o1('\xB9'), o1('\xAC'), o1('\xBC'),
+     o1('\xDD'), o1('\xFD'), o1('\xDE'), o1('\xFE'),
+     o1('\xD9'), o1('\xF9'), o1('\xAE'), o1('\xBE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_C5 = {
@@ -853,7 +853,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_4_CB_infos[3] = {
-     output1('\xB7'), output1('\xFF'), output1('\xB2'),
+     o1('\xB7'), o1('\xFF'), o1('\xB2'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_4_CB = {
@@ -912,71 +912,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_5_infos[129] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-            output2('\xD0','\x81'),        output2('\xD0','\x82'),
-            output2('\xD0','\x83'),        output2('\xD0','\x84'),
-            output2('\xD0','\x85'),        output2('\xD0','\x86'),
-            output2('\xD0','\x87'),        output2('\xD0','\x88'),
-            output2('\xD0','\x89'),        output2('\xD0','\x8A'),
-            output2('\xD0','\x8B'),        output2('\xD0','\x8C'),
-            output2('\xC2','\xAD'),        output2('\xD0','\x8E'),
-            output2('\xD0','\x8F'),        output2('\xD0','\x90'),
-            output2('\xD0','\x91'),        output2('\xD0','\x92'),
-            output2('\xD0','\x93'),        output2('\xD0','\x94'),
-            output2('\xD0','\x95'),        output2('\xD0','\x96'),
-            output2('\xD0','\x97'),        output2('\xD0','\x98'),
-            output2('\xD0','\x99'),        output2('\xD0','\x9A'),
-            output2('\xD0','\x9B'),        output2('\xD0','\x9C'),
-            output2('\xD0','\x9D'),        output2('\xD0','\x9E'),
-            output2('\xD0','\x9F'),        output2('\xD0','\xA0'),
-            output2('\xD0','\xA1'),        output2('\xD0','\xA2'),
-            output2('\xD0','\xA3'),        output2('\xD0','\xA4'),
-            output2('\xD0','\xA5'),        output2('\xD0','\xA6'),
-            output2('\xD0','\xA7'),        output2('\xD0','\xA8'),
-            output2('\xD0','\xA9'),        output2('\xD0','\xAA'),
-            output2('\xD0','\xAB'),        output2('\xD0','\xAC'),
-            output2('\xD0','\xAD'),        output2('\xD0','\xAE'),
-            output2('\xD0','\xAF'),        output2('\xD0','\xB0'),
-            output2('\xD0','\xB1'),        output2('\xD0','\xB2'),
-            output2('\xD0','\xB3'),        output2('\xD0','\xB4'),
-            output2('\xD0','\xB5'),        output2('\xD0','\xB6'),
-            output2('\xD0','\xB7'),        output2('\xD0','\xB8'),
-            output2('\xD0','\xB9'),        output2('\xD0','\xBA'),
-            output2('\xD0','\xBB'),        output2('\xD0','\xBC'),
-            output2('\xD0','\xBD'),        output2('\xD0','\xBE'),
-            output2('\xD0','\xBF'),        output2('\xD1','\x80'),
-            output2('\xD1','\x81'),        output2('\xD1','\x82'),
-            output2('\xD1','\x83'),        output2('\xD1','\x84'),
-            output2('\xD1','\x85'),        output2('\xD1','\x86'),
-            output2('\xD1','\x87'),        output2('\xD1','\x88'),
-            output2('\xD1','\x89'),        output2('\xD1','\x8A'),
-            output2('\xD1','\x8B'),        output2('\xD1','\x8C'),
-            output2('\xD1','\x8D'),        output2('\xD1','\x8E'),
-            output2('\xD1','\x8F'), output3('\xE2','\x84','\x96'),
-            output2('\xD1','\x91'),        output2('\xD1','\x92'),
-            output2('\xD1','\x93'),        output2('\xD1','\x94'),
-            output2('\xD1','\x95'),        output2('\xD1','\x96'),
-            output2('\xD1','\x97'),        output2('\xD1','\x98'),
-            output2('\xD1','\x99'),        output2('\xD1','\x9A'),
-            output2('\xD1','\x9B'),        output2('\xD1','\x9C'),
-            output2('\xC2','\xA7'),        output2('\xD1','\x9E'),
-            output2('\xD1','\x9F'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+            o2('\xD0','\x81'),        o2('\xD0','\x82'),
+            o2('\xD0','\x83'),        o2('\xD0','\x84'),
+            o2('\xD0','\x85'),        o2('\xD0','\x86'),
+            o2('\xD0','\x87'),        o2('\xD0','\x88'),
+            o2('\xD0','\x89'),        o2('\xD0','\x8A'),
+            o2('\xD0','\x8B'),        o2('\xD0','\x8C'),
+            o2('\xC2','\xAD'),        o2('\xD0','\x8E'),
+            o2('\xD0','\x8F'),        o2('\xD0','\x90'),
+            o2('\xD0','\x91'),        o2('\xD0','\x92'),
+            o2('\xD0','\x93'),        o2('\xD0','\x94'),
+            o2('\xD0','\x95'),        o2('\xD0','\x96'),
+            o2('\xD0','\x97'),        o2('\xD0','\x98'),
+            o2('\xD0','\x99'),        o2('\xD0','\x9A'),
+            o2('\xD0','\x9B'),        o2('\xD0','\x9C'),
+            o2('\xD0','\x9D'),        o2('\xD0','\x9E'),
+            o2('\xD0','\x9F'),        o2('\xD0','\xA0'),
+            o2('\xD0','\xA1'),        o2('\xD0','\xA2'),
+            o2('\xD0','\xA3'),        o2('\xD0','\xA4'),
+            o2('\xD0','\xA5'),        o2('\xD0','\xA6'),
+            o2('\xD0','\xA7'),        o2('\xD0','\xA8'),
+            o2('\xD0','\xA9'),        o2('\xD0','\xAA'),
+            o2('\xD0','\xAB'),        o2('\xD0','\xAC'),
+            o2('\xD0','\xAD'),        o2('\xD0','\xAE'),
+            o2('\xD0','\xAF'),        o2('\xD0','\xB0'),
+            o2('\xD0','\xB1'),        o2('\xD0','\xB2'),
+            o2('\xD0','\xB3'),        o2('\xD0','\xB4'),
+            o2('\xD0','\xB5'),        o2('\xD0','\xB6'),
+            o2('\xD0','\xB7'),        o2('\xD0','\xB8'),
+            o2('\xD0','\xB9'),        o2('\xD0','\xBA'),
+            o2('\xD0','\xBB'),        o2('\xD0','\xBC'),
+            o2('\xD0','\xBD'),        o2('\xD0','\xBE'),
+            o2('\xD0','\xBF'),        o2('\xD1','\x80'),
+            o2('\xD1','\x81'),        o2('\xD1','\x82'),
+            o2('\xD1','\x83'),        o2('\xD1','\x84'),
+            o2('\xD1','\x85'),        o2('\xD1','\x86'),
+            o2('\xD1','\x87'),        o2('\xD1','\x88'),
+            o2('\xD1','\x89'),        o2('\xD1','\x8A'),
+            o2('\xD1','\x8B'),        o2('\xD1','\x8C'),
+            o2('\xD1','\x8D'),        o2('\xD1','\x8E'),
+            o2('\xD1','\x8F'), o3('\xE2','\x84','\x96'),
+            o2('\xD1','\x91'),        o2('\xD1','\x92'),
+            o2('\xD1','\x93'),        o2('\xD1','\x94'),
+            o2('\xD1','\x95'),        o2('\xD1','\x96'),
+            o2('\xD1','\x97'),        o2('\xD1','\x98'),
+            o2('\xD1','\x99'),        o2('\xD1','\x9A'),
+            o2('\xD1','\x9B'),        o2('\xD1','\x9C'),
+            o2('\xC2','\xA7'),        o2('\xD1','\x9E'),
+            o2('\xD1','\x9F'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_5 = {
@@ -993,15 +993,15 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_5_C2_infos[35] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xFD'), output1('\xAD'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xFD'), o1('\xAD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_C2 = {
@@ -1018,22 +1018,22 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_5_D0_infos[62] = {
-     output1('\xA1'), output1('\xA2'), output1('\xA3'), output1('\xA4'),
-     output1('\xA5'), output1('\xA6'), output1('\xA7'), output1('\xA8'),
-     output1('\xA9'), output1('\xAA'), output1('\xAB'), output1('\xAC'),
-     output1('\xAE'), output1('\xAF'), output1('\xB0'), output1('\xB1'),
-     output1('\xB2'), output1('\xB3'), output1('\xB4'), output1('\xB5'),
-     output1('\xB6'), output1('\xB7'), output1('\xB8'), output1('\xB9'),
-     output1('\xBA'), output1('\xBB'), output1('\xBC'), output1('\xBD'),
-     output1('\xBE'), output1('\xBF'), output1('\xC0'), output1('\xC1'),
-     output1('\xC2'), output1('\xC3'), output1('\xC4'), output1('\xC5'),
-     output1('\xC6'), output1('\xC7'), output1('\xC8'), output1('\xC9'),
-     output1('\xCA'), output1('\xCB'), output1('\xCC'), output1('\xCD'),
-     output1('\xCE'), output1('\xCF'), output1('\xD0'), output1('\xD1'),
-     output1('\xD2'), output1('\xD3'), output1('\xD4'), output1('\xD5'),
-     output1('\xD6'), output1('\xD7'), output1('\xD8'), output1('\xD9'),
-     output1('\xDA'), output1('\xDB'), output1('\xDC'), output1('\xDD'),
-     output1('\xDE'), output1('\xDF'),
+     o1('\xA1'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
+     o1('\xA5'), o1('\xA6'), o1('\xA7'), o1('\xA8'),
+     o1('\xA9'), o1('\xAA'), o1('\xAB'), o1('\xAC'),
+     o1('\xAE'), o1('\xAF'), o1('\xB0'), o1('\xB1'),
+     o1('\xB2'), o1('\xB3'), o1('\xB4'), o1('\xB5'),
+     o1('\xB6'), o1('\xB7'), o1('\xB8'), o1('\xB9'),
+     o1('\xBA'), o1('\xBB'), o1('\xBC'), o1('\xBD'),
+     o1('\xBE'), o1('\xBF'), o1('\xC0'), o1('\xC1'),
+     o1('\xC2'), o1('\xC3'), o1('\xC4'), o1('\xC5'),
+     o1('\xC6'), o1('\xC7'), o1('\xC8'), o1('\xC9'),
+     o1('\xCA'), o1('\xCB'), o1('\xCC'), o1('\xCD'),
+     o1('\xCE'), o1('\xCF'), o1('\xD0'), o1('\xD1'),
+     o1('\xD2'), o1('\xD3'), o1('\xD4'), o1('\xD5'),
+     o1('\xD6'), o1('\xD7'), o1('\xD8'), o1('\xD9'),
+     o1('\xDA'), o1('\xDB'), o1('\xDC'), o1('\xDD'),
+     o1('\xDE'), o1('\xDF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_D0 = {
@@ -1050,14 +1050,14 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_5_D1_infos[30] = {
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
-     output1('\xF1'), output1('\xF2'), output1('\xF3'), output1('\xF4'),
-     output1('\xF5'), output1('\xF6'), output1('\xF7'), output1('\xF8'),
-     output1('\xF9'), output1('\xFA'), output1('\xFB'), output1('\xFC'),
-     output1('\xFE'), output1('\xFF'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+     o1('\xF1'), o1('\xF2'), o1('\xF3'), o1('\xF4'),
+     o1('\xF5'), o1('\xF6'), o1('\xF7'), o1('\xF8'),
+     o1('\xF9'), o1('\xFA'), o1('\xFB'), o1('\xFC'),
+     o1('\xFE'), o1('\xFF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_D1 = {
@@ -1074,7 +1074,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_5_E2_84_infos[1] = {
-     output1('\xF0'),
+     o1('\xF0'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_5_E2_84 = {
@@ -1150,48 +1150,48 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_6_infos[84] = {
-                      NOMAP, output2('\xC2','\x80'),
-     output2('\xC2','\x81'), output2('\xC2','\x82'),
-     output2('\xC2','\x83'), output2('\xC2','\x84'),
-     output2('\xC2','\x85'), output2('\xC2','\x86'),
-     output2('\xC2','\x87'), output2('\xC2','\x88'),
-     output2('\xC2','\x89'), output2('\xC2','\x8A'),
-     output2('\xC2','\x8B'), output2('\xC2','\x8C'),
-     output2('\xC2','\x8D'), output2('\xC2','\x8E'),
-     output2('\xC2','\x8F'), output2('\xC2','\x90'),
-     output2('\xC2','\x91'), output2('\xC2','\x92'),
-     output2('\xC2','\x93'), output2('\xC2','\x94'),
-     output2('\xC2','\x95'), output2('\xC2','\x96'),
-     output2('\xC2','\x97'), output2('\xC2','\x98'),
-     output2('\xC2','\x99'), output2('\xC2','\x9A'),
-     output2('\xC2','\x9B'), output2('\xC2','\x9C'),
-     output2('\xC2','\x9D'), output2('\xC2','\x9E'),
-     output2('\xC2','\x9F'), output2('\xC2','\xA0'),
-     output2('\xC2','\xA4'), output2('\xD8','\x8C'),
-     output2('\xC2','\xAD'), output2('\xD8','\x9B'),
-     output2('\xD8','\x9F'), output2('\xD8','\xA1'),
-     output2('\xD8','\xA2'), output2('\xD8','\xA3'),
-     output2('\xD8','\xA4'), output2('\xD8','\xA5'),
-     output2('\xD8','\xA6'), output2('\xD8','\xA7'),
-     output2('\xD8','\xA8'), output2('\xD8','\xA9'),
-     output2('\xD8','\xAA'), output2('\xD8','\xAB'),
-     output2('\xD8','\xAC'), output2('\xD8','\xAD'),
-     output2('\xD8','\xAE'), output2('\xD8','\xAF'),
-     output2('\xD8','\xB0'), output2('\xD8','\xB1'),
-     output2('\xD8','\xB2'), output2('\xD8','\xB3'),
-     output2('\xD8','\xB4'), output2('\xD8','\xB5'),
-     output2('\xD8','\xB6'), output2('\xD8','\xB7'),
-     output2('\xD8','\xB8'), output2('\xD8','\xB9'),
-     output2('\xD8','\xBA'), output2('\xD9','\x80'),
-     output2('\xD9','\x81'), output2('\xD9','\x82'),
-     output2('\xD9','\x83'), output2('\xD9','\x84'),
-     output2('\xD9','\x85'), output2('\xD9','\x86'),
-     output2('\xD9','\x87'), output2('\xD9','\x88'),
-     output2('\xD9','\x89'), output2('\xD9','\x8A'),
-     output2('\xD9','\x8B'), output2('\xD9','\x8C'),
-     output2('\xD9','\x8D'), output2('\xD9','\x8E'),
-     output2('\xD9','\x8F'), output2('\xD9','\x90'),
-     output2('\xD9','\x91'), output2('\xD9','\x92'),
+                      NOMAP, o2('\xC2','\x80'),
+     o2('\xC2','\x81'), o2('\xC2','\x82'),
+     o2('\xC2','\x83'), o2('\xC2','\x84'),
+     o2('\xC2','\x85'), o2('\xC2','\x86'),
+     o2('\xC2','\x87'), o2('\xC2','\x88'),
+     o2('\xC2','\x89'), o2('\xC2','\x8A'),
+     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
+     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
+     o2('\xC2','\x8F'), o2('\xC2','\x90'),
+     o2('\xC2','\x91'), o2('\xC2','\x92'),
+     o2('\xC2','\x93'), o2('\xC2','\x94'),
+     o2('\xC2','\x95'), o2('\xC2','\x96'),
+     o2('\xC2','\x97'), o2('\xC2','\x98'),
+     o2('\xC2','\x99'), o2('\xC2','\x9A'),
+     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
+     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
+     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
+     o2('\xC2','\xA4'), o2('\xD8','\x8C'),
+     o2('\xC2','\xAD'), o2('\xD8','\x9B'),
+     o2('\xD8','\x9F'), o2('\xD8','\xA1'),
+     o2('\xD8','\xA2'), o2('\xD8','\xA3'),
+     o2('\xD8','\xA4'), o2('\xD8','\xA5'),
+     o2('\xD8','\xA6'), o2('\xD8','\xA7'),
+     o2('\xD8','\xA8'), o2('\xD8','\xA9'),
+     o2('\xD8','\xAA'), o2('\xD8','\xAB'),
+     o2('\xD8','\xAC'), o2('\xD8','\xAD'),
+     o2('\xD8','\xAE'), o2('\xD8','\xAF'),
+     o2('\xD8','\xB0'), o2('\xD8','\xB1'),
+     o2('\xD8','\xB2'), o2('\xD8','\xB3'),
+     o2('\xD8','\xB4'), o2('\xD8','\xB5'),
+     o2('\xD8','\xB6'), o2('\xD8','\xB7'),
+     o2('\xD8','\xB8'), o2('\xD8','\xB9'),
+     o2('\xD8','\xBA'), o2('\xD9','\x80'),
+     o2('\xD9','\x81'), o2('\xD9','\x82'),
+     o2('\xD9','\x83'), o2('\xD9','\x84'),
+     o2('\xD9','\x85'), o2('\xD9','\x86'),
+     o2('\xD9','\x87'), o2('\xD9','\x88'),
+     o2('\xD9','\x89'), o2('\xD9','\x8A'),
+     o2('\xD9','\x8B'), o2('\xD9','\x8C'),
+     o2('\xD9','\x8D'), o2('\xD9','\x8E'),
+     o2('\xD9','\x8F'), o2('\xD9','\x90'),
+     o2('\xD9','\x91'), o2('\xD9','\x92'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_6 = {
@@ -1208,15 +1208,15 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_6_C2_infos[35] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA4'), output1('\xAD'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA4'), o1('\xAD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_6_C2 = {
@@ -1233,14 +1233,14 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_6_D8_infos[29] = {
-     output1('\xAC'), output1('\xBB'), output1('\xBF'), output1('\xC1'),
-     output1('\xC2'), output1('\xC3'), output1('\xC4'), output1('\xC5'),
-     output1('\xC6'), output1('\xC7'), output1('\xC8'), output1('\xC9'),
-     output1('\xCA'), output1('\xCB'), output1('\xCC'), output1('\xCD'),
-     output1('\xCE'), output1('\xCF'), output1('\xD0'), output1('\xD1'),
-     output1('\xD2'), output1('\xD3'), output1('\xD4'), output1('\xD5'),
-     output1('\xD6'), output1('\xD7'), output1('\xD8'), output1('\xD9'),
-     output1('\xDA'),
+     o1('\xAC'), o1('\xBB'), o1('\xBF'), o1('\xC1'),
+     o1('\xC2'), o1('\xC3'), o1('\xC4'), o1('\xC5'),
+     o1('\xC6'), o1('\xC7'), o1('\xC8'), o1('\xC9'),
+     o1('\xCA'), o1('\xCB'), o1('\xCC'), o1('\xCD'),
+     o1('\xCE'), o1('\xCF'), o1('\xD0'), o1('\xD1'),
+     o1('\xD2'), o1('\xD3'), o1('\xD4'), o1('\xD5'),
+     o1('\xD6'), o1('\xD7'), o1('\xD8'), o1('\xD9'),
+     o1('\xDA'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_6_D8 = {
@@ -1257,11 +1257,11 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_6_D9_infos[19] = {
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
-     output1('\xF0'), output1('\xF1'), output1('\xF2'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+     o1('\xF0'), o1('\xF1'), o1('\xF2'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_6_D9 = {
@@ -1319,69 +1319,69 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_7_infos[126] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-     output3('\xE2','\x80','\x98'), output3('\xE2','\x80','\x99'),
-            output2('\xC2','\xA3'), output3('\xE2','\x82','\xAC'),
-     output3('\xE2','\x82','\xAF'),        output2('\xC2','\xA6'),
-            output2('\xC2','\xA7'),        output2('\xC2','\xA8'),
-            output2('\xC2','\xA9'),        output2('\xCD','\xBA'),
-            output2('\xC2','\xAB'),        output2('\xC2','\xAC'),
-            output2('\xC2','\xAD'), output3('\xE2','\x80','\x95'),
-            output2('\xC2','\xB0'),        output2('\xC2','\xB1'),
-            output2('\xC2','\xB2'),        output2('\xC2','\xB3'),
-            output2('\xCE','\x84'),        output2('\xCE','\x85'),
-            output2('\xCE','\x86'),        output2('\xC2','\xB7'),
-            output2('\xCE','\x88'),        output2('\xCE','\x89'),
-            output2('\xCE','\x8A'),        output2('\xC2','\xBB'),
-            output2('\xCE','\x8C'),        output2('\xC2','\xBD'),
-            output2('\xCE','\x8E'),        output2('\xCE','\x8F'),
-            output2('\xCE','\x90'),        output2('\xCE','\x91'),
-            output2('\xCE','\x92'),        output2('\xCE','\x93'),
-            output2('\xCE','\x94'),        output2('\xCE','\x95'),
-            output2('\xCE','\x96'),        output2('\xCE','\x97'),
-            output2('\xCE','\x98'),        output2('\xCE','\x99'),
-            output2('\xCE','\x9A'),        output2('\xCE','\x9B'),
-            output2('\xCE','\x9C'),        output2('\xCE','\x9D'),
-            output2('\xCE','\x9E'),        output2('\xCE','\x9F'),
-            output2('\xCE','\xA0'),        output2('\xCE','\xA1'),
-            output2('\xCE','\xA3'),        output2('\xCE','\xA4'),
-            output2('\xCE','\xA5'),        output2('\xCE','\xA6'),
-            output2('\xCE','\xA7'),        output2('\xCE','\xA8'),
-            output2('\xCE','\xA9'),        output2('\xCE','\xAA'),
-            output2('\xCE','\xAB'),        output2('\xCE','\xAC'),
-            output2('\xCE','\xAD'),        output2('\xCE','\xAE'),
-            output2('\xCE','\xAF'),        output2('\xCE','\xB0'),
-            output2('\xCE','\xB1'),        output2('\xCE','\xB2'),
-            output2('\xCE','\xB3'),        output2('\xCE','\xB4'),
-            output2('\xCE','\xB5'),        output2('\xCE','\xB6'),
-            output2('\xCE','\xB7'),        output2('\xCE','\xB8'),
-            output2('\xCE','\xB9'),        output2('\xCE','\xBA'),
-            output2('\xCE','\xBB'),        output2('\xCE','\xBC'),
-            output2('\xCE','\xBD'),        output2('\xCE','\xBE'),
-            output2('\xCE','\xBF'),        output2('\xCF','\x80'),
-            output2('\xCF','\x81'),        output2('\xCF','\x82'),
-            output2('\xCF','\x83'),        output2('\xCF','\x84'),
-            output2('\xCF','\x85'),        output2('\xCF','\x86'),
-            output2('\xCF','\x87'),        output2('\xCF','\x88'),
-            output2('\xCF','\x89'),        output2('\xCF','\x8A'),
-            output2('\xCF','\x8B'),        output2('\xCF','\x8C'),
-            output2('\xCF','\x8D'),        output2('\xCF','\x8E'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+     o3('\xE2','\x80','\x98'), o3('\xE2','\x80','\x99'),
+            o2('\xC2','\xA3'), o3('\xE2','\x82','\xAC'),
+     o3('\xE2','\x82','\xAF'),        o2('\xC2','\xA6'),
+            o2('\xC2','\xA7'),        o2('\xC2','\xA8'),
+            o2('\xC2','\xA9'),        o2('\xCD','\xBA'),
+            o2('\xC2','\xAB'),        o2('\xC2','\xAC'),
+            o2('\xC2','\xAD'), o3('\xE2','\x80','\x95'),
+            o2('\xC2','\xB0'),        o2('\xC2','\xB1'),
+            o2('\xC2','\xB2'),        o2('\xC2','\xB3'),
+            o2('\xCE','\x84'),        o2('\xCE','\x85'),
+            o2('\xCE','\x86'),        o2('\xC2','\xB7'),
+            o2('\xCE','\x88'),        o2('\xCE','\x89'),
+            o2('\xCE','\x8A'),        o2('\xC2','\xBB'),
+            o2('\xCE','\x8C'),        o2('\xC2','\xBD'),
+            o2('\xCE','\x8E'),        o2('\xCE','\x8F'),
+            o2('\xCE','\x90'),        o2('\xCE','\x91'),
+            o2('\xCE','\x92'),        o2('\xCE','\x93'),
+            o2('\xCE','\x94'),        o2('\xCE','\x95'),
+            o2('\xCE','\x96'),        o2('\xCE','\x97'),
+            o2('\xCE','\x98'),        o2('\xCE','\x99'),
+            o2('\xCE','\x9A'),        o2('\xCE','\x9B'),
+            o2('\xCE','\x9C'),        o2('\xCE','\x9D'),
+            o2('\xCE','\x9E'),        o2('\xCE','\x9F'),
+            o2('\xCE','\xA0'),        o2('\xCE','\xA1'),
+            o2('\xCE','\xA3'),        o2('\xCE','\xA4'),
+            o2('\xCE','\xA5'),        o2('\xCE','\xA6'),
+            o2('\xCE','\xA7'),        o2('\xCE','\xA8'),
+            o2('\xCE','\xA9'),        o2('\xCE','\xAA'),
+            o2('\xCE','\xAB'),        o2('\xCE','\xAC'),
+            o2('\xCE','\xAD'),        o2('\xCE','\xAE'),
+            o2('\xCE','\xAF'),        o2('\xCE','\xB0'),
+            o2('\xCE','\xB1'),        o2('\xCE','\xB2'),
+            o2('\xCE','\xB3'),        o2('\xCE','\xB4'),
+            o2('\xCE','\xB5'),        o2('\xCE','\xB6'),
+            o2('\xCE','\xB7'),        o2('\xCE','\xB8'),
+            o2('\xCE','\xB9'),        o2('\xCE','\xBA'),
+            o2('\xCE','\xBB'),        o2('\xCE','\xBC'),
+            o2('\xCE','\xBD'),        o2('\xCE','\xBE'),
+            o2('\xCE','\xBF'),        o2('\xCF','\x80'),
+            o2('\xCF','\x81'),        o2('\xCF','\x82'),
+            o2('\xCF','\x83'),        o2('\xCF','\x84'),
+            o2('\xCF','\x85'),        o2('\xCF','\x86'),
+            o2('\xCF','\x87'),        o2('\xCF','\x88'),
+            o2('\xCF','\x89'),        o2('\xCF','\x8A'),
+            o2('\xCF','\x8B'),        o2('\xCF','\x8C'),
+            o2('\xCF','\x8D'),        o2('\xCF','\x8E'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_7 = {
@@ -1398,18 +1398,18 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_7_C2_infos[48] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA3'), output1('\xA6'), output1('\xA7'),
-     output1('\xA8'), output1('\xA9'), output1('\xAB'), output1('\xAC'),
-     output1('\xAD'), output1('\xB0'), output1('\xB1'), output1('\xB2'),
-     output1('\xB3'), output1('\xB7'), output1('\xBB'), output1('\xBD'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA3'), o1('\xA6'), o1('\xA7'),
+     o1('\xA8'), o1('\xA9'), o1('\xAB'), o1('\xAC'),
+     o1('\xAD'), o1('\xB0'), o1('\xB1'), o1('\xB2'),
+     o1('\xB3'), o1('\xB7'), o1('\xBB'), o1('\xBD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_C2 = {
@@ -1426,7 +1426,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_7_CD_infos[1] = {
-     output1('\xAA'),
+     o1('\xAA'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_CD = {
@@ -1443,20 +1443,20 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_7_CE_infos[56] = {
-     output1('\xB4'), output1('\xB5'), output1('\xB6'), output1('\xB8'),
-     output1('\xB9'), output1('\xBA'), output1('\xBC'), output1('\xBE'),
-     output1('\xBF'), output1('\xC0'), output1('\xC1'), output1('\xC2'),
-     output1('\xC3'), output1('\xC4'), output1('\xC5'), output1('\xC6'),
-     output1('\xC7'), output1('\xC8'), output1('\xC9'), output1('\xCA'),
-     output1('\xCB'), output1('\xCC'), output1('\xCD'), output1('\xCE'),
-     output1('\xCF'), output1('\xD0'), output1('\xD1'), output1('\xD3'),
-     output1('\xD4'), output1('\xD5'), output1('\xD6'), output1('\xD7'),
-     output1('\xD8'), output1('\xD9'), output1('\xDA'), output1('\xDB'),
-     output1('\xDC'), output1('\xDD'), output1('\xDE'), output1('\xDF'),
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
+     o1('\xB4'), o1('\xB5'), o1('\xB6'), o1('\xB8'),
+     o1('\xB9'), o1('\xBA'), o1('\xBC'), o1('\xBE'),
+     o1('\xBF'), o1('\xC0'), o1('\xC1'), o1('\xC2'),
+     o1('\xC3'), o1('\xC4'), o1('\xC5'), o1('\xC6'),
+     o1('\xC7'), o1('\xC8'), o1('\xC9'), o1('\xCA'),
+     o1('\xCB'), o1('\xCC'), o1('\xCD'), o1('\xCE'),
+     o1('\xCF'), o1('\xD0'), o1('\xD1'), o1('\xD3'),
+     o1('\xD4'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
+     o1('\xD8'), o1('\xD9'), o1('\xDA'), o1('\xDB'),
+     o1('\xDC'), o1('\xDD'), o1('\xDE'), o1('\xDF'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_CE = {
@@ -1473,10 +1473,10 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_7_CF_infos[15] = {
-     output1('\xF0'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF7'),
-     output1('\xF8'), output1('\xF9'), output1('\xFA'), output1('\xFB'),
-     output1('\xFC'), output1('\xFD'), output1('\xFE'),
+     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
+     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
+     o1('\xFC'), o1('\xFD'), o1('\xFE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_CF = {
@@ -1493,7 +1493,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_7_E2_80_infos[3] = {
-     output1('\xAF'), output1('\xA1'), output1('\xA2'),
+     o1('\xAF'), o1('\xA1'), o1('\xA2'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_E2_80 = {
@@ -1510,7 +1510,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_7_E2_82_infos[2] = {
-     output1('\xA4'), output1('\xA5'),
+     o1('\xA4'), o1('\xA5'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_7_E2_82 = {
@@ -1586,53 +1586,53 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_8_infos[93] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-            output2('\xC2','\xA2'),        output2('\xC2','\xA3'),
-            output2('\xC2','\xA4'),        output2('\xC2','\xA5'),
-            output2('\xC2','\xA6'),        output2('\xC2','\xA7'),
-            output2('\xC2','\xA8'),        output2('\xC2','\xA9'),
-            output2('\xC3','\x97'),        output2('\xC2','\xAB'),
-            output2('\xC2','\xAC'),        output2('\xC2','\xAD'),
-            output2('\xC2','\xAE'),        output2('\xC2','\xAF'),
-            output2('\xC2','\xB0'),        output2('\xC2','\xB1'),
-            output2('\xC2','\xB2'),        output2('\xC2','\xB3'),
-            output2('\xC2','\xB4'),        output2('\xC2','\xB5'),
-            output2('\xC2','\xB6'),        output2('\xC2','\xB7'),
-            output2('\xC2','\xB8'),        output2('\xC2','\xB9'),
-            output2('\xC3','\xB7'),        output2('\xC2','\xBB'),
-            output2('\xC2','\xBC'),        output2('\xC2','\xBD'),
-            output2('\xC2','\xBE'), output3('\xE2','\x80','\x97'),
-            output2('\xD7','\x90'),        output2('\xD7','\x91'),
-            output2('\xD7','\x92'),        output2('\xD7','\x93'),
-            output2('\xD7','\x94'),        output2('\xD7','\x95'),
-            output2('\xD7','\x96'),        output2('\xD7','\x97'),
-            output2('\xD7','\x98'),        output2('\xD7','\x99'),
-            output2('\xD7','\x9A'),        output2('\xD7','\x9B'),
-            output2('\xD7','\x9C'),        output2('\xD7','\x9D'),
-            output2('\xD7','\x9E'),        output2('\xD7','\x9F'),
-            output2('\xD7','\xA0'),        output2('\xD7','\xA1'),
-            output2('\xD7','\xA2'),        output2('\xD7','\xA3'),
-            output2('\xD7','\xA4'),        output2('\xD7','\xA5'),
-            output2('\xD7','\xA6'),        output2('\xD7','\xA7'),
-            output2('\xD7','\xA8'),        output2('\xD7','\xA9'),
-            output2('\xD7','\xAA'), output3('\xE2','\x80','\x8E'),
-     output3('\xE2','\x80','\x8F'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+            o2('\xC2','\xA2'),        o2('\xC2','\xA3'),
+            o2('\xC2','\xA4'),        o2('\xC2','\xA5'),
+            o2('\xC2','\xA6'),        o2('\xC2','\xA7'),
+            o2('\xC2','\xA8'),        o2('\xC2','\xA9'),
+            o2('\xC3','\x97'),        o2('\xC2','\xAB'),
+            o2('\xC2','\xAC'),        o2('\xC2','\xAD'),
+            o2('\xC2','\xAE'),        o2('\xC2','\xAF'),
+            o2('\xC2','\xB0'),        o2('\xC2','\xB1'),
+            o2('\xC2','\xB2'),        o2('\xC2','\xB3'),
+            o2('\xC2','\xB4'),        o2('\xC2','\xB5'),
+            o2('\xC2','\xB6'),        o2('\xC2','\xB7'),
+            o2('\xC2','\xB8'),        o2('\xC2','\xB9'),
+            o2('\xC3','\xB7'),        o2('\xC2','\xBB'),
+            o2('\xC2','\xBC'),        o2('\xC2','\xBD'),
+            o2('\xC2','\xBE'), o3('\xE2','\x80','\x97'),
+            o2('\xD7','\x90'),        o2('\xD7','\x91'),
+            o2('\xD7','\x92'),        o2('\xD7','\x93'),
+            o2('\xD7','\x94'),        o2('\xD7','\x95'),
+            o2('\xD7','\x96'),        o2('\xD7','\x97'),
+            o2('\xD7','\x98'),        o2('\xD7','\x99'),
+            o2('\xD7','\x9A'),        o2('\xD7','\x9B'),
+            o2('\xD7','\x9C'),        o2('\xD7','\x9D'),
+            o2('\xD7','\x9E'),        o2('\xD7','\x9F'),
+            o2('\xD7','\xA0'),        o2('\xD7','\xA1'),
+            o2('\xD7','\xA2'),        o2('\xD7','\xA3'),
+            o2('\xD7','\xA4'),        o2('\xD7','\xA5'),
+            o2('\xD7','\xA6'),        o2('\xD7','\xA7'),
+            o2('\xD7','\xA8'),        o2('\xD7','\xA9'),
+            o2('\xD7','\xAA'), o3('\xE2','\x80','\x8E'),
+     o3('\xE2','\x80','\x8F'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_8 = {
@@ -1649,21 +1649,21 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_8_C2_infos[60] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA2'), output1('\xA3'), output1('\xA4'),
-     output1('\xA5'), output1('\xA6'), output1('\xA7'), output1('\xA8'),
-     output1('\xA9'), output1('\xAB'), output1('\xAC'), output1('\xAD'),
-     output1('\xAE'), output1('\xAF'), output1('\xB0'), output1('\xB1'),
-     output1('\xB2'), output1('\xB3'), output1('\xB4'), output1('\xB5'),
-     output1('\xB6'), output1('\xB7'), output1('\xB8'), output1('\xB9'),
-     output1('\xBB'), output1('\xBC'), output1('\xBD'), output1('\xBE'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
+     o1('\xA5'), o1('\xA6'), o1('\xA7'), o1('\xA8'),
+     o1('\xA9'), o1('\xAB'), o1('\xAC'), o1('\xAD'),
+     o1('\xAE'), o1('\xAF'), o1('\xB0'), o1('\xB1'),
+     o1('\xB2'), o1('\xB3'), o1('\xB4'), o1('\xB5'),
+     o1('\xB6'), o1('\xB7'), o1('\xB8'), o1('\xB9'),
+     o1('\xBB'), o1('\xBC'), o1('\xBD'), o1('\xBE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_C2 = {
@@ -1680,7 +1680,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_8_C3_infos[2] = {
-     output1('\xAA'), output1('\xBA'),
+     o1('\xAA'), o1('\xBA'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_C3 = {
@@ -1697,13 +1697,13 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_8_D7_infos[27] = {
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
-     output1('\xF0'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF7'),
-     output1('\xF8'), output1('\xF9'), output1('\xFA'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
+     o1('\xF8'), o1('\xF9'), o1('\xFA'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_D7 = {
@@ -1720,7 +1720,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_8_E2_80_infos[3] = {
-     output1('\xFD'), output1('\xFE'), output1('\xDF'),
+     o1('\xFD'), o1('\xFE'), o1('\xDF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_8_E2_80 = {
@@ -1796,71 +1796,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_9_infos[129] = {
-                      NOMAP, output2('\xC2','\x80'),
-     output2('\xC2','\x81'), output2('\xC2','\x82'),
-     output2('\xC2','\x83'), output2('\xC2','\x84'),
-     output2('\xC2','\x85'), output2('\xC2','\x86'),
-     output2('\xC2','\x87'), output2('\xC2','\x88'),
-     output2('\xC2','\x89'), output2('\xC2','\x8A'),
-     output2('\xC2','\x8B'), output2('\xC2','\x8C'),
-     output2('\xC2','\x8D'), output2('\xC2','\x8E'),
-     output2('\xC2','\x8F'), output2('\xC2','\x90'),
-     output2('\xC2','\x91'), output2('\xC2','\x92'),
-     output2('\xC2','\x93'), output2('\xC2','\x94'),
-     output2('\xC2','\x95'), output2('\xC2','\x96'),
-     output2('\xC2','\x97'), output2('\xC2','\x98'),
-     output2('\xC2','\x99'), output2('\xC2','\x9A'),
-     output2('\xC2','\x9B'), output2('\xC2','\x9C'),
-     output2('\xC2','\x9D'), output2('\xC2','\x9E'),
-     output2('\xC2','\x9F'), output2('\xC2','\xA0'),
-     output2('\xC2','\xA1'), output2('\xC2','\xA2'),
-     output2('\xC2','\xA3'), output2('\xC2','\xA4'),
-     output2('\xC2','\xA5'), output2('\xC2','\xA6'),
-     output2('\xC2','\xA7'), output2('\xC2','\xA8'),
-     output2('\xC2','\xA9'), output2('\xC2','\xAA'),
-     output2('\xC2','\xAB'), output2('\xC2','\xAC'),
-     output2('\xC2','\xAD'), output2('\xC2','\xAE'),
-     output2('\xC2','\xAF'), output2('\xC2','\xB0'),
-     output2('\xC2','\xB1'), output2('\xC2','\xB2'),
-     output2('\xC2','\xB3'), output2('\xC2','\xB4'),
-     output2('\xC2','\xB5'), output2('\xC2','\xB6'),
-     output2('\xC2','\xB7'), output2('\xC2','\xB8'),
-     output2('\xC2','\xB9'), output2('\xC2','\xBA'),
-     output2('\xC2','\xBB'), output2('\xC2','\xBC'),
-     output2('\xC2','\xBD'), output2('\xC2','\xBE'),
-     output2('\xC2','\xBF'), output2('\xC3','\x80'),
-     output2('\xC3','\x81'), output2('\xC3','\x82'),
-     output2('\xC3','\x83'), output2('\xC3','\x84'),
-     output2('\xC3','\x85'), output2('\xC3','\x86'),
-     output2('\xC3','\x87'), output2('\xC3','\x88'),
-     output2('\xC3','\x89'), output2('\xC3','\x8A'),
-     output2('\xC3','\x8B'), output2('\xC3','\x8C'),
-     output2('\xC3','\x8D'), output2('\xC3','\x8E'),
-     output2('\xC3','\x8F'), output2('\xC4','\x9E'),
-     output2('\xC3','\x91'), output2('\xC3','\x92'),
-     output2('\xC3','\x93'), output2('\xC3','\x94'),
-     output2('\xC3','\x95'), output2('\xC3','\x96'),
-     output2('\xC3','\x97'), output2('\xC3','\x98'),
-     output2('\xC3','\x99'), output2('\xC3','\x9A'),
-     output2('\xC3','\x9B'), output2('\xC3','\x9C'),
-     output2('\xC4','\xB0'), output2('\xC5','\x9E'),
-     output2('\xC3','\x9F'), output2('\xC3','\xA0'),
-     output2('\xC3','\xA1'), output2('\xC3','\xA2'),
-     output2('\xC3','\xA3'), output2('\xC3','\xA4'),
-     output2('\xC3','\xA5'), output2('\xC3','\xA6'),
-     output2('\xC3','\xA7'), output2('\xC3','\xA8'),
-     output2('\xC3','\xA9'), output2('\xC3','\xAA'),
-     output2('\xC3','\xAB'), output2('\xC3','\xAC'),
-     output2('\xC3','\xAD'), output2('\xC3','\xAE'),
-     output2('\xC3','\xAF'), output2('\xC4','\x9F'),
-     output2('\xC3','\xB1'), output2('\xC3','\xB2'),
-     output2('\xC3','\xB3'), output2('\xC3','\xB4'),
-     output2('\xC3','\xB5'), output2('\xC3','\xB6'),
-     output2('\xC3','\xB7'), output2('\xC3','\xB8'),
-     output2('\xC3','\xB9'), output2('\xC3','\xBA'),
-     output2('\xC3','\xBB'), output2('\xC3','\xBC'),
-     output2('\xC4','\xB1'), output2('\xC5','\x9F'),
-     output2('\xC3','\xBF'),
+                      NOMAP, o2('\xC2','\x80'),
+     o2('\xC2','\x81'), o2('\xC2','\x82'),
+     o2('\xC2','\x83'), o2('\xC2','\x84'),
+     o2('\xC2','\x85'), o2('\xC2','\x86'),
+     o2('\xC2','\x87'), o2('\xC2','\x88'),
+     o2('\xC2','\x89'), o2('\xC2','\x8A'),
+     o2('\xC2','\x8B'), o2('\xC2','\x8C'),
+     o2('\xC2','\x8D'), o2('\xC2','\x8E'),
+     o2('\xC2','\x8F'), o2('\xC2','\x90'),
+     o2('\xC2','\x91'), o2('\xC2','\x92'),
+     o2('\xC2','\x93'), o2('\xC2','\x94'),
+     o2('\xC2','\x95'), o2('\xC2','\x96'),
+     o2('\xC2','\x97'), o2('\xC2','\x98'),
+     o2('\xC2','\x99'), o2('\xC2','\x9A'),
+     o2('\xC2','\x9B'), o2('\xC2','\x9C'),
+     o2('\xC2','\x9D'), o2('\xC2','\x9E'),
+     o2('\xC2','\x9F'), o2('\xC2','\xA0'),
+     o2('\xC2','\xA1'), o2('\xC2','\xA2'),
+     o2('\xC2','\xA3'), o2('\xC2','\xA4'),
+     o2('\xC2','\xA5'), o2('\xC2','\xA6'),
+     o2('\xC2','\xA7'), o2('\xC2','\xA8'),
+     o2('\xC2','\xA9'), o2('\xC2','\xAA'),
+     o2('\xC2','\xAB'), o2('\xC2','\xAC'),
+     o2('\xC2','\xAD'), o2('\xC2','\xAE'),
+     o2('\xC2','\xAF'), o2('\xC2','\xB0'),
+     o2('\xC2','\xB1'), o2('\xC2','\xB2'),
+     o2('\xC2','\xB3'), o2('\xC2','\xB4'),
+     o2('\xC2','\xB5'), o2('\xC2','\xB6'),
+     o2('\xC2','\xB7'), o2('\xC2','\xB8'),
+     o2('\xC2','\xB9'), o2('\xC2','\xBA'),
+     o2('\xC2','\xBB'), o2('\xC2','\xBC'),
+     o2('\xC2','\xBD'), o2('\xC2','\xBE'),
+     o2('\xC2','\xBF'), o2('\xC3','\x80'),
+     o2('\xC3','\x81'), o2('\xC3','\x82'),
+     o2('\xC3','\x83'), o2('\xC3','\x84'),
+     o2('\xC3','\x85'), o2('\xC3','\x86'),
+     o2('\xC3','\x87'), o2('\xC3','\x88'),
+     o2('\xC3','\x89'), o2('\xC3','\x8A'),
+     o2('\xC3','\x8B'), o2('\xC3','\x8C'),
+     o2('\xC3','\x8D'), o2('\xC3','\x8E'),
+     o2('\xC3','\x8F'), o2('\xC4','\x9E'),
+     o2('\xC3','\x91'), o2('\xC3','\x92'),
+     o2('\xC3','\x93'), o2('\xC3','\x94'),
+     o2('\xC3','\x95'), o2('\xC3','\x96'),
+     o2('\xC3','\x97'), o2('\xC3','\x98'),
+     o2('\xC3','\x99'), o2('\xC3','\x9A'),
+     o2('\xC3','\x9B'), o2('\xC3','\x9C'),
+     o2('\xC4','\xB0'), o2('\xC5','\x9E'),
+     o2('\xC3','\x9F'), o2('\xC3','\xA0'),
+     o2('\xC3','\xA1'), o2('\xC3','\xA2'),
+     o2('\xC3','\xA3'), o2('\xC3','\xA4'),
+     o2('\xC3','\xA5'), o2('\xC3','\xA6'),
+     o2('\xC3','\xA7'), o2('\xC3','\xA8'),
+     o2('\xC3','\xA9'), o2('\xC3','\xAA'),
+     o2('\xC3','\xAB'), o2('\xC3','\xAC'),
+     o2('\xC3','\xAD'), o2('\xC3','\xAE'),
+     o2('\xC3','\xAF'), o2('\xC4','\x9F'),
+     o2('\xC3','\xB1'), o2('\xC3','\xB2'),
+     o2('\xC3','\xB3'), o2('\xC3','\xB4'),
+     o2('\xC3','\xB5'), o2('\xC3','\xB6'),
+     o2('\xC3','\xB7'), o2('\xC3','\xB8'),
+     o2('\xC3','\xB9'), o2('\xC3','\xBA'),
+     o2('\xC3','\xBB'), o2('\xC3','\xBC'),
+     o2('\xC4','\xB1'), o2('\xC5','\x9F'),
+     o2('\xC3','\xBF'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_9 = {
@@ -1877,22 +1877,22 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_9_C2_infos[64] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA1'), output1('\xA2'), output1('\xA3'),
-     output1('\xA4'), output1('\xA5'), output1('\xA6'), output1('\xA7'),
-     output1('\xA8'), output1('\xA9'), output1('\xAA'), output1('\xAB'),
-     output1('\xAC'), output1('\xAD'), output1('\xAE'), output1('\xAF'),
-     output1('\xB0'), output1('\xB1'), output1('\xB2'), output1('\xB3'),
-     output1('\xB4'), output1('\xB5'), output1('\xB6'), output1('\xB7'),
-     output1('\xB8'), output1('\xB9'), output1('\xBA'), output1('\xBB'),
-     output1('\xBC'), output1('\xBD'), output1('\xBE'), output1('\xBF'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA1'), o1('\xA2'), o1('\xA3'),
+     o1('\xA4'), o1('\xA5'), o1('\xA6'), o1('\xA7'),
+     o1('\xA8'), o1('\xA9'), o1('\xAA'), o1('\xAB'),
+     o1('\xAC'), o1('\xAD'), o1('\xAE'), o1('\xAF'),
+     o1('\xB0'), o1('\xB1'), o1('\xB2'), o1('\xB3'),
+     o1('\xB4'), o1('\xB5'), o1('\xB6'), o1('\xB7'),
+     o1('\xB8'), o1('\xB9'), o1('\xBA'), o1('\xBB'),
+     o1('\xBC'), o1('\xBD'), o1('\xBE'), o1('\xBF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C2 = {
@@ -1909,21 +1909,21 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_9_C3_infos[58] = {
-     output1('\xC0'), output1('\xC1'), output1('\xC2'), output1('\xC3'),
-     output1('\xC4'), output1('\xC5'), output1('\xC6'), output1('\xC7'),
-     output1('\xC8'), output1('\xC9'), output1('\xCA'), output1('\xCB'),
-     output1('\xCC'), output1('\xCD'), output1('\xCE'), output1('\xCF'),
-     output1('\xD1'), output1('\xD2'), output1('\xD3'), output1('\xD4'),
-     output1('\xD5'), output1('\xD6'), output1('\xD7'), output1('\xD8'),
-     output1('\xD9'), output1('\xDA'), output1('\xDB'), output1('\xDC'),
-     output1('\xDF'), output1('\xE0'), output1('\xE1'), output1('\xE2'),
-     output1('\xE3'), output1('\xE4'), output1('\xE5'), output1('\xE6'),
-     output1('\xE7'), output1('\xE8'), output1('\xE9'), output1('\xEA'),
-     output1('\xEB'), output1('\xEC'), output1('\xED'), output1('\xEE'),
-     output1('\xEF'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF7'),
-     output1('\xF8'), output1('\xF9'), output1('\xFA'), output1('\xFB'),
-     output1('\xFC'), output1('\xFF'),
+     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
+     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
+     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
+     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
+     o1('\xD1'), o1('\xD2'), o1('\xD3'), o1('\xD4'),
+     o1('\xD5'), o1('\xD6'), o1('\xD7'), o1('\xD8'),
+     o1('\xD9'), o1('\xDA'), o1('\xDB'), o1('\xDC'),
+     o1('\xDF'), o1('\xE0'), o1('\xE1'), o1('\xE2'),
+     o1('\xE3'), o1('\xE4'), o1('\xE5'), o1('\xE6'),
+     o1('\xE7'), o1('\xE8'), o1('\xE9'), o1('\xEA'),
+     o1('\xEB'), o1('\xEC'), o1('\xED'), o1('\xEE'),
+     o1('\xEF'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
+     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
+     o1('\xFC'), o1('\xFF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C3 = {
@@ -1940,7 +1940,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_9_C4_infos[4] = {
-     output1('\xD0'), output1('\xF0'), output1('\xDD'), output1('\xFD'),
+     o1('\xD0'), o1('\xF0'), o1('\xDD'), o1('\xFD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C4 = {
@@ -1957,7 +1957,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_9_C5_infos[2] = {
-     output1('\xDE'), output1('\xFE'),
+     o1('\xDE'), o1('\xFE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_9_C5 = {
@@ -2016,71 +2016,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_10_infos[129] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-            output2('\xC4','\x84'),        output2('\xC4','\x92'),
-            output2('\xC4','\xA2'),        output2('\xC4','\xAA'),
-            output2('\xC4','\xA8'),        output2('\xC4','\xB6'),
-            output2('\xC2','\xA7'),        output2('\xC4','\xBB'),
-            output2('\xC4','\x90'),        output2('\xC5','\xA0'),
-            output2('\xC5','\xA6'),        output2('\xC5','\xBD'),
-            output2('\xC2','\xAD'),        output2('\xC5','\xAA'),
-            output2('\xC5','\x8A'),        output2('\xC2','\xB0'),
-            output2('\xC4','\x85'),        output2('\xC4','\x93'),
-            output2('\xC4','\xA3'),        output2('\xC4','\xAB'),
-            output2('\xC4','\xA9'),        output2('\xC4','\xB7'),
-            output2('\xC2','\xB7'),        output2('\xC4','\xBC'),
-            output2('\xC4','\x91'),        output2('\xC5','\xA1'),
-            output2('\xC5','\xA7'),        output2('\xC5','\xBE'),
-     output3('\xE2','\x80','\x95'),        output2('\xC5','\xAB'),
-            output2('\xC5','\x8B'),        output2('\xC4','\x80'),
-            output2('\xC3','\x81'),        output2('\xC3','\x82'),
-            output2('\xC3','\x83'),        output2('\xC3','\x84'),
-            output2('\xC3','\x85'),        output2('\xC3','\x86'),
-            output2('\xC4','\xAE'),        output2('\xC4','\x8C'),
-            output2('\xC3','\x89'),        output2('\xC4','\x98'),
-            output2('\xC3','\x8B'),        output2('\xC4','\x96'),
-            output2('\xC3','\x8D'),        output2('\xC3','\x8E'),
-            output2('\xC3','\x8F'),        output2('\xC3','\x90'),
-            output2('\xC5','\x85'),        output2('\xC5','\x8C'),
-            output2('\xC3','\x93'),        output2('\xC3','\x94'),
-            output2('\xC3','\x95'),        output2('\xC3','\x96'),
-            output2('\xC5','\xA8'),        output2('\xC3','\x98'),
-            output2('\xC5','\xB2'),        output2('\xC3','\x9A'),
-            output2('\xC3','\x9B'),        output2('\xC3','\x9C'),
-            output2('\xC3','\x9D'),        output2('\xC3','\x9E'),
-            output2('\xC3','\x9F'),        output2('\xC4','\x81'),
-            output2('\xC3','\xA1'),        output2('\xC3','\xA2'),
-            output2('\xC3','\xA3'),        output2('\xC3','\xA4'),
-            output2('\xC3','\xA5'),        output2('\xC3','\xA6'),
-            output2('\xC4','\xAF'),        output2('\xC4','\x8D'),
-            output2('\xC3','\xA9'),        output2('\xC4','\x99'),
-            output2('\xC3','\xAB'),        output2('\xC4','\x97'),
-            output2('\xC3','\xAD'),        output2('\xC3','\xAE'),
-            output2('\xC3','\xAF'),        output2('\xC3','\xB0'),
-            output2('\xC5','\x86'),        output2('\xC5','\x8D'),
-            output2('\xC3','\xB3'),        output2('\xC3','\xB4'),
-            output2('\xC3','\xB5'),        output2('\xC3','\xB6'),
-            output2('\xC5','\xA9'),        output2('\xC3','\xB8'),
-            output2('\xC5','\xB3'),        output2('\xC3','\xBA'),
-            output2('\xC3','\xBB'),        output2('\xC3','\xBC'),
-            output2('\xC3','\xBD'),        output2('\xC3','\xBE'),
-            output2('\xC4','\xB8'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+            o2('\xC4','\x84'),        o2('\xC4','\x92'),
+            o2('\xC4','\xA2'),        o2('\xC4','\xAA'),
+            o2('\xC4','\xA8'),        o2('\xC4','\xB6'),
+            o2('\xC2','\xA7'),        o2('\xC4','\xBB'),
+            o2('\xC4','\x90'),        o2('\xC5','\xA0'),
+            o2('\xC5','\xA6'),        o2('\xC5','\xBD'),
+            o2('\xC2','\xAD'),        o2('\xC5','\xAA'),
+            o2('\xC5','\x8A'),        o2('\xC2','\xB0'),
+            o2('\xC4','\x85'),        o2('\xC4','\x93'),
+            o2('\xC4','\xA3'),        o2('\xC4','\xAB'),
+            o2('\xC4','\xA9'),        o2('\xC4','\xB7'),
+            o2('\xC2','\xB7'),        o2('\xC4','\xBC'),
+            o2('\xC4','\x91'),        o2('\xC5','\xA1'),
+            o2('\xC5','\xA7'),        o2('\xC5','\xBE'),
+     o3('\xE2','\x80','\x95'),        o2('\xC5','\xAB'),
+            o2('\xC5','\x8B'),        o2('\xC4','\x80'),
+            o2('\xC3','\x81'),        o2('\xC3','\x82'),
+            o2('\xC3','\x83'),        o2('\xC3','\x84'),
+            o2('\xC3','\x85'),        o2('\xC3','\x86'),
+            o2('\xC4','\xAE'),        o2('\xC4','\x8C'),
+            o2('\xC3','\x89'),        o2('\xC4','\x98'),
+            o2('\xC3','\x8B'),        o2('\xC4','\x96'),
+            o2('\xC3','\x8D'),        o2('\xC3','\x8E'),
+            o2('\xC3','\x8F'),        o2('\xC3','\x90'),
+            o2('\xC5','\x85'),        o2('\xC5','\x8C'),
+            o2('\xC3','\x93'),        o2('\xC3','\x94'),
+            o2('\xC3','\x95'),        o2('\xC3','\x96'),
+            o2('\xC5','\xA8'),        o2('\xC3','\x98'),
+            o2('\xC5','\xB2'),        o2('\xC3','\x9A'),
+            o2('\xC3','\x9B'),        o2('\xC3','\x9C'),
+            o2('\xC3','\x9D'),        o2('\xC3','\x9E'),
+            o2('\xC3','\x9F'),        o2('\xC4','\x81'),
+            o2('\xC3','\xA1'),        o2('\xC3','\xA2'),
+            o2('\xC3','\xA3'),        o2('\xC3','\xA4'),
+            o2('\xC3','\xA5'),        o2('\xC3','\xA6'),
+            o2('\xC4','\xAF'),        o2('\xC4','\x8D'),
+            o2('\xC3','\xA9'),        o2('\xC4','\x99'),
+            o2('\xC3','\xAB'),        o2('\xC4','\x97'),
+            o2('\xC3','\xAD'),        o2('\xC3','\xAE'),
+            o2('\xC3','\xAF'),        o2('\xC3','\xB0'),
+            o2('\xC5','\x86'),        o2('\xC5','\x8D'),
+            o2('\xC3','\xB3'),        o2('\xC3','\xB4'),
+            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
+            o2('\xC5','\xA9'),        o2('\xC3','\xB8'),
+            o2('\xC5','\xB3'),        o2('\xC3','\xBA'),
+            o2('\xC3','\xBB'),        o2('\xC3','\xBC'),
+            o2('\xC3','\xBD'),        o2('\xC3','\xBE'),
+            o2('\xC4','\xB8'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_10 = {
@@ -2097,16 +2097,16 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_10_C2_infos[37] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA7'), output1('\xAD'), output1('\xB0'),
-     output1('\xB7'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA7'), o1('\xAD'), o1('\xB0'),
+     o1('\xB7'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C2 = {
@@ -2123,18 +2123,18 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_10_C3_infos[45] = {
-     output1('\xC1'), output1('\xC2'), output1('\xC3'), output1('\xC4'),
-     output1('\xC5'), output1('\xC6'), output1('\xC9'), output1('\xCB'),
-     output1('\xCD'), output1('\xCE'), output1('\xCF'), output1('\xD0'),
-     output1('\xD3'), output1('\xD4'), output1('\xD5'), output1('\xD6'),
-     output1('\xD8'), output1('\xDA'), output1('\xDB'), output1('\xDC'),
-     output1('\xDD'), output1('\xDE'), output1('\xDF'), output1('\xE1'),
-     output1('\xE2'), output1('\xE3'), output1('\xE4'), output1('\xE5'),
-     output1('\xE6'), output1('\xE9'), output1('\xEB'), output1('\xED'),
-     output1('\xEE'), output1('\xEF'), output1('\xF0'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF8'),
-     output1('\xFA'), output1('\xFB'), output1('\xFC'), output1('\xFD'),
-     output1('\xFE'),
+     o1('\xC1'), o1('\xC2'), o1('\xC3'), o1('\xC4'),
+     o1('\xC5'), o1('\xC6'), o1('\xC9'), o1('\xCB'),
+     o1('\xCD'), o1('\xCE'), o1('\xCF'), o1('\xD0'),
+     o1('\xD3'), o1('\xD4'), o1('\xD5'), o1('\xD6'),
+     o1('\xD8'), o1('\xDA'), o1('\xDB'), o1('\xDC'),
+     o1('\xDD'), o1('\xDE'), o1('\xDF'), o1('\xE1'),
+     o1('\xE2'), o1('\xE3'), o1('\xE4'), o1('\xE5'),
+     o1('\xE6'), o1('\xE9'), o1('\xEB'), o1('\xED'),
+     o1('\xEE'), o1('\xEF'), o1('\xF0'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF8'),
+     o1('\xFA'), o1('\xFB'), o1('\xFC'), o1('\xFD'),
+     o1('\xFE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C3 = {
@@ -2151,13 +2151,13 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_10_C4_infos[27] = {
-     output1('\xC0'), output1('\xE0'), output1('\xA1'), output1('\xB1'),
-     output1('\xC8'), output1('\xE8'), output1('\xA9'), output1('\xB9'),
-     output1('\xA2'), output1('\xB2'), output1('\xCC'), output1('\xEC'),
-     output1('\xCA'), output1('\xEA'), output1('\xA3'), output1('\xB3'),
-     output1('\xA5'), output1('\xB5'), output1('\xA4'), output1('\xB4'),
-     output1('\xC7'), output1('\xE7'), output1('\xA6'), output1('\xB6'),
-     output1('\xFF'), output1('\xA8'), output1('\xB8'),
+     o1('\xC0'), o1('\xE0'), o1('\xA1'), o1('\xB1'),
+     o1('\xC8'), o1('\xE8'), o1('\xA9'), o1('\xB9'),
+     o1('\xA2'), o1('\xB2'), o1('\xCC'), o1('\xEC'),
+     o1('\xCA'), o1('\xEA'), o1('\xA3'), o1('\xB3'),
+     o1('\xA5'), o1('\xB5'), o1('\xA4'), o1('\xB4'),
+     o1('\xC7'), o1('\xE7'), o1('\xA6'), o1('\xB6'),
+     o1('\xFF'), o1('\xA8'), o1('\xB8'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C4 = {
@@ -2174,11 +2174,11 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_10_C5_infos[18] = {
-     output1('\xD1'), output1('\xF1'), output1('\xAF'), output1('\xBF'),
-     output1('\xD2'), output1('\xF2'), output1('\xAA'), output1('\xBA'),
-     output1('\xAB'), output1('\xBB'), output1('\xD7'), output1('\xF7'),
-     output1('\xAE'), output1('\xBE'), output1('\xD9'), output1('\xF9'),
-     output1('\xAC'), output1('\xBC'),
+     o1('\xD1'), o1('\xF1'), o1('\xAF'), o1('\xBF'),
+     o1('\xD2'), o1('\xF2'), o1('\xAA'), o1('\xBA'),
+     o1('\xAB'), o1('\xBB'), o1('\xD7'), o1('\xF7'),
+     o1('\xAE'), o1('\xBE'), o1('\xD9'), o1('\xF9'),
+     o1('\xAC'), o1('\xBC'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_C5 = {
@@ -2195,7 +2195,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_10_E2_80_infos[1] = {
-     output1('\xBD'),
+     o1('\xBD'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_10_E2_80 = {
@@ -2271,67 +2271,67 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_11_infos[121] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-     output3('\xE0','\xB8','\x81'), output3('\xE0','\xB8','\x82'),
-     output3('\xE0','\xB8','\x83'), output3('\xE0','\xB8','\x84'),
-     output3('\xE0','\xB8','\x85'), output3('\xE0','\xB8','\x86'),
-     output3('\xE0','\xB8','\x87'), output3('\xE0','\xB8','\x88'),
-     output3('\xE0','\xB8','\x89'), output3('\xE0','\xB8','\x8A'),
-     output3('\xE0','\xB8','\x8B'), output3('\xE0','\xB8','\x8C'),
-     output3('\xE0','\xB8','\x8D'), output3('\xE0','\xB8','\x8E'),
-     output3('\xE0','\xB8','\x8F'), output3('\xE0','\xB8','\x90'),
-     output3('\xE0','\xB8','\x91'), output3('\xE0','\xB8','\x92'),
-     output3('\xE0','\xB8','\x93'), output3('\xE0','\xB8','\x94'),
-     output3('\xE0','\xB8','\x95'), output3('\xE0','\xB8','\x96'),
-     output3('\xE0','\xB8','\x97'), output3('\xE0','\xB8','\x98'),
-     output3('\xE0','\xB8','\x99'), output3('\xE0','\xB8','\x9A'),
-     output3('\xE0','\xB8','\x9B'), output3('\xE0','\xB8','\x9C'),
-     output3('\xE0','\xB8','\x9D'), output3('\xE0','\xB8','\x9E'),
-     output3('\xE0','\xB8','\x9F'), output3('\xE0','\xB8','\xA0'),
-     output3('\xE0','\xB8','\xA1'), output3('\xE0','\xB8','\xA2'),
-     output3('\xE0','\xB8','\xA3'), output3('\xE0','\xB8','\xA4'),
-     output3('\xE0','\xB8','\xA5'), output3('\xE0','\xB8','\xA6'),
-     output3('\xE0','\xB8','\xA7'), output3('\xE0','\xB8','\xA8'),
-     output3('\xE0','\xB8','\xA9'), output3('\xE0','\xB8','\xAA'),
-     output3('\xE0','\xB8','\xAB'), output3('\xE0','\xB8','\xAC'),
-     output3('\xE0','\xB8','\xAD'), output3('\xE0','\xB8','\xAE'),
-     output3('\xE0','\xB8','\xAF'), output3('\xE0','\xB8','\xB0'),
-     output3('\xE0','\xB8','\xB1'), output3('\xE0','\xB8','\xB2'),
-     output3('\xE0','\xB8','\xB3'), output3('\xE0','\xB8','\xB4'),
-     output3('\xE0','\xB8','\xB5'), output3('\xE0','\xB8','\xB6'),
-     output3('\xE0','\xB8','\xB7'), output3('\xE0','\xB8','\xB8'),
-     output3('\xE0','\xB8','\xB9'), output3('\xE0','\xB8','\xBA'),
-     output3('\xE0','\xB8','\xBF'), output3('\xE0','\xB9','\x80'),
-     output3('\xE0','\xB9','\x81'), output3('\xE0','\xB9','\x82'),
-     output3('\xE0','\xB9','\x83'), output3('\xE0','\xB9','\x84'),
-     output3('\xE0','\xB9','\x85'), output3('\xE0','\xB9','\x86'),
-     output3('\xE0','\xB9','\x87'), output3('\xE0','\xB9','\x88'),
-     output3('\xE0','\xB9','\x89'), output3('\xE0','\xB9','\x8A'),
-     output3('\xE0','\xB9','\x8B'), output3('\xE0','\xB9','\x8C'),
-     output3('\xE0','\xB9','\x8D'), output3('\xE0','\xB9','\x8E'),
-     output3('\xE0','\xB9','\x8F'), output3('\xE0','\xB9','\x90'),
-     output3('\xE0','\xB9','\x91'), output3('\xE0','\xB9','\x92'),
-     output3('\xE0','\xB9','\x93'), output3('\xE0','\xB9','\x94'),
-     output3('\xE0','\xB9','\x95'), output3('\xE0','\xB9','\x96'),
-     output3('\xE0','\xB9','\x97'), output3('\xE0','\xB9','\x98'),
-     output3('\xE0','\xB9','\x99'), output3('\xE0','\xB9','\x9A'),
-     output3('\xE0','\xB9','\x9B'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+     o3('\xE0','\xB8','\x81'), o3('\xE0','\xB8','\x82'),
+     o3('\xE0','\xB8','\x83'), o3('\xE0','\xB8','\x84'),
+     o3('\xE0','\xB8','\x85'), o3('\xE0','\xB8','\x86'),
+     o3('\xE0','\xB8','\x87'), o3('\xE0','\xB8','\x88'),
+     o3('\xE0','\xB8','\x89'), o3('\xE0','\xB8','\x8A'),
+     o3('\xE0','\xB8','\x8B'), o3('\xE0','\xB8','\x8C'),
+     o3('\xE0','\xB8','\x8D'), o3('\xE0','\xB8','\x8E'),
+     o3('\xE0','\xB8','\x8F'), o3('\xE0','\xB8','\x90'),
+     o3('\xE0','\xB8','\x91'), o3('\xE0','\xB8','\x92'),
+     o3('\xE0','\xB8','\x93'), o3('\xE0','\xB8','\x94'),
+     o3('\xE0','\xB8','\x95'), o3('\xE0','\xB8','\x96'),
+     o3('\xE0','\xB8','\x97'), o3('\xE0','\xB8','\x98'),
+     o3('\xE0','\xB8','\x99'), o3('\xE0','\xB8','\x9A'),
+     o3('\xE0','\xB8','\x9B'), o3('\xE0','\xB8','\x9C'),
+     o3('\xE0','\xB8','\x9D'), o3('\xE0','\xB8','\x9E'),
+     o3('\xE0','\xB8','\x9F'), o3('\xE0','\xB8','\xA0'),
+     o3('\xE0','\xB8','\xA1'), o3('\xE0','\xB8','\xA2'),
+     o3('\xE0','\xB8','\xA3'), o3('\xE0','\xB8','\xA4'),
+     o3('\xE0','\xB8','\xA5'), o3('\xE0','\xB8','\xA6'),
+     o3('\xE0','\xB8','\xA7'), o3('\xE0','\xB8','\xA8'),
+     o3('\xE0','\xB8','\xA9'), o3('\xE0','\xB8','\xAA'),
+     o3('\xE0','\xB8','\xAB'), o3('\xE0','\xB8','\xAC'),
+     o3('\xE0','\xB8','\xAD'), o3('\xE0','\xB8','\xAE'),
+     o3('\xE0','\xB8','\xAF'), o3('\xE0','\xB8','\xB0'),
+     o3('\xE0','\xB8','\xB1'), o3('\xE0','\xB8','\xB2'),
+     o3('\xE0','\xB8','\xB3'), o3('\xE0','\xB8','\xB4'),
+     o3('\xE0','\xB8','\xB5'), o3('\xE0','\xB8','\xB6'),
+     o3('\xE0','\xB8','\xB7'), o3('\xE0','\xB8','\xB8'),
+     o3('\xE0','\xB8','\xB9'), o3('\xE0','\xB8','\xBA'),
+     o3('\xE0','\xB8','\xBF'), o3('\xE0','\xB9','\x80'),
+     o3('\xE0','\xB9','\x81'), o3('\xE0','\xB9','\x82'),
+     o3('\xE0','\xB9','\x83'), o3('\xE0','\xB9','\x84'),
+     o3('\xE0','\xB9','\x85'), o3('\xE0','\xB9','\x86'),
+     o3('\xE0','\xB9','\x87'), o3('\xE0','\xB9','\x88'),
+     o3('\xE0','\xB9','\x89'), o3('\xE0','\xB9','\x8A'),
+     o3('\xE0','\xB9','\x8B'), o3('\xE0','\xB9','\x8C'),
+     o3('\xE0','\xB9','\x8D'), o3('\xE0','\xB9','\x8E'),
+     o3('\xE0','\xB9','\x8F'), o3('\xE0','\xB9','\x90'),
+     o3('\xE0','\xB9','\x91'), o3('\xE0','\xB9','\x92'),
+     o3('\xE0','\xB9','\x93'), o3('\xE0','\xB9','\x94'),
+     o3('\xE0','\xB9','\x95'), o3('\xE0','\xB9','\x96'),
+     o3('\xE0','\xB9','\x97'), o3('\xE0','\xB9','\x98'),
+     o3('\xE0','\xB9','\x99'), o3('\xE0','\xB9','\x9A'),
+     o3('\xE0','\xB9','\x9B'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_11 = {
@@ -2348,15 +2348,15 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_11_C2_infos[33] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_C2 = {
@@ -2373,21 +2373,21 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_11_E0_B8_infos[59] = {
-     output1('\xA1'), output1('\xA2'), output1('\xA3'), output1('\xA4'),
-     output1('\xA5'), output1('\xA6'), output1('\xA7'), output1('\xA8'),
-     output1('\xA9'), output1('\xAA'), output1('\xAB'), output1('\xAC'),
-     output1('\xAD'), output1('\xAE'), output1('\xAF'), output1('\xB0'),
-     output1('\xB1'), output1('\xB2'), output1('\xB3'), output1('\xB4'),
-     output1('\xB5'), output1('\xB6'), output1('\xB7'), output1('\xB8'),
-     output1('\xB9'), output1('\xBA'), output1('\xBB'), output1('\xBC'),
-     output1('\xBD'), output1('\xBE'), output1('\xBF'), output1('\xC0'),
-     output1('\xC1'), output1('\xC2'), output1('\xC3'), output1('\xC4'),
-     output1('\xC5'), output1('\xC6'), output1('\xC7'), output1('\xC8'),
-     output1('\xC9'), output1('\xCA'), output1('\xCB'), output1('\xCC'),
-     output1('\xCD'), output1('\xCE'), output1('\xCF'), output1('\xD0'),
-     output1('\xD1'), output1('\xD2'), output1('\xD3'), output1('\xD4'),
-     output1('\xD5'), output1('\xD6'), output1('\xD7'), output1('\xD8'),
-     output1('\xD9'), output1('\xDA'), output1('\xDF'),
+     o1('\xA1'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
+     o1('\xA5'), o1('\xA6'), o1('\xA7'), o1('\xA8'),
+     o1('\xA9'), o1('\xAA'), o1('\xAB'), o1('\xAC'),
+     o1('\xAD'), o1('\xAE'), o1('\xAF'), o1('\xB0'),
+     o1('\xB1'), o1('\xB2'), o1('\xB3'), o1('\xB4'),
+     o1('\xB5'), o1('\xB6'), o1('\xB7'), o1('\xB8'),
+     o1('\xB9'), o1('\xBA'), o1('\xBB'), o1('\xBC'),
+     o1('\xBD'), o1('\xBE'), o1('\xBF'), o1('\xC0'),
+     o1('\xC1'), o1('\xC2'), o1('\xC3'), o1('\xC4'),
+     o1('\xC5'), o1('\xC6'), o1('\xC7'), o1('\xC8'),
+     o1('\xC9'), o1('\xCA'), o1('\xCB'), o1('\xCC'),
+     o1('\xCD'), o1('\xCE'), o1('\xCF'), o1('\xD0'),
+     o1('\xD1'), o1('\xD2'), o1('\xD3'), o1('\xD4'),
+     o1('\xD5'), o1('\xD6'), o1('\xD7'), o1('\xD8'),
+     o1('\xD9'), o1('\xDA'), o1('\xDF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_E0_B8 = {
@@ -2404,13 +2404,13 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_11_E0_B9_infos[28] = {
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
-     output1('\xF0'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF7'),
-     output1('\xF8'), output1('\xF9'), output1('\xFA'), output1('\xFB'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
+     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_11_E0_B9 = {
@@ -2485,71 +2485,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_13_infos[129] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-     output3('\xE2','\x80','\x9D'),        output2('\xC2','\xA2'),
-            output2('\xC2','\xA3'),        output2('\xC2','\xA4'),
-     output3('\xE2','\x80','\x9E'),        output2('\xC2','\xA6'),
-            output2('\xC2','\xA7'),        output2('\xC3','\x98'),
-            output2('\xC2','\xA9'),        output2('\xC5','\x96'),
-            output2('\xC2','\xAB'),        output2('\xC2','\xAC'),
-            output2('\xC2','\xAD'),        output2('\xC2','\xAE'),
-            output2('\xC3','\x86'),        output2('\xC2','\xB0'),
-            output2('\xC2','\xB1'),        output2('\xC2','\xB2'),
-            output2('\xC2','\xB3'), output3('\xE2','\x80','\x9C'),
-            output2('\xC2','\xB5'),        output2('\xC2','\xB6'),
-            output2('\xC2','\xB7'),        output2('\xC3','\xB8'),
-            output2('\xC2','\xB9'),        output2('\xC5','\x97'),
-            output2('\xC2','\xBB'),        output2('\xC2','\xBC'),
-            output2('\xC2','\xBD'),        output2('\xC2','\xBE'),
-            output2('\xC3','\xA6'),        output2('\xC4','\x84'),
-            output2('\xC4','\xAE'),        output2('\xC4','\x80'),
-            output2('\xC4','\x86'),        output2('\xC3','\x84'),
-            output2('\xC3','\x85'),        output2('\xC4','\x98'),
-            output2('\xC4','\x92'),        output2('\xC4','\x8C'),
-            output2('\xC3','\x89'),        output2('\xC5','\xB9'),
-            output2('\xC4','\x96'),        output2('\xC4','\xA2'),
-            output2('\xC4','\xB6'),        output2('\xC4','\xAA'),
-            output2('\xC4','\xBB'),        output2('\xC5','\xA0'),
-            output2('\xC5','\x83'),        output2('\xC5','\x85'),
-            output2('\xC3','\x93'),        output2('\xC5','\x8C'),
-            output2('\xC3','\x95'),        output2('\xC3','\x96'),
-            output2('\xC3','\x97'),        output2('\xC5','\xB2'),
-            output2('\xC5','\x81'),        output2('\xC5','\x9A'),
-            output2('\xC5','\xAA'),        output2('\xC3','\x9C'),
-            output2('\xC5','\xBB'),        output2('\xC5','\xBD'),
-            output2('\xC3','\x9F'),        output2('\xC4','\x85'),
-            output2('\xC4','\xAF'),        output2('\xC4','\x81'),
-            output2('\xC4','\x87'),        output2('\xC3','\xA4'),
-            output2('\xC3','\xA5'),        output2('\xC4','\x99'),
-            output2('\xC4','\x93'),        output2('\xC4','\x8D'),
-            output2('\xC3','\xA9'),        output2('\xC5','\xBA'),
-            output2('\xC4','\x97'),        output2('\xC4','\xA3'),
-            output2('\xC4','\xB7'),        output2('\xC4','\xAB'),
-            output2('\xC4','\xBC'),        output2('\xC5','\xA1'),
-            output2('\xC5','\x84'),        output2('\xC5','\x86'),
-            output2('\xC3','\xB3'),        output2('\xC5','\x8D'),
-            output2('\xC3','\xB5'),        output2('\xC3','\xB6'),
-            output2('\xC3','\xB7'),        output2('\xC5','\xB3'),
-            output2('\xC5','\x82'),        output2('\xC5','\x9B'),
-            output2('\xC5','\xAB'),        output2('\xC3','\xBC'),
-            output2('\xC5','\xBC'),        output2('\xC5','\xBE'),
-     output3('\xE2','\x80','\x99'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+     o3('\xE2','\x80','\x9D'),        o2('\xC2','\xA2'),
+            o2('\xC2','\xA3'),        o2('\xC2','\xA4'),
+     o3('\xE2','\x80','\x9E'),        o2('\xC2','\xA6'),
+            o2('\xC2','\xA7'),        o2('\xC3','\x98'),
+            o2('\xC2','\xA9'),        o2('\xC5','\x96'),
+            o2('\xC2','\xAB'),        o2('\xC2','\xAC'),
+            o2('\xC2','\xAD'),        o2('\xC2','\xAE'),
+            o2('\xC3','\x86'),        o2('\xC2','\xB0'),
+            o2('\xC2','\xB1'),        o2('\xC2','\xB2'),
+            o2('\xC2','\xB3'), o3('\xE2','\x80','\x9C'),
+            o2('\xC2','\xB5'),        o2('\xC2','\xB6'),
+            o2('\xC2','\xB7'),        o2('\xC3','\xB8'),
+            o2('\xC2','\xB9'),        o2('\xC5','\x97'),
+            o2('\xC2','\xBB'),        o2('\xC2','\xBC'),
+            o2('\xC2','\xBD'),        o2('\xC2','\xBE'),
+            o2('\xC3','\xA6'),        o2('\xC4','\x84'),
+            o2('\xC4','\xAE'),        o2('\xC4','\x80'),
+            o2('\xC4','\x86'),        o2('\xC3','\x84'),
+            o2('\xC3','\x85'),        o2('\xC4','\x98'),
+            o2('\xC4','\x92'),        o2('\xC4','\x8C'),
+            o2('\xC3','\x89'),        o2('\xC5','\xB9'),
+            o2('\xC4','\x96'),        o2('\xC4','\xA2'),
+            o2('\xC4','\xB6'),        o2('\xC4','\xAA'),
+            o2('\xC4','\xBB'),        o2('\xC5','\xA0'),
+            o2('\xC5','\x83'),        o2('\xC5','\x85'),
+            o2('\xC3','\x93'),        o2('\xC5','\x8C'),
+            o2('\xC3','\x95'),        o2('\xC3','\x96'),
+            o2('\xC3','\x97'),        o2('\xC5','\xB2'),
+            o2('\xC5','\x81'),        o2('\xC5','\x9A'),
+            o2('\xC5','\xAA'),        o2('\xC3','\x9C'),
+            o2('\xC5','\xBB'),        o2('\xC5','\xBD'),
+            o2('\xC3','\x9F'),        o2('\xC4','\x85'),
+            o2('\xC4','\xAF'),        o2('\xC4','\x81'),
+            o2('\xC4','\x87'),        o2('\xC3','\xA4'),
+            o2('\xC3','\xA5'),        o2('\xC4','\x99'),
+            o2('\xC4','\x93'),        o2('\xC4','\x8D'),
+            o2('\xC3','\xA9'),        o2('\xC5','\xBA'),
+            o2('\xC4','\x97'),        o2('\xC4','\xA3'),
+            o2('\xC4','\xB7'),        o2('\xC4','\xAB'),
+            o2('\xC4','\xBC'),        o2('\xC5','\xA1'),
+            o2('\xC5','\x84'),        o2('\xC5','\x86'),
+            o2('\xC3','\xB3'),        o2('\xC5','\x8D'),
+            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
+            o2('\xC3','\xB7'),        o2('\xC5','\xB3'),
+            o2('\xC5','\x82'),        o2('\xC5','\x9B'),
+            o2('\xC5','\xAB'),        o2('\xC3','\xBC'),
+            o2('\xC5','\xBC'),        o2('\xC5','\xBE'),
+     o3('\xE2','\x80','\x99'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_13 = {
@@ -2566,20 +2566,20 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_13_C2_infos[55] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA2'), output1('\xA3'), output1('\xA4'),
-     output1('\xA6'), output1('\xA7'), output1('\xA9'), output1('\xAB'),
-     output1('\xAC'), output1('\xAD'), output1('\xAE'), output1('\xB0'),
-     output1('\xB1'), output1('\xB2'), output1('\xB3'), output1('\xB5'),
-     output1('\xB6'), output1('\xB7'), output1('\xB9'), output1('\xBB'),
-     output1('\xBC'), output1('\xBD'), output1('\xBE'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA2'), o1('\xA3'), o1('\xA4'),
+     o1('\xA6'), o1('\xA7'), o1('\xA9'), o1('\xAB'),
+     o1('\xAC'), o1('\xAD'), o1('\xAE'), o1('\xB0'),
+     o1('\xB1'), o1('\xB2'), o1('\xB3'), o1('\xB5'),
+     o1('\xB6'), o1('\xB7'), o1('\xB9'), o1('\xBB'),
+     o1('\xBC'), o1('\xBD'), o1('\xBE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C2 = {
@@ -2596,12 +2596,12 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_13_C3_infos[21] = {
-     output1('\xC4'), output1('\xC5'), output1('\xAF'), output1('\xC9'),
-     output1('\xD3'), output1('\xD5'), output1('\xD6'), output1('\xD7'),
-     output1('\xA8'), output1('\xDC'), output1('\xDF'), output1('\xE4'),
-     output1('\xE5'), output1('\xBF'), output1('\xE9'), output1('\xF3'),
-     output1('\xF5'), output1('\xF6'), output1('\xF7'), output1('\xB8'),
-     output1('\xFC'),
+     o1('\xC4'), o1('\xC5'), o1('\xAF'), o1('\xC9'),
+     o1('\xD3'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
+     o1('\xA8'), o1('\xDC'), o1('\xDF'), o1('\xE4'),
+     o1('\xE5'), o1('\xBF'), o1('\xE9'), o1('\xF3'),
+     o1('\xF5'), o1('\xF6'), o1('\xF7'), o1('\xB8'),
+     o1('\xFC'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C3 = {
@@ -2618,12 +2618,12 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_13_C4_infos[24] = {
-     output1('\xC2'), output1('\xE2'), output1('\xC0'), output1('\xE0'),
-     output1('\xC3'), output1('\xE3'), output1('\xC8'), output1('\xE8'),
-     output1('\xC7'), output1('\xE7'), output1('\xCB'), output1('\xEB'),
-     output1('\xC6'), output1('\xE6'), output1('\xCC'), output1('\xEC'),
-     output1('\xCE'), output1('\xEE'), output1('\xC1'), output1('\xE1'),
-     output1('\xCD'), output1('\xED'), output1('\xCF'), output1('\xEF'),
+     o1('\xC2'), o1('\xE2'), o1('\xC0'), o1('\xE0'),
+     o1('\xC3'), o1('\xE3'), o1('\xC8'), o1('\xE8'),
+     o1('\xC7'), o1('\xE7'), o1('\xCB'), o1('\xEB'),
+     o1('\xC6'), o1('\xE6'), o1('\xCC'), o1('\xEC'),
+     o1('\xCE'), o1('\xEE'), o1('\xC1'), o1('\xE1'),
+     o1('\xCD'), o1('\xED'), o1('\xCF'), o1('\xEF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C4 = {
@@ -2640,12 +2640,12 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_13_C5_infos[24] = {
-     output1('\xD9'), output1('\xF9'), output1('\xD1'), output1('\xF1'),
-     output1('\xD2'), output1('\xF2'), output1('\xD4'), output1('\xF4'),
-     output1('\xAA'), output1('\xBA'), output1('\xDA'), output1('\xFA'),
-     output1('\xD0'), output1('\xF0'), output1('\xDB'), output1('\xFB'),
-     output1('\xD8'), output1('\xF8'), output1('\xCA'), output1('\xEA'),
-     output1('\xDD'), output1('\xFD'), output1('\xDE'), output1('\xFE'),
+     o1('\xD9'), o1('\xF9'), o1('\xD1'), o1('\xF1'),
+     o1('\xD2'), o1('\xF2'), o1('\xD4'), o1('\xF4'),
+     o1('\xAA'), o1('\xBA'), o1('\xDA'), o1('\xFA'),
+     o1('\xD0'), o1('\xF0'), o1('\xDB'), o1('\xFB'),
+     o1('\xD8'), o1('\xF8'), o1('\xCA'), o1('\xEA'),
+     o1('\xDD'), o1('\xFD'), o1('\xDE'), o1('\xFE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_C5 = {
@@ -2662,7 +2662,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_13_E2_80_infos[4] = {
-     output1('\xFF'), output1('\xB4'), output1('\xA1'), output1('\xA5'),
+     o1('\xFF'), o1('\xB4'), o1('\xA1'), o1('\xA5'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_13_E2_80 = {
@@ -2738,71 +2738,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_14_infos[129] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-     output3('\xE1','\xB8','\x82'), output3('\xE1','\xB8','\x83'),
-            output2('\xC2','\xA3'),        output2('\xC4','\x8A'),
-            output2('\xC4','\x8B'), output3('\xE1','\xB8','\x8A'),
-            output2('\xC2','\xA7'), output3('\xE1','\xBA','\x80'),
-            output2('\xC2','\xA9'), output3('\xE1','\xBA','\x82'),
-     output3('\xE1','\xB8','\x8B'), output3('\xE1','\xBB','\xB2'),
-            output2('\xC2','\xAD'),        output2('\xC2','\xAE'),
-            output2('\xC5','\xB8'), output3('\xE1','\xB8','\x9E'),
-     output3('\xE1','\xB8','\x9F'),        output2('\xC4','\xA0'),
-            output2('\xC4','\xA1'), output3('\xE1','\xB9','\x80'),
-     output3('\xE1','\xB9','\x81'),        output2('\xC2','\xB6'),
-     output3('\xE1','\xB9','\x96'), output3('\xE1','\xBA','\x81'),
-     output3('\xE1','\xB9','\x97'), output3('\xE1','\xBA','\x83'),
-     output3('\xE1','\xB9','\xA0'), output3('\xE1','\xBB','\xB3'),
-     output3('\xE1','\xBA','\x84'), output3('\xE1','\xBA','\x85'),
-     output3('\xE1','\xB9','\xA1'),        output2('\xC3','\x80'),
-            output2('\xC3','\x81'),        output2('\xC3','\x82'),
-            output2('\xC3','\x83'),        output2('\xC3','\x84'),
-            output2('\xC3','\x85'),        output2('\xC3','\x86'),
-            output2('\xC3','\x87'),        output2('\xC3','\x88'),
-            output2('\xC3','\x89'),        output2('\xC3','\x8A'),
-            output2('\xC3','\x8B'),        output2('\xC3','\x8C'),
-            output2('\xC3','\x8D'),        output2('\xC3','\x8E'),
-            output2('\xC3','\x8F'),        output2('\xC5','\xB4'),
-            output2('\xC3','\x91'),        output2('\xC3','\x92'),
-            output2('\xC3','\x93'),        output2('\xC3','\x94'),
-            output2('\xC3','\x95'),        output2('\xC3','\x96'),
-     output3('\xE1','\xB9','\xAA'),        output2('\xC3','\x98'),
-            output2('\xC3','\x99'),        output2('\xC3','\x9A'),
-            output2('\xC3','\x9B'),        output2('\xC3','\x9C'),
-            output2('\xC3','\x9D'),        output2('\xC5','\xB6'),
-            output2('\xC3','\x9F'),        output2('\xC3','\xA0'),
-            output2('\xC3','\xA1'),        output2('\xC3','\xA2'),
-            output2('\xC3','\xA3'),        output2('\xC3','\xA4'),
-            output2('\xC3','\xA5'),        output2('\xC3','\xA6'),
-            output2('\xC3','\xA7'),        output2('\xC3','\xA8'),
-            output2('\xC3','\xA9'),        output2('\xC3','\xAA'),
-            output2('\xC3','\xAB'),        output2('\xC3','\xAC'),
-            output2('\xC3','\xAD'),        output2('\xC3','\xAE'),
-            output2('\xC3','\xAF'),        output2('\xC5','\xB5'),
-            output2('\xC3','\xB1'),        output2('\xC3','\xB2'),
-            output2('\xC3','\xB3'),        output2('\xC3','\xB4'),
-            output2('\xC3','\xB5'),        output2('\xC3','\xB6'),
-     output3('\xE1','\xB9','\xAB'),        output2('\xC3','\xB8'),
-            output2('\xC3','\xB9'),        output2('\xC3','\xBA'),
-            output2('\xC3','\xBB'),        output2('\xC3','\xBC'),
-            output2('\xC3','\xBD'),        output2('\xC5','\xB7'),
-            output2('\xC3','\xBF'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+     o3('\xE1','\xB8','\x82'), o3('\xE1','\xB8','\x83'),
+            o2('\xC2','\xA3'),        o2('\xC4','\x8A'),
+            o2('\xC4','\x8B'), o3('\xE1','\xB8','\x8A'),
+            o2('\xC2','\xA7'), o3('\xE1','\xBA','\x80'),
+            o2('\xC2','\xA9'), o3('\xE1','\xBA','\x82'),
+     o3('\xE1','\xB8','\x8B'), o3('\xE1','\xBB','\xB2'),
+            o2('\xC2','\xAD'),        o2('\xC2','\xAE'),
+            o2('\xC5','\xB8'), o3('\xE1','\xB8','\x9E'),
+     o3('\xE1','\xB8','\x9F'),        o2('\xC4','\xA0'),
+            o2('\xC4','\xA1'), o3('\xE1','\xB9','\x80'),
+     o3('\xE1','\xB9','\x81'),        o2('\xC2','\xB6'),
+     o3('\xE1','\xB9','\x96'), o3('\xE1','\xBA','\x81'),
+     o3('\xE1','\xB9','\x97'), o3('\xE1','\xBA','\x83'),
+     o3('\xE1','\xB9','\xA0'), o3('\xE1','\xBB','\xB3'),
+     o3('\xE1','\xBA','\x84'), o3('\xE1','\xBA','\x85'),
+     o3('\xE1','\xB9','\xA1'),        o2('\xC3','\x80'),
+            o2('\xC3','\x81'),        o2('\xC3','\x82'),
+            o2('\xC3','\x83'),        o2('\xC3','\x84'),
+            o2('\xC3','\x85'),        o2('\xC3','\x86'),
+            o2('\xC3','\x87'),        o2('\xC3','\x88'),
+            o2('\xC3','\x89'),        o2('\xC3','\x8A'),
+            o2('\xC3','\x8B'),        o2('\xC3','\x8C'),
+            o2('\xC3','\x8D'),        o2('\xC3','\x8E'),
+            o2('\xC3','\x8F'),        o2('\xC5','\xB4'),
+            o2('\xC3','\x91'),        o2('\xC3','\x92'),
+            o2('\xC3','\x93'),        o2('\xC3','\x94'),
+            o2('\xC3','\x95'),        o2('\xC3','\x96'),
+     o3('\xE1','\xB9','\xAA'),        o2('\xC3','\x98'),
+            o2('\xC3','\x99'),        o2('\xC3','\x9A'),
+            o2('\xC3','\x9B'),        o2('\xC3','\x9C'),
+            o2('\xC3','\x9D'),        o2('\xC5','\xB6'),
+            o2('\xC3','\x9F'),        o2('\xC3','\xA0'),
+            o2('\xC3','\xA1'),        o2('\xC3','\xA2'),
+            o2('\xC3','\xA3'),        o2('\xC3','\xA4'),
+            o2('\xC3','\xA5'),        o2('\xC3','\xA6'),
+            o2('\xC3','\xA7'),        o2('\xC3','\xA8'),
+            o2('\xC3','\xA9'),        o2('\xC3','\xAA'),
+            o2('\xC3','\xAB'),        o2('\xC3','\xAC'),
+            o2('\xC3','\xAD'),        o2('\xC3','\xAE'),
+            o2('\xC3','\xAF'),        o2('\xC5','\xB5'),
+            o2('\xC3','\xB1'),        o2('\xC3','\xB2'),
+            o2('\xC3','\xB3'),        o2('\xC3','\xB4'),
+            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
+     o3('\xE1','\xB9','\xAB'),        o2('\xC3','\xB8'),
+            o2('\xC3','\xB9'),        o2('\xC3','\xBA'),
+            o2('\xC3','\xBB'),        o2('\xC3','\xBC'),
+            o2('\xC3','\xBD'),        o2('\xC5','\xB7'),
+            o2('\xC3','\xBF'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_14 = {
@@ -2819,16 +2819,16 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_C2_infos[39] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA3'), output1('\xA7'), output1('\xA9'),
-     output1('\xAD'), output1('\xAE'), output1('\xB6'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA3'), o1('\xA7'), o1('\xA9'),
+     o1('\xAD'), o1('\xAE'), o1('\xB6'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C2 = {
@@ -2845,21 +2845,21 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_C3_infos[58] = {
-     output1('\xC0'), output1('\xC1'), output1('\xC2'), output1('\xC3'),
-     output1('\xC4'), output1('\xC5'), output1('\xC6'), output1('\xC7'),
-     output1('\xC8'), output1('\xC9'), output1('\xCA'), output1('\xCB'),
-     output1('\xCC'), output1('\xCD'), output1('\xCE'), output1('\xCF'),
-     output1('\xD1'), output1('\xD2'), output1('\xD3'), output1('\xD4'),
-     output1('\xD5'), output1('\xD6'), output1('\xD8'), output1('\xD9'),
-     output1('\xDA'), output1('\xDB'), output1('\xDC'), output1('\xDD'),
-     output1('\xDF'), output1('\xE0'), output1('\xE1'), output1('\xE2'),
-     output1('\xE3'), output1('\xE4'), output1('\xE5'), output1('\xE6'),
-     output1('\xE7'), output1('\xE8'), output1('\xE9'), output1('\xEA'),
-     output1('\xEB'), output1('\xEC'), output1('\xED'), output1('\xEE'),
-     output1('\xEF'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF8'),
-     output1('\xF9'), output1('\xFA'), output1('\xFB'), output1('\xFC'),
-     output1('\xFD'), output1('\xFF'),
+     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
+     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
+     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
+     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
+     o1('\xD1'), o1('\xD2'), o1('\xD3'), o1('\xD4'),
+     o1('\xD5'), o1('\xD6'), o1('\xD8'), o1('\xD9'),
+     o1('\xDA'), o1('\xDB'), o1('\xDC'), o1('\xDD'),
+     o1('\xDF'), o1('\xE0'), o1('\xE1'), o1('\xE2'),
+     o1('\xE3'), o1('\xE4'), o1('\xE5'), o1('\xE6'),
+     o1('\xE7'), o1('\xE8'), o1('\xE9'), o1('\xEA'),
+     o1('\xEB'), o1('\xEC'), o1('\xED'), o1('\xEE'),
+     o1('\xEF'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF8'),
+     o1('\xF9'), o1('\xFA'), o1('\xFB'), o1('\xFC'),
+     o1('\xFD'), o1('\xFF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C3 = {
@@ -2876,7 +2876,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_C4_infos[4] = {
-     output1('\xA4'), output1('\xA5'), output1('\xB2'), output1('\xB3'),
+     o1('\xA4'), o1('\xA5'), o1('\xB2'), o1('\xB3'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C4 = {
@@ -2893,8 +2893,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_C5_infos[5] = {
-     output1('\xD0'), output1('\xF0'), output1('\xDE'), output1('\xFE'),
-     output1('\xAF'),
+     o1('\xD0'), o1('\xF0'), o1('\xDE'), o1('\xFE'),
+     o1('\xAF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_C5 = {
@@ -2911,8 +2911,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_E1_B8_infos[6] = {
-     output1('\xA1'), output1('\xA2'), output1('\xA6'), output1('\xAB'),
-     output1('\xB0'), output1('\xB1'),
+     o1('\xA1'), o1('\xA2'), o1('\xA6'), o1('\xAB'),
+     o1('\xB0'), o1('\xB1'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_B8 = {
@@ -2929,8 +2929,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_E1_B9_infos[8] = {
-     output1('\xB4'), output1('\xB5'), output1('\xB7'), output1('\xB9'),
-     output1('\xBB'), output1('\xBF'), output1('\xD7'), output1('\xF7'),
+     o1('\xB4'), o1('\xB5'), o1('\xB7'), o1('\xB9'),
+     o1('\xBB'), o1('\xBF'), o1('\xD7'), o1('\xF7'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_B9 = {
@@ -2947,8 +2947,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_E1_BA_infos[6] = {
-     output1('\xA8'), output1('\xB8'), output1('\xAA'), output1('\xBA'),
-     output1('\xBD'), output1('\xBE'),
+     o1('\xA8'), o1('\xB8'), o1('\xAA'), o1('\xBA'),
+     o1('\xBD'), o1('\xBE'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_BA = {
@@ -2965,7 +2965,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_14_E1_BB_infos[2] = {
-     output1('\xAC'), output1('\xBC'),
+     o1('\xAC'), o1('\xBC'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_14_E1_BB = {
@@ -3042,71 +3042,71 @@
 };
 static const struct byte_lookup* const
 from_ISO_8859_15_infos[129] = {
-                             NOMAP,        output2('\xC2','\x80'),
-            output2('\xC2','\x81'),        output2('\xC2','\x82'),
-            output2('\xC2','\x83'),        output2('\xC2','\x84'),
-            output2('\xC2','\x85'),        output2('\xC2','\x86'),
-            output2('\xC2','\x87'),        output2('\xC2','\x88'),
-            output2('\xC2','\x89'),        output2('\xC2','\x8A'),
-            output2('\xC2','\x8B'),        output2('\xC2','\x8C'),
-            output2('\xC2','\x8D'),        output2('\xC2','\x8E'),
-            output2('\xC2','\x8F'),        output2('\xC2','\x90'),
-            output2('\xC2','\x91'),        output2('\xC2','\x92'),
-            output2('\xC2','\x93'),        output2('\xC2','\x94'),
-            output2('\xC2','\x95'),        output2('\xC2','\x96'),
-            output2('\xC2','\x97'),        output2('\xC2','\x98'),
-            output2('\xC2','\x99'),        output2('\xC2','\x9A'),
-            output2('\xC2','\x9B'),        output2('\xC2','\x9C'),
-            output2('\xC2','\x9D'),        output2('\xC2','\x9E'),
-            output2('\xC2','\x9F'),        output2('\xC2','\xA0'),
-            output2('\xC2','\xA1'),        output2('\xC2','\xA2'),
-            output2('\xC2','\xA3'), output3('\xE2','\x82','\xAC'),
-            output2('\xC2','\xA5'),        output2('\xC5','\xA0'),
-            output2('\xC2','\xA7'),        output2('\xC5','\xA1'),
-            output2('\xC2','\xA9'),        output2('\xC2','\xAA'),
-            output2('\xC2','\xAB'),        output2('\xC2','\xAC'),
-            output2('\xC2','\xAD'),        output2('\xC2','\xAE'),
-            output2('\xC2','\xAF'),        output2('\xC2','\xB0'),
-            output2('\xC2','\xB1'),        output2('\xC2','\xB2'),
-            output2('\xC2','\xB3'),        output2('\xC5','\xBD'),
-            output2('\xC2','\xB5'),        output2('\xC2','\xB6'),
-            output2('\xC2','\xB7'),        output2('\xC5','\xBE'),
-            output2('\xC2','\xB9'),        output2('\xC2','\xBA'),
-            output2('\xC2','\xBB'),        output2('\xC5','\x92'),
-            output2('\xC5','\x93'),        output2('\xC5','\xB8'),
-            output2('\xC2','\xBF'),        output2('\xC3','\x80'),
-            output2('\xC3','\x81'),        output2('\xC3','\x82'),
-            output2('\xC3','\x83'),        output2('\xC3','\x84'),
-            output2('\xC3','\x85'),        output2('\xC3','\x86'),
-            output2('\xC3','\x87'),        output2('\xC3','\x88'),
-            output2('\xC3','\x89'),        output2('\xC3','\x8A'),
-            output2('\xC3','\x8B'),        output2('\xC3','\x8C'),
-            output2('\xC3','\x8D'),        output2('\xC3','\x8E'),
-            output2('\xC3','\x8F'),        output2('\xC3','\x90'),
-            output2('\xC3','\x91'),        output2('\xC3','\x92'),
-            output2('\xC3','\x93'),        output2('\xC3','\x94'),
-            output2('\xC3','\x95'),        output2('\xC3','\x96'),
-            output2('\xC3','\x97'),        output2('\xC3','\x98'),
-            output2('\xC3','\x99'),        output2('\xC3','\x9A'),
-            output2('\xC3','\x9B'),        output2('\xC3','\x9C'),
-            output2('\xC3','\x9D'),        output2('\xC3','\x9E'),
-            output2('\xC3','\x9F'),        output2('\xC3','\xA0'),
-            output2('\xC3','\xA1'),        output2('\xC3','\xA2'),
-            output2('\xC3','\xA3'),        output2('\xC3','\xA4'),
-            output2('\xC3','\xA5'),        output2('\xC3','\xA6'),
-            output2('\xC3','\xA7'),        output2('\xC3','\xA8'),
-            output2('\xC3','\xA9'),        output2('\xC3','\xAA'),
-            output2('\xC3','\xAB'),        output2('\xC3','\xAC'),
-            output2('\xC3','\xAD'),        output2('\xC3','\xAE'),
-            output2('\xC3','\xAF'),        output2('\xC3','\xB0'),
-            output2('\xC3','\xB1'),        output2('\xC3','\xB2'),
-            output2('\xC3','\xB3'),        output2('\xC3','\xB4'),
-            output2('\xC3','\xB5'),        output2('\xC3','\xB6'),
-            output2('\xC3','\xB7'),        output2('\xC3','\xB8'),
-            output2('\xC3','\xB9'),        output2('\xC3','\xBA'),
-            output2('\xC3','\xBB'),        output2('\xC3','\xBC'),
-            output2('\xC3','\xBD'),        output2('\xC3','\xBE'),
-            output2('\xC3','\xBF'),
+                             NOMAP,        o2('\xC2','\x80'),
+            o2('\xC2','\x81'),        o2('\xC2','\x82'),
+            o2('\xC2','\x83'),        o2('\xC2','\x84'),
+            o2('\xC2','\x85'),        o2('\xC2','\x86'),
+            o2('\xC2','\x87'),        o2('\xC2','\x88'),
+            o2('\xC2','\x89'),        o2('\xC2','\x8A'),
+            o2('\xC2','\x8B'),        o2('\xC2','\x8C'),
+            o2('\xC2','\x8D'),        o2('\xC2','\x8E'),
+            o2('\xC2','\x8F'),        o2('\xC2','\x90'),
+            o2('\xC2','\x91'),        o2('\xC2','\x92'),
+            o2('\xC2','\x93'),        o2('\xC2','\x94'),
+            o2('\xC2','\x95'),        o2('\xC2','\x96'),
+            o2('\xC2','\x97'),        o2('\xC2','\x98'),
+            o2('\xC2','\x99'),        o2('\xC2','\x9A'),
+            o2('\xC2','\x9B'),        o2('\xC2','\x9C'),
+            o2('\xC2','\x9D'),        o2('\xC2','\x9E'),
+            o2('\xC2','\x9F'),        o2('\xC2','\xA0'),
+            o2('\xC2','\xA1'),        o2('\xC2','\xA2'),
+            o2('\xC2','\xA3'), o3('\xE2','\x82','\xAC'),
+            o2('\xC2','\xA5'),        o2('\xC5','\xA0'),
+            o2('\xC2','\xA7'),        o2('\xC5','\xA1'),
+            o2('\xC2','\xA9'),        o2('\xC2','\xAA'),
+            o2('\xC2','\xAB'),        o2('\xC2','\xAC'),
+            o2('\xC2','\xAD'),        o2('\xC2','\xAE'),
+            o2('\xC2','\xAF'),        o2('\xC2','\xB0'),
+            o2('\xC2','\xB1'),        o2('\xC2','\xB2'),
+            o2('\xC2','\xB3'),        o2('\xC5','\xBD'),
+            o2('\xC2','\xB5'),        o2('\xC2','\xB6'),
+            o2('\xC2','\xB7'),        o2('\xC5','\xBE'),
+            o2('\xC2','\xB9'),        o2('\xC2','\xBA'),
+            o2('\xC2','\xBB'),        o2('\xC5','\x92'),
+            o2('\xC5','\x93'),        o2('\xC5','\xB8'),
+            o2('\xC2','\xBF'),        o2('\xC3','\x80'),
+            o2('\xC3','\x81'),        o2('\xC3','\x82'),
+            o2('\xC3','\x83'),        o2('\xC3','\x84'),
+            o2('\xC3','\x85'),        o2('\xC3','\x86'),
+            o2('\xC3','\x87'),        o2('\xC3','\x88'),
+            o2('\xC3','\x89'),        o2('\xC3','\x8A'),
+            o2('\xC3','\x8B'),        o2('\xC3','\x8C'),
+            o2('\xC3','\x8D'),        o2('\xC3','\x8E'),
+            o2('\xC3','\x8F'),        o2('\xC3','\x90'),
+            o2('\xC3','\x91'),        o2('\xC3','\x92'),
+            o2('\xC3','\x93'),        o2('\xC3','\x94'),
+            o2('\xC3','\x95'),        o2('\xC3','\x96'),
+            o2('\xC3','\x97'),        o2('\xC3','\x98'),
+            o2('\xC3','\x99'),        o2('\xC3','\x9A'),
+            o2('\xC3','\x9B'),        o2('\xC3','\x9C'),
+            o2('\xC3','\x9D'),        o2('\xC3','\x9E'),
+            o2('\xC3','\x9F'),        o2('\xC3','\xA0'),
+            o2('\xC3','\xA1'),        o2('\xC3','\xA2'),
+            o2('\xC3','\xA3'),        o2('\xC3','\xA4'),
+            o2('\xC3','\xA5'),        o2('\xC3','\xA6'),
+            o2('\xC3','\xA7'),        o2('\xC3','\xA8'),
+            o2('\xC3','\xA9'),        o2('\xC3','\xAA'),
+            o2('\xC3','\xAB'),        o2('\xC3','\xAC'),
+            o2('\xC3','\xAD'),        o2('\xC3','\xAE'),
+            o2('\xC3','\xAF'),        o2('\xC3','\xB0'),
+            o2('\xC3','\xB1'),        o2('\xC3','\xB2'),
+            o2('\xC3','\xB3'),        o2('\xC3','\xB4'),
+            o2('\xC3','\xB5'),        o2('\xC3','\xB6'),
+            o2('\xC3','\xB7'),        o2('\xC3','\xB8'),
+            o2('\xC3','\xB9'),        o2('\xC3','\xBA'),
+            o2('\xC3','\xBB'),        o2('\xC3','\xBC'),
+            o2('\xC3','\xBD'),        o2('\xC3','\xBE'),
+            o2('\xC3','\xBF'),
 };
 const BYTE_LOOKUP
 from_ISO_8859_15 = {
@@ -3123,20 +3123,20 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_15_C2_infos[56] = {
-     output1('\x80'), output1('\x81'), output1('\x82'), output1('\x83'),
-     output1('\x84'), output1('\x85'), output1('\x86'), output1('\x87'),
-     output1('\x88'), output1('\x89'), output1('\x8A'), output1('\x8B'),
-     output1('\x8C'), output1('\x8D'), output1('\x8E'), output1('\x8F'),
-     output1('\x90'), output1('\x91'), output1('\x92'), output1('\x93'),
-     output1('\x94'), output1('\x95'), output1('\x96'), output1('\x97'),
-     output1('\x98'), output1('\x99'), output1('\x9A'), output1('\x9B'),
-     output1('\x9C'), output1('\x9D'), output1('\x9E'), output1('\x9F'),
-     output1('\xA0'), output1('\xA1'), output1('\xA2'), output1('\xA3'),
-     output1('\xA5'), output1('\xA7'), output1('\xA9'), output1('\xAA'),
-     output1('\xAB'), output1('\xAC'), output1('\xAD'), output1('\xAE'),
-     output1('\xAF'), output1('\xB0'), output1('\xB1'), output1('\xB2'),
-     output1('\xB3'), output1('\xB5'), output1('\xB6'), output1('\xB7'),
-     output1('\xB9'), output1('\xBA'), output1('\xBB'), output1('\xBF'),
+     o1('\x80'), o1('\x81'), o1('\x82'), o1('\x83'),
+     o1('\x84'), o1('\x85'), o1('\x86'), o1('\x87'),
+     o1('\x88'), o1('\x89'), o1('\x8A'), o1('\x8B'),
+     o1('\x8C'), o1('\x8D'), o1('\x8E'), o1('\x8F'),
+     o1('\x90'), o1('\x91'), o1('\x92'), o1('\x93'),
+     o1('\x94'), o1('\x95'), o1('\x96'), o1('\x97'),
+     o1('\x98'), o1('\x99'), o1('\x9A'), o1('\x9B'),
+     o1('\x9C'), o1('\x9D'), o1('\x9E'), o1('\x9F'),
+     o1('\xA0'), o1('\xA1'), o1('\xA2'), o1('\xA3'),
+     o1('\xA5'), o1('\xA7'), o1('\xA9'), o1('\xAA'),
+     o1('\xAB'), o1('\xAC'), o1('\xAD'), o1('\xAE'),
+     o1('\xAF'), o1('\xB0'), o1('\xB1'), o1('\xB2'),
+     o1('\xB3'), o1('\xB5'), o1('\xB6'), o1('\xB7'),
+     o1('\xB9'), o1('\xBA'), o1('\xBB'), o1('\xBF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_C2 = {
@@ -3153,22 +3153,22 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_15_C3_infos[64] = {
-     output1('\xC0'), output1('\xC1'), output1('\xC2'), output1('\xC3'),
-     output1('\xC4'), output1('\xC5'), output1('\xC6'), output1('\xC7'),
-     output1('\xC8'), output1('\xC9'), output1('\xCA'), output1('\xCB'),
-     output1('\xCC'), output1('\xCD'), output1('\xCE'), output1('\xCF'),
-     output1('\xD0'), output1('\xD1'), output1('\xD2'), output1('\xD3'),
-     output1('\xD4'), output1('\xD5'), output1('\xD6'), output1('\xD7'),
-     output1('\xD8'), output1('\xD9'), output1('\xDA'), output1('\xDB'),
-     output1('\xDC'), output1('\xDD'), output1('\xDE'), output1('\xDF'),
-     output1('\xE0'), output1('\xE1'), output1('\xE2'), output1('\xE3'),
-     output1('\xE4'), output1('\xE5'), output1('\xE6'), output1('\xE7'),
-     output1('\xE8'), output1('\xE9'), output1('\xEA'), output1('\xEB'),
-     output1('\xEC'), output1('\xED'), output1('\xEE'), output1('\xEF'),
-     output1('\xF0'), output1('\xF1'), output1('\xF2'), output1('\xF3'),
-     output1('\xF4'), output1('\xF5'), output1('\xF6'), output1('\xF7'),
-     output1('\xF8'), output1('\xF9'), output1('\xFA'), output1('\xFB'),
-     output1('\xFC'), output1('\xFD'), output1('\xFE'), output1('\xFF'),
+     o1('\xC0'), o1('\xC1'), o1('\xC2'), o1('\xC3'),
+     o1('\xC4'), o1('\xC5'), o1('\xC6'), o1('\xC7'),
+     o1('\xC8'), o1('\xC9'), o1('\xCA'), o1('\xCB'),
+     o1('\xCC'), o1('\xCD'), o1('\xCE'), o1('\xCF'),
+     o1('\xD0'), o1('\xD1'), o1('\xD2'), o1('\xD3'),
+     o1('\xD4'), o1('\xD5'), o1('\xD6'), o1('\xD7'),
+     o1('\xD8'), o1('\xD9'), o1('\xDA'), o1('\xDB'),
+     o1('\xDC'), o1('\xDD'), o1('\xDE'), o1('\xDF'),
+     o1('\xE0'), o1('\xE1'), o1('\xE2'), o1('\xE3'),
+     o1('\xE4'), o1('\xE5'), o1('\xE6'), o1('\xE7'),
+     o1('\xE8'), o1('\xE9'), o1('\xEA'), o1('\xEB'),
+     o1('\xEC'), o1('\xED'), o1('\xEE'), o1('\xEF'),
+     o1('\xF0'), o1('\xF1'), o1('\xF2'), o1('\xF3'),
+     o1('\xF4'), o1('\xF5'), o1('\xF6'), o1('\xF7'),
+     o1('\xF8'), o1('\xF9'), o1('\xFA'), o1('\xFB'),
+     o1('\xFC'), o1('\xFD'), o1('\xFE'), o1('\xFF'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_C3 = {
@@ -3185,8 +3185,8 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_15_C5_infos[7] = {
-     output1('\xBC'), output1('\xBD'), output1('\xA6'), output1('\xA8'),
-     output1('\xBE'), output1('\xB4'), output1('\xB8'),
+     o1('\xBC'), o1('\xBD'), o1('\xA6'), o1('\xA8'),
+     o1('\xBE'), o1('\xB4'), o1('\xB8'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_C5 = {
@@ -3203,7 +3203,7 @@
 };
 static const struct byte_lookup* const
 to_ISO_8859_15_E2_82_infos[1] = {
-     output1('\xA4'),
+     o1('\xA4'),
 };
 static const BYTE_LOOKUP
 to_ISO_8859_15_E2_82 = {
Index: transcode_data.h
===================================================================
--- transcode_data.h	(revision 14235)
+++ transcode_data.h	(revision 14236)
@@ -22,10 +22,10 @@
 #define UNDEF   (PType 0x09)   /* legal but undefined */
 #define ZERObt  (PType 0x0A)   /* zero bytes of payload, i.e. remove */
 
-#define output1(b1)          ((const BYTE_LOOKUP *)((((unsigned char)(b1))<<8)|ONEbt))
-#define output2(b1,b2)       ((const BYTE_LOOKUP *)((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|TWObt))
-#define output3(b1,b2,b3)    ((const BYTE_LOOKUP *)((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|(((unsigned char)(b3))<<24)|THREEbt))
-#define output4(b0,b1,b2,b3) ((const BYTE_LOOKUP *)((((unsigned char)(b1))<< 8)|(((unsigned char)(b2))<<16)|(((unsigned char)(b3))<<24)|((((unsigned char)(b0))&0x07)<<5)|FOURbt))
+#define o1(b1)          ((const BYTE_LOOKUP *)((((unsigned char)(b1))<<8)|ONEbt))
+#define o2(b1,b2)       ((const BYTE_LOOKUP *)((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|TWObt))
+#define o3(b1,b2,b3)    ((const BYTE_LOOKUP *)((((unsigned char)(b1))<<8)|(((unsigned char)(b2))<<16)|(((unsigned char)(b3))<<24)|THREEbt))
+#define o4(b0,b1,b2,b3) ((const BYTE_LOOKUP *)((((unsigned char)(b1))<< 8)|(((unsigned char)(b2))<<16)|(((unsigned char)(b3))<<24)|((((unsigned char)(b0))&0x07)<<5)|FOURbt))
 
 #define getBT1(a)      (((a)>> 8)&0xFF)
 #define getBT2(a)      (((a)>>16)&0xFF)
Index: test/ruby/test_transcode.rb
===================================================================
--- test/ruby/test_transcode.rb	(revision 14235)
+++ test/ruby/test_transcode.rb	(revision 14236)
@@ -1,8 +1,22 @@
-# -*- encoding: US-ASCII -*-   # make sure this runs in binary mode
+# -*- encoding: ASCII-8BIT -*-   # make sure this runs in binary mode
 
 require 'test/unit'
-class TestConvert < Test::Unit::TestCase
-  def test_basic
+class TestTranscode < Test::Unit::TestCase
+  def setup # trick to create all the necessary encodings
+    all_encodings = [ 'ISO-8859-1', 'ISO-8859-2',
+                      'ISO-8859-3', 'ISO-8859-4',
+                      'ISO-8859-5', 'ISO-8859-6',
+                      'ISO-8859-7', 'ISO-8859-8',
+                      'ISO-8859-9', 'ISO-8859-10',
+                      'ISO-8859-11', 'ISO-8859-13',
+                      'ISO-8859-14', 'ISO-8859-15'
+                    ]
+    all_encodings.each do |enc|
+      'abc'.encode(enc, 'UTF-8')
+    end
+  end
+
+  def test_errors
     # we don't have semantics for conversion without attribute yet
     # maybe 'convert to UTF-8' would be nice :-)
     assert_raise(ArgumentError) { 'abc'.encode }
@@ -13,43 +27,63 @@
     assert_raise(ArgumentError) { 'abc'.encode!('foo', 'bar') }
     assert_raise(ArgumentError) { 'abc'.force_encoding('utf-8').encode('foo') }
     assert_raise(ArgumentError) { 'abc'.force_encoding('utf-8').encode!('foo') }
-    assert_equal('abc'.force_encoding('utf-8').encode('iso-8859-1'), 'abc')
+  end
+
+  def test_arguments
+    assert_equal('abc', 'abc'.force_encoding('utf-8').encode('iso-8859-1'))
     # check that encoding is kept when no conversion is done
-    assert_equal('abc'.force_encoding('Shift_JIS').encode('Shift_JIS'), 'abc'.force_encoding('Shift_JIS'))
-    assert_equal('abc'.force_encoding('Shift_JIS').encode!('Shift_JIS'), 'abc'.force_encoding('Shift_JIS'))
+    assert_equal('abc'.force_encoding('Shift_JIS'), 'abc'.force_encoding('Shift_JIS').encode('Shift_JIS'))
+    assert_equal('abc'.force_encoding('Shift_JIS'), 'abc'.force_encoding('Shift_JIS').encode!('Shift_JIS'))
     # assert that encoding is correctly set
-    assert_equal("D\xFCrst".force_encoding('iso-8859-1').encode('utf-8').encoding, "D\u00FCrst".encoding)
+    assert_equal("D\u00FCrst".encoding, "D\xFCrst".force_encoding('iso-8859-1').encode('utf-8').encoding)
     # check that Encoding can be used as parameter
-    assert_equal("D\xFCrst".encode('utf-8', Encoding.find('ISO-8859-1')), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode(Encoding.find('utf-8'), 'ISO-8859-1'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode(Encoding.find('utf-8'), Encoding.find('ISO-8859-1')), "D\u00FCrst")
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', Encoding.find('ISO-8859-1')))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode(Encoding.find('utf-8'), 'ISO-8859-1'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode(Encoding.find('utf-8'), Encoding.find('ISO-8859-1')))
+  end
 
+  def test_length
+    assert_equal("\u20AC"*20, ("\xA4"*20).encode('utf-8', 'iso-8859-15'))
+    assert_equal("\u20AC"*20, ("\xA4"*20).encode!('utf-8', 'iso-8859-15'))
+    assert_equal("\u20AC"*2000, ("\xA4"*2000).encode('utf-8', 'iso-8859-15'))
+    assert_equal("\u20AC"*2000, ("\xA4"*2000).encode!('utf-8', 'iso-8859-15'))
+    assert_equal("\u20AC"*200000, ("\xA4"*200000).encode('utf-8', 'iso-8859-15'))
+    assert_equal("\u20AC"*200000, ("\xA4"*200000).encode!('utf-8', 'iso-8859-15'))
+  end
+  
+  def test_encodings
     # temporary, fix encoding
-    assert_equal("D\xFCrst".force_encoding('iso-8859-1').encode('utf-8'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-1'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-2'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-3'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-4'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-9'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-10'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-13'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-14'), "D\u00FCrst")
-    assert_equal("D\xFCrst".encode('utf-8', 'iso-8859-15'), "D\u00FCrst")
-    assert_equal("D\u00FCrst".encode('iso-8859-1'), "D\xFCrst".force_encoding('iso-8859-1'))
-    assert_equal("D\u00FCrst".encode('iso-8859-2'), "D\xFCrst".force_encoding('iso-8859-2'))
-    assert_equal("D\u00FCrst".encode('iso-8859-3'), "D\xFCrst".force_encoding('iso-8859-3'))
-    assert_equal("D\u00FCrst".encode('iso-8859-4'), "D\xFCrst".force_encoding('iso-8859-4'))
-    assert_equal("D\u00FCrst".encode('iso-8859-9'), "D\xFCrst".force_encoding('iso-8859-9'))
-    assert_equal("D\u00FCrst".encode('iso-8859-10'), "D\xFCrst".force_encoding('iso-8859-10'))
-    assert_equal("D\u00FCrst".encode('iso-8859-13'), "D\xFCrst".force_encoding('iso-8859-13'))
-    assert_equal("D\u00FCrst".encode('iso-8859-14'), "D\xFCrst".force_encoding('iso-8859-14'))
-    assert_equal("D\u00FCrst".encode('iso-8859-15'), "D\xFCrst".force_encoding('iso-8859-15'))
-    # test length extension
-    assert_equal(("\xA4"*20).encode('utf-8', 'iso-8859-15'), "\u20AC"*20)
-    assert_equal(("\xA4"*20).encode!('utf-8', 'iso-8859-15'), "\u20AC"*20)
-    
+    assert_equal("D\u00FCrst", "D\xFCrst".force_encoding('iso-8859-1').encode('utf-8'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-1'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-2'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-3'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-4'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-9'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-10'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-13'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-14'))
+    assert_equal("D\u00FCrst", "D\xFCrst".encode('utf-8', 'iso-8859-15'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-1'), "D\u00FCrst".encode('iso-8859-1'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-2'), "D\u00FCrst".encode('iso-8859-2'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-3').encoding, "D\u00FCrst".encode('iso-8859-3').encoding)
+    assert_equal("D\xFCrst".force_encoding('iso-8859-4'), "D\u00FCrst".encode('iso-8859-4'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-9'), "D\u00FCrst".encode('iso-8859-9'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-10'), "D\u00FCrst".encode('iso-8859-10'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-13'), "D\u00FCrst".encode('iso-8859-13'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-14'), "D\u00FCrst".encode('iso-8859-14'))
+    assert_equal("D\xFCrst".force_encoding('iso-8859-15'), "D\u00FCrst".encode('iso-8859-15'))
+    assert_equal("r\xE9sum\xE9".force_encoding('iso-8859-1'), "r\u00E9sum\u00E9".encode('iso-8859-1'))
+    assert_equal("el\xF5\xEDr\xE1s".force_encoding('iso-8859-2'),
+        "\u0065\u006C\u0151\u00ED\u0072\u00E1\u0073".encode('iso-8859-2'))
+    assert_equal("\xE3\xCA\xC8".force_encoding('iso-8859-6'), "\u0643\u062A\u0628".encode('iso-8859-6'))
+    assert_equal( "\xDF\xD5\xE0\xD5\xD2\xDE\xD4".force_encoding('iso-8859-5'),
+        "\u043F\u0435\u0440\u0435\u0432\u043E\u0434".encode('iso-8859-5'))
   end
-  
+
+  def test_twostep
+    assert_equal("D\xFCrst".force_encoding('iso-8859-2'), "D\xFCrst".encode('iso-8859-2', 'iso-8859-1'))
+  end
+
   def test_all_bytes
     encodings_8859 = [
       'ISO-8859-1', 'ISO-8859-2',
@@ -69,7 +103,7 @@
     test_start.encode('UTF-8','ISO-8859-1').encode('ISO-8859-1')
     encodings_8859.each do |enc|
       test_start = all_bytes
-      assert_equal(test_start.encode('UTF-8',enc).encode(enc).force_encoding('ASCII-8BIT'), test_start) 
+      assert_equal(test_start, test_start.encode('UTF-8',enc).encode(enc).force_encoding('ASCII-8BIT')) 
     end
   end
 end
Index: transcode.c
===================================================================
--- transcode.c	(revision 14235)
+++ transcode.c	(revision 14236)
@@ -81,8 +81,8 @@
 {
     static int n = 0;
     if (n >= MAX_TRANSCODERS) {
-        /* we are initializing, is it okay to use rb_raise here? */
-        rb_raise(rb_eRuntimeError /*change exception*/, "not enough transcoder slots");
+	/* we are initializing, is it okay to use rb_raise here? */
+	rb_raise(rb_eRuntimeError /*change exception*/, "not enough transcoder slots");
     }
     transcoder_table[n].from_encoding = from_e;
     transcoder_table[n].to_encoding = to_e;
@@ -127,25 +127,37 @@
     register_transcoder(NULL, NULL, NULL, 0, 0);
 }
 
+static int
+encoding_equal(const char* encoding1, const char* encoding2)
+{
+    return 0==strcasecmp(encoding1, encoding2);
+}
 
 static transcoder*
 transcode_dispatch(const char* from_encoding, const char* to_encoding)
 {
     transcoder *candidate = transcoder_table;
     
-    for (candidate = transcoder_table; candidate->from_encoding; candidate++)
-        if (0==strcasecmp(from_encoding, candidate->from_encoding)
-            && 0==strcasecmp(to_encoding, candidate->to_encoding))
-                break;
-    /* in the future, add multistep transcoding logic here */
-    return candidate->from_encoding ? candidate : NULL;
+    for (candidate = transcoder_table; candidate->from_encoding; candidate++) {
+	if (encoding_equal(from_encoding, candidate->from_encoding)
+	    && encoding_equal(to_encoding, candidate->to_encoding)) {
+		return candidate;
+	}
+    }
+    /* multistep logic, via UTF-8 */
+    if (!encoding_equal(from_encoding, "UTF-8")
+	&& !encoding_equal(to_encoding, "UTF-8")
+	&& transcode_dispatch("UTF-8", to_encoding)) {  /* check that we have a second step */
+	    return transcode_dispatch(from_encoding, "UTF-8"); /* return first step */
+    }
+    return NULL;
 }
 
 /* dynamic structure, one per conversion (similar to iconv_t) */
 /* may carry conversion state (e.g. for iso-2022-jp) */
 typedef struct transcoding {
     VALUE ruby_string_dest; /* the String used as the conversion destination,
-                               or NULL if something else is being converted */
+			       or NULL if something else is being converted */
     char *(*flush_func)(struct transcoding*, int, int);
 } transcoding;
 
@@ -201,7 +213,7 @@
 	    }
 	    next_table = next_table->info[next_offset];
 	    goto follow_byte;
-            /* maybe rewrite the following cases to use fallthrough???? */
+	    /* maybe rewrite the following cases to use fallthrough???? */
 	  case ZERObt: /* drop input */
 	    continue;
 	  case ONEbt:
@@ -262,6 +274,7 @@
     VALUE from_encval, to_encval;
     transcoder *my_transcoder;
     transcoding my_transcoding;
+    int final_encoding = 0;
 
     if (argc<1 || argc>2) {
 	rb_raise(rb_eArgError, "wrong number of arguments (%d for 2)", argc);
@@ -275,7 +288,7 @@
 	to_e = rb_enc_name(to_enc);
     }
     if (argc==1) {
-        from_encidx = rb_enc_get_index(str);
+	from_encidx = rb_enc_get_index(str);
 	from_enc = rb_enc_from_index(from_encidx);
 	from_e = rb_enc_name(from_enc);
     }
@@ -298,33 +311,44 @@
     if (strcasecmp(from_e, to_e) == 0) {
 	return Qnil;
     }
-    if (!(my_transcoder = transcode_dispatch(from_e, to_e))) {
-	rb_raise(rb_eArgError, "transcoding not supported (from %s to %s)", from_e, to_e);
-    }
 
-    fromp = sp = RSTRING_PTR(str);
-    slen = RSTRING_LEN(str);
-    blen = slen + 30; /* len + margin */
-    dest = rb_str_tmp_new(blen);
-    bp = RSTRING_PTR(dest);
-    my_transcoding.ruby_string_dest = dest;
-    my_transcoding.flush_func = str_transcoding_resize;
+    while (!final_encoding) /* loop for multistep transcoding */
+    {                       /* later, maybe use smaller intermediate strings for very long strings */
+	if (!(my_transcoder = transcode_dispatch(from_e, to_e))) {
+	    rb_raise(rb_eArgError, "transcoding not supported (from %s to %s)", from_e, to_e);
+	}
 
-    /* for simple testing: */
-    transcode_loop(&fromp, &bp, (sp+slen), (bp+blen), my_transcoder, &my_transcoding);
-    if (fromp != sp+slen) {
-	rb_raise(rb_eArgError, "not fully converted, %d bytes left", sp+slen-fromp);
+	fromp = sp = RSTRING_PTR(str);
+	slen = RSTRING_LEN(str);
+	blen = slen + 30; /* len + margin */
+	dest = rb_str_tmp_new(blen);
+	bp = RSTRING_PTR(dest);
+	my_transcoding.ruby_string_dest = dest;
+	my_transcoding.flush_func = str_transcoding_resize;
+
+	transcode_loop(&fromp, &bp, (sp+slen), (bp+blen), my_transcoder, &my_transcoding);
+	if (fromp != sp+slen) {
+	    rb_raise(rb_eArgError, "not fully converted, %d bytes left", sp+slen-fromp);
+	}
+	buf = RSTRING_PTR(dest);
+	*bp = '\0';
+	rb_str_set_len(dest, bp - buf);
+
+	rb_enc_associate(dest, to_enc);
+	
+	if (encoding_equal(my_transcoder->to_encoding, to_e)) {
+	    final_encoding = 1;
+	}
+	else {
+	    from_e = my_transcoder->to_encoding;
+	    str = dest;
+	}
     }
-    buf = RSTRING_PTR(dest);
-    *bp = '\0';
-    rb_str_set_len(dest, bp - buf);
-
     /* set encoding */
     if (!to_enc) {
 	to_encidx = rb_enc_replicate(to_e, rb_default_encoding());
 	to_enc = rb_enc_from_index(to_encidx);
     }
-    rb_enc_associate(dest, to_enc);
 
     return dest;
 }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]