CharacterEncoderImplementations__MS_EastEuropean.st
changeset 8813 c2908c7fc648
parent 8148 dbf64e3142d9
child 17711 39faaaf888b4
--- a/CharacterEncoderImplementations__MS_EastEuropean.st	Thu Mar 31 20:21:44 2005 +0200
+++ b/CharacterEncoderImplementations__MS_EastEuropean.st	Thu Mar 31 20:49:01 2005 +0200
@@ -35,12 +35,28 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
+!
+
+documentation
+"
+    CP1250 / Microsoft EastEuropean
+
+    [see with:]
+        CharacterEncoderImplementations::MS_EastEuropean showCharacterSet
+
+    [author:]
+        Claus Gittinger
+"
 ! !
 
 !MS_EastEuropean class methodsFor:'mapping'!
 
 mapFileURL2_relativePathName
     ^ 'CP1250'
+
+    "
+     self generateCode
+    "
 !
 
 mapping
@@ -311,8 +327,491 @@
 "
 ! !
 
+!MS_EastEuropean methodsFor:'encoding & decoding'!
+
+decode:codeArg
+    "Automagically generated by generateCode - do not modify.
+     Decode from my encoding into unicode."
+
+    |code "{ Class: SmallInteger }"|
+
+    code := codeArg.
+    code <= 16r7F ifTrue:[ ^ code ].
+    code > 16rFF ifTrue:[
+        ^ self decodingError.
+    ].
+    [
+        |t|
+        t := #(
+           "16r0080"    16r0000 " invalid " 
+           "16r0081"    16r0000 " invalid " 
+           "16r0082"    16r201A " SINGLE LOW-9 QUOTATION MARK " 
+           "16r0083"    16r0000 " invalid " 
+           "16r0084"    16r201E " DOUBLE LOW-9 QUOTATION MARK " 
+           "16r0085"    16r2026 " HORIZONTAL ELLIPSIS " 
+           "16r0086"    16r2020 " DAGGER " 
+           "16r0087"    16r2021 " DOUBLE DAGGER " 
+           "16r0088"    16r0000 " invalid " 
+           "16r0089"    16r2030 " PER MILLE SIGN " 
+           "16r008A"    16r0160 " LATIN CAPITAL LETTER S WITH CARON " 
+           "16r008B"    16r2039 " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+           "16r008C"    16r015A " LATIN CAPITAL LETTER S WITH ACUTE " 
+           "16r008D"    16r0164 " LATIN CAPITAL LETTER T WITH CARON " 
+           "16r008E"    16r017D " LATIN CAPITAL LETTER Z WITH CARON " 
+           "16r008F"    16r0179 " LATIN CAPITAL LETTER Z WITH ACUTE " 
+           "16r0090"    16r0000 " invalid " 
+           "16r0091"    16r2018 " LEFT SINGLE QUOTATION MARK " 
+           "16r0092"    16r2019 " RIGHT SINGLE QUOTATION MARK " 
+           "16r0093"    16r201C " LEFT DOUBLE QUOTATION MARK " 
+           "16r0094"    16r201D " RIGHT DOUBLE QUOTATION MARK " 
+           "16r0095"    16r2022 " BULLET " 
+           "16r0096"    16r2013 " EN DASH " 
+           "16r0097"    16r2014 " EM DASH " 
+           "16r0098"    16r0000 " invalid " 
+           "16r0099"    16r2122 " TRADE MARK SIGN " 
+           "16r009A"    16r0161 " LATIN SMALL LETTER S WITH CARON " 
+           "16r009B"    16r203A " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+           "16r009C"    16r015B " LATIN SMALL LETTER S WITH ACUTE " 
+           "16r009D"    16r0165 " LATIN SMALL LETTER T WITH CARON " 
+           "16r009E"    16r017E " LATIN SMALL LETTER Z WITH CARON " 
+           "16r009F"    16r017A " LATIN SMALL LETTER Z WITH ACUTE " 
+           "16r00A0"    16r00A0 " NO-BREAK SPACE " 
+           "16r00A1"    16r02C7 " CARON (Mandarin Chinese third tone) " 
+           "16r00A2"    16r02D8 " BREVE " 
+           "16r00A3"    16r0141 " LATIN CAPITAL LETTER L WITH STROKE " 
+           "16r00A4"    16r00A4 " CURRENCY SIGN " 
+           "16r00A5"    16r0104 " LATIN CAPITAL LETTER A WITH OGONEK " 
+           "16r00A6"    16r00A6 " BROKEN BAR " 
+           "16r00A7"    16r00A7 " SECTION SIGN " 
+           "16r00A8"    16r00A8 " DIAERESIS " 
+           "16r00A9"    16r00A9 " COPYRIGHT SIGN " 
+           "16r00AA"    16r015E " LATIN CAPITAL LETTER S WITH CEDILLA " 
+           "16r00AB"    16r00AB " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00AC"    16r00AC " NOT SIGN " 
+           "16r00AD"    16r00AD " SOFT HYPHEN " 
+           "16r00AE"    16r00AE " REGISTERED SIGN " 
+           "16r00AF"    16r017B " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
+           "16r00B0"    16r00B0 " DEGREE SIGN " 
+           "16r00B1"    16r00B1 " PLUS-MINUS SIGN " 
+           "16r00B2"    16r02DB " OGONEK " 
+           "16r00B3"    16r0142 " LATIN SMALL LETTER L WITH STROKE " 
+           "16r00B4"    16r00B4 " ACUTE ACCENT " 
+           "16r00B5"    16r00B5 " MICRO SIGN " 
+           "16r00B6"    16r00B6 " PILCROW SIGN " 
+           "16r00B7"    16r00B7 " MIDDLE DOT " 
+           "16r00B8"    16r00B8 " CEDILLA " 
+           "16r00B9"    16r0105 " LATIN SMALL LETTER A WITH OGONEK " 
+           "16r00BA"    16r015F " LATIN SMALL LETTER S WITH CEDILLA " 
+           "16r00BB"    16r00BB " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+           "16r00BC"    16r013D " LATIN CAPITAL LETTER L WITH CARON " 
+           "16r00BD"    16r02DD " DOUBLE ACUTE ACCENT " 
+           "16r00BE"    16r013E " LATIN SMALL LETTER L WITH CARON " 
+           "16r00BF"    16r017C " LATIN SMALL LETTER Z WITH DOT ABOVE " 
+           "16r00C0"    16r0154 " LATIN CAPITAL LETTER R WITH ACUTE " 
+           "16r00C1"    16r00C1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+           "16r00C2"    16r00C2 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+           "16r00C3"    16r0102 " LATIN CAPITAL LETTER A WITH BREVE " 
+           "16r00C4"    16r00C4 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+           "16r00C5"    16r0139 " LATIN CAPITAL LETTER L WITH ACUTE " 
+           "16r00C6"    16r0106 " LATIN CAPITAL LETTER C WITH ACUTE " 
+           "16r00C7"    16r00C7 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+           "16r00C8"    16r010C " LATIN CAPITAL LETTER C WITH CARON " 
+           "16r00C9"    16r00C9 " LATIN CAPITAL LETTER E WITH ACUTE " 
+           "16r00CA"    16r0118 " LATIN CAPITAL LETTER E WITH OGONEK " 
+           "16r00CB"    16r00CB " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+           "16r00CC"    16r011A " LATIN CAPITAL LETTER E WITH CARON " 
+           "16r00CD"    16r00CD " LATIN CAPITAL LETTER I WITH ACUTE " 
+           "16r00CE"    16r00CE " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+           "16r00CF"    16r010E " LATIN CAPITAL LETTER D WITH CARON " 
+           "16r00D0"    16r0110 " LATIN CAPITAL LETTER D WITH STROKE " 
+           "16r00D1"    16r0143 " LATIN CAPITAL LETTER N WITH ACUTE " 
+           "16r00D2"    16r0147 " LATIN CAPITAL LETTER N WITH CARON " 
+           "16r00D3"    16r00D3 " LATIN CAPITAL LETTER O WITH ACUTE " 
+           "16r00D4"    16r00D4 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+           "16r00D5"    16r0150 " LATIN CAPITAL LETTER O WITH DOUBLE ACUTE " 
+           "16r00D6"    16r00D6 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+           "16r00D7"    16r00D7 " MULTIPLICATION SIGN " 
+           "16r00D8"    16r0158 " LATIN CAPITAL LETTER R WITH CARON " 
+           "16r00D9"    16r016E " LATIN CAPITAL LETTER U WITH RING ABOVE " 
+           "16r00DA"    16r00DA " LATIN CAPITAL LETTER U WITH ACUTE " 
+           "16r00DB"    16r0170 " LATIN CAPITAL LETTER U WITH DOUBLE ACUTE " 
+           "16r00DC"    16r00DC " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+           "16r00DD"    16r00DD " LATIN CAPITAL LETTER Y WITH ACUTE " 
+           "16r00DE"    16r0162 " LATIN CAPITAL LETTER T WITH CEDILLA " 
+           "16r00DF"    16r00DF " LATIN SMALL LETTER SHARP S (German) " 
+           "16r00E0"    16r0155 " LATIN SMALL LETTER R WITH ACUTE " 
+           "16r00E1"    16r00E1 " LATIN SMALL LETTER A WITH ACUTE " 
+           "16r00E2"    16r00E2 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+           "16r00E3"    16r0103 " LATIN SMALL LETTER A WITH BREVE " 
+           "16r00E4"    16r00E4 " LATIN SMALL LETTER A WITH DIAERESIS " 
+           "16r00E5"    16r013A " LATIN SMALL LETTER L WITH ACUTE " 
+           "16r00E6"    16r0107 " LATIN SMALL LETTER C WITH ACUTE " 
+           "16r00E7"    16r00E7 " LATIN SMALL LETTER C WITH CEDILLA " 
+           "16r00E8"    16r010D " LATIN SMALL LETTER C WITH CARON " 
+           "16r00E9"    16r00E9 " LATIN SMALL LETTER E WITH ACUTE " 
+           "16r00EA"    16r0119 " LATIN SMALL LETTER E WITH OGONEK " 
+           "16r00EB"    16r00EB " LATIN SMALL LETTER E WITH DIAERESIS " 
+           "16r00EC"    16r011B " LATIN SMALL LETTER E WITH CARON " 
+           "16r00ED"    16r00ED " LATIN SMALL LETTER I WITH ACUTE " 
+           "16r00EE"    16r00EE " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+           "16r00EF"    16r010F " LATIN SMALL LETTER D WITH CARON " 
+           "16r00F0"    16r0111 " LATIN SMALL LETTER D WITH STROKE " 
+           "16r00F1"    16r0144 " LATIN SMALL LETTER N WITH ACUTE " 
+           "16r00F2"    16r0148 " LATIN SMALL LETTER N WITH CARON " 
+           "16r00F3"    16r00F3 " LATIN SMALL LETTER O WITH ACUTE " 
+           "16r00F4"    16r00F4 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+           "16r00F5"    16r0151 " LATIN SMALL LETTER O WITH DOUBLE ACUTE " 
+           "16r00F6"    16r00F6 " LATIN SMALL LETTER O WITH DIAERESIS " 
+           "16r00F7"    16r00F7 " DIVISION SIGN " 
+           "16r00F8"    16r0159 " LATIN SMALL LETTER R WITH CARON " 
+           "16r00F9"    16r016F " LATIN SMALL LETTER U WITH RING ABOVE " 
+           "16r00FA"    16r00FA " LATIN SMALL LETTER U WITH ACUTE " 
+           "16r00FB"    16r0171 " LATIN SMALL LETTER U WITH DOUBLE ACUTE " 
+           "16r00FC"    16r00FC " LATIN SMALL LETTER U WITH DIAERESIS " 
+           "16r00FD"    16r00FD " LATIN SMALL LETTER Y WITH ACUTE " 
+           "16r00FE"    16r0163 " LATIN SMALL LETTER T WITH CEDILLA " 
+           "16r00FF"    16r02D9 " DOT ABOVE (Mandarin Chinese light tone) " 
+           ) at:(code - 16r7F).
+        t == 0 ifFalse:[^ t].
+        ^ self decodingError.
+    ] value.
+!
+
+encode:unicodeArg
+    "Automagically generated by generateCode - do not modify.
+     Encode from unicode into my encoding."
+
+    |unicode "{ Class: SmallInteger }"|
+
+    unicode := unicodeArg.
+    unicode <= 16r7F ifTrue:[ ^ unicode ].
+    unicode > 16r2122 ifTrue:[
+        ^ self encodingError.
+    ].
+    unicode <= 16r9F ifTrue:[
+        ^ self encodingError
+    ].
+    unicode <= 16r2DD ifTrue:[
+        unicode <= 16r17E ifTrue:[
+            unicode <= 16r101 ifTrue:[
+                (#[
+                   "16r00A0"    1 " NO-BREAK SPACE " 
+                   "16r00A1"    0 " invalid " 
+                   "16r00A2"    0 " invalid " 
+                   "16r00A3"    0 " invalid " 
+                   "16r00A4"    1 " CURRENCY SIGN " 
+                   "16r00A5"    0 " invalid " 
+                   "16r00A6"    1 " BROKEN BAR " 
+                   "16r00A7"    1 " SECTION SIGN " 
+                   "16r00A8"    1 " DIAERESIS " 
+                   "16r00A9"    1 " COPYRIGHT SIGN " 
+                   "16r00AA"    0 " invalid " 
+                   "16r00AB"    1 " LEFT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+                   "16r00AC"    1 " NOT SIGN " 
+                   "16r00AD"    1 " SOFT HYPHEN " 
+                   "16r00AE"    1 " REGISTERED SIGN " 
+                   "16r00AF"    0 " invalid " 
+                   "16r00B0"    1 " DEGREE SIGN " 
+                   "16r00B1"    1 " PLUS-MINUS SIGN " 
+                   "16r00B2"    0 " invalid " 
+                   "16r00B3"    0 " invalid " 
+                   "16r00B4"    1 " ACUTE ACCENT " 
+                   "16r00B5"    1 " MICRO SIGN " 
+                   "16r00B6"    1 " PILCROW SIGN " 
+                   "16r00B7"    1 " MIDDLE DOT " 
+                   "16r00B8"    1 " CEDILLA " 
+                   "16r00B9"    0 " invalid " 
+                   "16r00BA"    0 " invalid " 
+                   "16r00BB"    1 " RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK " 
+                   "16r00BC"    0 " invalid " 
+                   "16r00BD"    0 " invalid " 
+                   "16r00BE"    0 " invalid " 
+                   "16r00BF"    0 " invalid " 
+                   "16r00C0"    0 " invalid " 
+                   "16r00C1"    1 " LATIN CAPITAL LETTER A WITH ACUTE " 
+                   "16r00C2"    1 " LATIN CAPITAL LETTER A WITH CIRCUMFLEX " 
+                   "16r00C3"    0 " invalid " 
+                   "16r00C4"    1 " LATIN CAPITAL LETTER A WITH DIAERESIS " 
+                   "16r00C5"    0 " invalid " 
+                   "16r00C6"    0 " invalid " 
+                   "16r00C7"    1 " LATIN CAPITAL LETTER C WITH CEDILLA " 
+                   "16r00C8"    0 " invalid " 
+                   "16r00C9"    1 " LATIN CAPITAL LETTER E WITH ACUTE " 
+                   "16r00CA"    0 " invalid " 
+                   "16r00CB"    1 " LATIN CAPITAL LETTER E WITH DIAERESIS " 
+                   "16r00CC"    0 " invalid " 
+                   "16r00CD"    1 " LATIN CAPITAL LETTER I WITH ACUTE " 
+                   "16r00CE"    1 " LATIN CAPITAL LETTER I WITH CIRCUMFLEX " 
+                   "16r00CF"    0 " invalid " 
+                   "16r00D0"    0 " invalid " 
+                   "16r00D1"    0 " invalid " 
+                   "16r00D2"    0 " invalid " 
+                   "16r00D3"    1 " LATIN CAPITAL LETTER O WITH ACUTE " 
+                   "16r00D4"    1 " LATIN CAPITAL LETTER O WITH CIRCUMFLEX " 
+                   "16r00D5"    0 " invalid " 
+                   "16r00D6"    1 " LATIN CAPITAL LETTER O WITH DIAERESIS " 
+                   "16r00D7"    1 " MULTIPLICATION SIGN " 
+                   "16r00D8"    0 " invalid " 
+                   "16r00D9"    0 " invalid " 
+                   "16r00DA"    1 " LATIN CAPITAL LETTER U WITH ACUTE " 
+                   "16r00DB"    0 " invalid " 
+                   "16r00DC"    1 " LATIN CAPITAL LETTER U WITH DIAERESIS " 
+                   "16r00DD"    1 " LATIN CAPITAL LETTER Y WITH ACUTE " 
+                   "16r00DE"    0 " invalid " 
+                   "16r00DF"    1 " LATIN SMALL LETTER SHARP S (German) " 
+                   "16r00E0"    0 " invalid " 
+                   "16r00E1"    1 " LATIN SMALL LETTER A WITH ACUTE " 
+                   "16r00E2"    1 " LATIN SMALL LETTER A WITH CIRCUMFLEX " 
+                   "16r00E3"    0 " invalid " 
+                   "16r00E4"    1 " LATIN SMALL LETTER A WITH DIAERESIS " 
+                   "16r00E5"    0 " invalid " 
+                   "16r00E6"    0 " invalid " 
+                   "16r00E7"    1 " LATIN SMALL LETTER C WITH CEDILLA " 
+                   "16r00E8"    0 " invalid " 
+                   "16r00E9"    1 " LATIN SMALL LETTER E WITH ACUTE " 
+                   "16r00EA"    0 " invalid " 
+                   "16r00EB"    1 " LATIN SMALL LETTER E WITH DIAERESIS " 
+                   "16r00EC"    0 " invalid " 
+                   "16r00ED"    1 " LATIN SMALL LETTER I WITH ACUTE " 
+                   "16r00EE"    1 " LATIN SMALL LETTER I WITH CIRCUMFLEX " 
+                   "16r00EF"    0 " invalid " 
+                   "16r00F0"    0 " invalid " 
+                   "16r00F1"    0 " invalid " 
+                   "16r00F2"    0 " invalid " 
+                   "16r00F3"    1 " LATIN SMALL LETTER O WITH ACUTE " 
+                   "16r00F4"    1 " LATIN SMALL LETTER O WITH CIRCUMFLEX " 
+                   "16r00F5"    0 " invalid " 
+                   "16r00F6"    1 " LATIN SMALL LETTER O WITH DIAERESIS " 
+                   "16r00F7"    1 " DIVISION SIGN " 
+                   "16r00F8"    0 " invalid " 
+                   "16r00F9"    0 " invalid " 
+                   "16r00FA"    1 " LATIN SMALL LETTER U WITH ACUTE " 
+                   "16r00FB"    0 " invalid " 
+                   "16r00FC"    1 " LATIN SMALL LETTER U WITH DIAERESIS " 
+                   "16r00FD"    1 " LATIN SMALL LETTER Y WITH ACUTE " 
+                   "16r00FE"    0 " invalid " 
+                   "16r00FF"    0 " invalid " 
+                   "16r0100"    0 " invalid " 
+                   "16r0101"    0 " invalid " 
+                ] at:(unicode - 159)) ~~ 0 ifTrue:[^ unicode].
+                ^ self encodingError
+            ].
+            [
+                |t|
+                t := #[
+                   "16r0102"    16rC3 " LATIN CAPITAL LETTER A WITH BREVE " 
+                   "16r0103"    16rE3 " LATIN SMALL LETTER A WITH BREVE " 
+                   "16r0104"    16rA5 " LATIN CAPITAL LETTER A WITH OGONEK " 
+                   "16r0105"    16rB9 " LATIN SMALL LETTER A WITH OGONEK " 
+                   "16r0106"    16rC6 " LATIN CAPITAL LETTER C WITH ACUTE " 
+                   "16r0107"    16rE6 " LATIN SMALL LETTER C WITH ACUTE " 
+                   "16r0108"    16r00 " invalid " 
+                   "16r0109"    16r00 " invalid " 
+                   "16r010A"    16r00 " invalid " 
+                   "16r010B"    16r00 " invalid " 
+                   "16r010C"    16rC8 " LATIN CAPITAL LETTER C WITH CARON " 
+                   "16r010D"    16rE8 " LATIN SMALL LETTER C WITH CARON " 
+                   "16r010E"    16rCF " LATIN CAPITAL LETTER D WITH CARON " 
+                   "16r010F"    16rEF " LATIN SMALL LETTER D WITH CARON " 
+                   "16r0110"    16rD0 " LATIN CAPITAL LETTER D WITH STROKE " 
+                   "16r0111"    16rF0 " LATIN SMALL LETTER D WITH STROKE " 
+                   "16r0112"    16r00 " invalid " 
+                   "16r0113"    16r00 " invalid " 
+                   "16r0114"    16r00 " invalid " 
+                   "16r0115"    16r00 " invalid " 
+                   "16r0116"    16r00 " invalid " 
+                   "16r0117"    16r00 " invalid " 
+                   "16r0118"    16rCA " LATIN CAPITAL LETTER E WITH OGONEK " 
+                   "16r0119"    16rEA " LATIN SMALL LETTER E WITH OGONEK " 
+                   "16r011A"    16rCC " LATIN CAPITAL LETTER E WITH CARON " 
+                   "16r011B"    16rEC " LATIN SMALL LETTER E WITH CARON " 
+                   "16r011C"    16r00 " invalid " 
+                   "16r011D"    16r00 " invalid " 
+                   "16r011E"    16r00 " invalid " 
+                   "16r011F"    16r00 " invalid " 
+                   "16r0120"    16r00 " invalid " 
+                   "16r0121"    16r00 " invalid " 
+                   "16r0122"    16r00 " invalid " 
+                   "16r0123"    16r00 " invalid " 
+                   "16r0124"    16r00 " invalid " 
+                   "16r0125"    16r00 " invalid " 
+                   "16r0126"    16r00 " invalid " 
+                   "16r0127"    16r00 " invalid " 
+                   "16r0128"    16r00 " invalid " 
+                   "16r0129"    16r00 " invalid " 
+                   "16r012A"    16r00 " invalid " 
+                   "16r012B"    16r00 " invalid " 
+                   "16r012C"    16r00 " invalid " 
+                   "16r012D"    16r00 " invalid " 
+                   "16r012E"    16r00 " invalid " 
+                   "16r012F"    16r00 " invalid " 
+                   "16r0130"    16r00 " invalid " 
+                   "16r0131"    16r00 " invalid " 
+                   "16r0132"    16r00 " invalid " 
+                   "16r0133"    16r00 " invalid " 
+                   "16r0134"    16r00 " invalid " 
+                   "16r0135"    16r00 " invalid " 
+                   "16r0136"    16r00 " invalid " 
+                   "16r0137"    16r00 " invalid " 
+                   "16r0138"    16r00 " invalid " 
+                   "16r0139"    16rC5 " LATIN CAPITAL LETTER L WITH ACUTE " 
+                   "16r013A"    16rE5 " LATIN SMALL LETTER L WITH ACUTE " 
+                   "16r013B"    16r00 " invalid " 
+                   "16r013C"    16r00 " invalid " 
+                   "16r013D"    16rBC " LATIN CAPITAL LETTER L WITH CARON " 
+                   "16r013E"    16rBE " LATIN SMALL LETTER L WITH CARON " 
+                   "16r013F"    16r00 " invalid " 
+                   "16r0140"    16r00 " invalid " 
+                   "16r0141"    16rA3 " LATIN CAPITAL LETTER L WITH STROKE " 
+                   "16r0142"    16rB3 " LATIN SMALL LETTER L WITH STROKE " 
+                   "16r0143"    16rD1 " LATIN CAPITAL LETTER N WITH ACUTE " 
+                   "16r0144"    16rF1 " LATIN SMALL LETTER N WITH ACUTE " 
+                   "16r0145"    16r00 " invalid " 
+                   "16r0146"    16r00 " invalid " 
+                   "16r0147"    16rD2 " LATIN CAPITAL LETTER N WITH CARON " 
+                   "16r0148"    16rF2 " LATIN SMALL LETTER N WITH CARON " 
+                   "16r0149"    16r00 " invalid " 
+                   "16r014A"    16r00 " invalid " 
+                   "16r014B"    16r00 " invalid " 
+                   "16r014C"    16r00 " invalid " 
+                   "16r014D"    16r00 " invalid " 
+                   "16r014E"    16r00 " invalid " 
+                   "16r014F"    16r00 " invalid " 
+                   "16r0150"    16rD5 " LATIN CAPITAL LETTER O WITH DOUBLE ACUTE " 
+                   "16r0151"    16rF5 " LATIN SMALL LETTER O WITH DOUBLE ACUTE " 
+                   "16r0152"    16r00 " invalid " 
+                   "16r0153"    16r00 " invalid " 
+                   "16r0154"    16rC0 " LATIN CAPITAL LETTER R WITH ACUTE " 
+                   "16r0155"    16rE0 " LATIN SMALL LETTER R WITH ACUTE " 
+                   "16r0156"    16r00 " invalid " 
+                   "16r0157"    16r00 " invalid " 
+                   "16r0158"    16rD8 " LATIN CAPITAL LETTER R WITH CARON " 
+                   "16r0159"    16rF8 " LATIN SMALL LETTER R WITH CARON " 
+                   "16r015A"    16r8C " LATIN CAPITAL LETTER S WITH ACUTE " 
+                   "16r015B"    16r9C " LATIN SMALL LETTER S WITH ACUTE " 
+                   "16r015C"    16r00 " invalid " 
+                   "16r015D"    16r00 " invalid " 
+                   "16r015E"    16rAA " LATIN CAPITAL LETTER S WITH CEDILLA " 
+                   "16r015F"    16rBA " LATIN SMALL LETTER S WITH CEDILLA " 
+                   "16r0160"    16r8A " LATIN CAPITAL LETTER S WITH CARON " 
+                   "16r0161"    16r9A " LATIN SMALL LETTER S WITH CARON " 
+                   "16r0162"    16rDE " LATIN CAPITAL LETTER T WITH CEDILLA " 
+                   "16r0163"    16rFE " LATIN SMALL LETTER T WITH CEDILLA " 
+                   "16r0164"    16r8D " LATIN CAPITAL LETTER T WITH CARON " 
+                   "16r0165"    16r9D " LATIN SMALL LETTER T WITH CARON " 
+                   "16r0166"    16r00 " invalid " 
+                   "16r0167"    16r00 " invalid " 
+                   "16r0168"    16r00 " invalid " 
+                   "16r0169"    16r00 " invalid " 
+                   "16r016A"    16r00 " invalid " 
+                   "16r016B"    16r00 " invalid " 
+                   "16r016C"    16r00 " invalid " 
+                   "16r016D"    16r00 " invalid " 
+                   "16r016E"    16rD9 " LATIN CAPITAL LETTER U WITH RING ABOVE " 
+                   "16r016F"    16rF9 " LATIN SMALL LETTER U WITH RING ABOVE " 
+                   "16r0170"    16rDB " LATIN CAPITAL LETTER U WITH DOUBLE ACUTE " 
+                   "16r0171"    16rFB " LATIN SMALL LETTER U WITH DOUBLE ACUTE " 
+                   "16r0172"    16r00 " invalid " 
+                   "16r0173"    16r00 " invalid " 
+                   "16r0174"    16r00 " invalid " 
+                   "16r0175"    16r00 " invalid " 
+                   "16r0176"    16r00 " invalid " 
+                   "16r0177"    16r00 " invalid " 
+                   "16r0178"    16r00 " invalid " 
+                   "16r0179"    16r8F " LATIN CAPITAL LETTER Z WITH ACUTE " 
+                   "16r017A"    16r9F " LATIN SMALL LETTER Z WITH ACUTE " 
+                   "16r017B"    16rAF " LATIN CAPITAL LETTER Z WITH DOT ABOVE " 
+                   "16r017C"    16rBF " LATIN SMALL LETTER Z WITH DOT ABOVE " 
+                   "16r017D"    16r8E " LATIN CAPITAL LETTER Z WITH CARON " 
+                   "16r017E"    16r9E " LATIN SMALL LETTER Z WITH CARON " 
+                   ] at:(unicode - 16r101).
+                t == 0 ifFalse:[^ t].
+                ^ self encodingError
+            ] value.
+        ].
+        unicode <= 16r2C6 ifTrue:[
+            ^ self encodingError
+        ].
+        unicode == 16r2C7 ifTrue:[
+            ^  "16r02C7" 16r00A1 " CARON (Mandarin Chinese third tone) " 
+        ].
+        unicode <= 16r2D7 ifTrue:[
+            ^ self encodingError
+        ].
+        [
+            |t|
+            t := #[
+               "16r02D8"    16rA2 " BREVE " 
+               "16r02D9"    16rFF " DOT ABOVE (Mandarin Chinese light tone) " 
+               "16r02DA"    16r00 " invalid " 
+               "16r02DB"    16rB2 " OGONEK " 
+               "16r02DC"    16r00 " invalid " 
+               "16r02DD"    16rBD " DOUBLE ACUTE ACCENT " 
+               ] at:(unicode - 16r2D7).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+        ] value.
+    ].
+    unicode <= 16r2012 ifTrue:[
+        ^ self encodingError
+    ].
+    unicode <= 16r203A ifTrue:[
+        [
+            |t|
+            t := #[
+               "16r2013"    16r96 " EN DASH " 
+               "16r2014"    16r97 " EM DASH " 
+               "16r2015"    16r00 " invalid " 
+               "16r2016"    16r00 " invalid " 
+               "16r2017"    16r00 " invalid " 
+               "16r2018"    16r91 " LEFT SINGLE QUOTATION MARK " 
+               "16r2019"    16r92 " RIGHT SINGLE QUOTATION MARK " 
+               "16r201A"    16r82 " SINGLE LOW-9 QUOTATION MARK " 
+               "16r201B"    16r00 " invalid " 
+               "16r201C"    16r93 " LEFT DOUBLE QUOTATION MARK " 
+               "16r201D"    16r94 " RIGHT DOUBLE QUOTATION MARK " 
+               "16r201E"    16r84 " DOUBLE LOW-9 QUOTATION MARK " 
+               "16r201F"    16r00 " invalid " 
+               "16r2020"    16r86 " DAGGER " 
+               "16r2021"    16r87 " DOUBLE DAGGER " 
+               "16r2022"    16r95 " BULLET " 
+               "16r2023"    16r00 " invalid " 
+               "16r2024"    16r00 " invalid " 
+               "16r2025"    16r00 " invalid " 
+               "16r2026"    16r85 " HORIZONTAL ELLIPSIS " 
+               "16r2027"    16r00 " invalid " 
+               "16r2028"    16r00 " invalid " 
+               "16r2029"    16r00 " invalid " 
+               "16r202A"    16r00 " invalid " 
+               "16r202B"    16r00 " invalid " 
+               "16r202C"    16r00 " invalid " 
+               "16r202D"    16r00 " invalid " 
+               "16r202E"    16r00 " invalid " 
+               "16r202F"    16r00 " invalid " 
+               "16r2030"    16r89 " PER MILLE SIGN " 
+               "16r2031"    16r00 " invalid " 
+               "16r2032"    16r00 " invalid " 
+               "16r2033"    16r00 " invalid " 
+               "16r2034"    16r00 " invalid " 
+               "16r2035"    16r00 " invalid " 
+               "16r2036"    16r00 " invalid " 
+               "16r2037"    16r00 " invalid " 
+               "16r2038"    16r00 " invalid " 
+               "16r2039"    16r8B " SINGLE LEFT-POINTING ANGLE QUOTATION MARK " 
+               "16r203A"    16r9B " SINGLE RIGHT-POINTING ANGLE QUOTATION MARK " 
+               ] at:(unicode - 16r2012).
+            t == 0 ifFalse:[^ t].
+            ^ self encodingError
+        ] value.
+    ].
+    unicode <= 16r2121 ifTrue:[
+        ^ self encodingError
+    ].
+    ^  "16r2122" 16r0099 " TRADE MARK SIGN " 
+! !
+
 !MS_EastEuropean class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_EastEuropean.st,v 1.3 2004-03-09 21:57:23 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/CharacterEncoderImplementations__MS_EastEuropean.st,v 1.4 2005-03-31 18:48:47 cg Exp $'
 ! !