提交 59f1bc28 编写于 作者: A andrew

6959197: When building with JAVAC_MAX_WARNINGS=true, the build fails in...

6959197: When building with JAVAC_MAX_WARNINGS=true, the build fails in sun/nio/cs due to the use of -Werror
Summary: Remove unneeded casts, add generic types and make better use of static data
Reviewed-by: sherman
上级 696bbff9
...@@ -37,7 +37,7 @@ PRODUCT = sun ...@@ -37,7 +37,7 @@ PRODUCT = sun
# This re-directs all the class files to a separate location # This re-directs all the class files to a separate location
CLASSDESTDIR = $(TEMPDIR)/classes CLASSDESTDIR = $(TEMPDIR)/classes
OTHER_JAVACFLAGS += -Xlint:serial -Werror OTHER_JAVACFLAGS += -Xlint:serial,-deprecation -Werror
include $(BUILDDIR)/common/Defs.gmk include $(BUILDDIR)/common/Defs.gmk
# #
......
...@@ -124,15 +124,15 @@ public abstract class ByteToCharISO2022 extends ByteToCharConverter ...@@ -124,15 +124,15 @@ public abstract class ByteToCharISO2022 extends ByteToCharConverter
switch(shiftFlag) { switch(shiftFlag) {
case SOFlag: case SOFlag:
tmpIndex = curSODes; tmpIndex = curSODes;
tmpConverter = (ByteToCharConverter [])SOConverter; tmpConverter = SOConverter;
break; break;
case SS2Flag: case SS2Flag:
tmpIndex = curSS2Des; tmpIndex = curSS2Des;
tmpConverter = (ByteToCharConverter [])SS2Converter; tmpConverter = SS2Converter;
break; break;
case SS3Flag: case SS3Flag:
tmpIndex = curSS3Des; tmpIndex = curSS3Des;
tmpConverter = (ByteToCharConverter [])SS3Converter; tmpConverter = SS3Converter;
break; break;
} }
......
...@@ -141,7 +141,7 @@ public class ByteToCharISO2022JP extends ByteToCharJIS0208 { ...@@ -141,7 +141,7 @@ public class ByteToCharISO2022JP extends ByteToCharJIS0208 {
} else { } else {
savedSize = 2; savedSize = 2;
savedBytes[0] = (byte)byte1; savedBytes[0] = (byte)byte1;
savedBytes[1] = (byte)input[readOff + inputSize]; savedBytes[1] = input[readOff + inputSize];
inputSize++; inputSize++;
} }
break; break;
......
...@@ -34,14 +34,12 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter { ...@@ -34,14 +34,12 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter {
private final static int SJIS1B_MASK = 0x04; private final static int SJIS1B_MASK = 0x04;
private final static int EUCJP_KANA1_MASK = 0x08; private final static int EUCJP_KANA1_MASK = 0x08;
private final static int EUCJP_KANA2_MASK = 0x10; private final static int EUCJP_KANA2_MASK = 0x10;
private static byte[] maskTable1; private final static byte[] maskTable1 = JISAutoDetect.getByteMask1();
private static byte[] maskTable2; private final static byte[] maskTable2 = JISAutoDetect.getByteMask2();
private final static int SS2 = 0x8e; private final static int SS2 = 0x8e;
private final static int SS3 = 0x8f; private final static int SS3 = 0x8f;
private final static JISAutoDetect nioCoder = new JISAutoDetect();
// SJISName is set to either "SJIS" or "MS932" // SJISName is set to either "SJIS" or "MS932"
private String SJISName; private String SJISName;
private String EUCJPName; private String EUCJPName;
...@@ -57,8 +55,6 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter { ...@@ -57,8 +55,6 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter {
defaultConv = new ByteToCharISO8859_1(); defaultConv = new ByteToCharISO8859_1();
defaultConv.subChars = subChars; defaultConv.subChars = subChars;
defaultConv.subMode = subMode; defaultConv.subMode = subMode;
maskTable1 = nioCoder.getByteMask1();
maskTable2 = nioCoder.getByteMask2();
} }
public int flush(char [] output, int outStart, int outEnd) public int flush(char [] output, int outStart, int outEnd)
...@@ -133,7 +129,7 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter { ...@@ -133,7 +129,7 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter {
break; break;
} }
if ((mask == SJIS2B_MASK) || (mask == SJIS1B_MASK) if ((mask == SJIS2B_MASK) || (mask == SJIS1B_MASK)
|| (nioCoder.canBeSJIS1B(firstmask) && secondmask == 0)) { || (JISAutoDetect.canBeSJIS1B(firstmask) && secondmask == 0)) {
convName = SJISName; convName = SJISName;
break; break;
} }
...@@ -145,15 +141,15 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter { ...@@ -145,15 +141,15 @@ public class ByteToCharJISAutoDetect extends ByteToCharConverter {
// character boundary. If we tried both // character boundary. If we tried both
// possibilities here, it might be able to be // possibilities here, it might be able to be
// determined correctly. // determined correctly.
if ((byte1 == SS3) && nioCoder.canBeEUCJP(secondmask)) { if ((byte1 == SS3) && JISAutoDetect.canBeEUCJP(secondmask)) {
if (cnt+1 < inEnd) { if (cnt+1 < inEnd) {
int nextbyte = input[cnt+1] & 0xff; int nextbyte = input[cnt+1] & 0xff;
if (! nioCoder.canBeEUCJP(maskTable2[nextbyte])) if (! JISAutoDetect.canBeEUCJP(maskTable2[nextbyte]))
convName = SJISName; convName = SJISName;
} else } else
convName = SJISName; convName = SJISName;
} }
if (nioCoder.canBeEUCKana(firstmask, secondmask)) if (JISAutoDetect.canBeEUCKana(firstmask, secondmask))
euckana++; euckana++;
} else { } else {
if ((firstmask & SJIS1B_MASK) != 0) { if ((firstmask & SJIS1B_MASK) != 0) {
......
...@@ -66,7 +66,7 @@ public class CharToBytePCK extends CharToByteSJIS { ...@@ -66,7 +66,7 @@ public class CharToBytePCK extends CharToByteSJIS {
switch (ch) { switch (ch) {
case '\u2015': case '\u2015':
return (int)0x815C; return 0x815C;
case '\u2014': case '\u2014':
return 0; return 0;
default: default:
......
...@@ -103,7 +103,7 @@ public class DoubleByte { ...@@ -103,7 +103,7 @@ public class DoubleByte {
public final static char[] B2C_UNMAPPABLE; public final static char[] B2C_UNMAPPABLE;
static { static {
B2C_UNMAPPABLE = new char[0x100]; B2C_UNMAPPABLE = new char[0x100];
Arrays.fill(B2C_UNMAPPABLE, (char)UNMAPPABLE_DECODING); Arrays.fill(B2C_UNMAPPABLE, UNMAPPABLE_DECODING);
} }
public static class Decoder extends CharsetDecoder public static class Decoder extends CharsetDecoder
...@@ -374,7 +374,7 @@ public class DoubleByte { ...@@ -374,7 +374,7 @@ public class DoubleByte {
static final char[] b2cSB; static final char[] b2cSB;
static { static {
b2cSB = new char[0x100]; b2cSB = new char[0x100];
Arrays.fill(b2cSB, (char)UNMAPPABLE_DECODING); Arrays.fill(b2cSB, UNMAPPABLE_DECODING);
} }
Decoder_EBCDIC_DBCSONLY(Charset cs, char[][] b2c, int b2Min, int b2Max) { Decoder_EBCDIC_DBCSONLY(Charset cs, char[][] b2c, int b2Min, int b2Max) {
super(cs, 0.5f, 1.0f, b2c, b2cSB, b2Min, b2Max); super(cs, 0.5f, 1.0f, b2c, b2cSB, b2Min, b2Max);
......
...@@ -79,8 +79,10 @@ public class EUC_JP ...@@ -79,8 +79,10 @@ public class EUC_JP
JIS_X_0201.Decoder decoderJ0201; JIS_X_0201.Decoder decoderJ0201;
JIS_X_0212_Decoder decoderJ0212; JIS_X_0212_Decoder decoderJ0212;
short[] j0208Index1; private static final short[] j0208Index1 =
String[] j0208Index2; JIS_X_0208_Decoder.getIndex1();
private static final String[] j0208Index2 =
JIS_X_0208_Decoder.getIndex2();
protected Decoder(Charset cs) { protected Decoder(Charset cs) {
super(cs); super(cs);
...@@ -88,8 +90,6 @@ public class EUC_JP ...@@ -88,8 +90,6 @@ public class EUC_JP
decoderJ0212 = new JIS_X_0212_Decoder(cs); decoderJ0212 = new JIS_X_0212_Decoder(cs);
start = 0xa1; start = 0xa1;
end = 0xfe; end = 0xfe;
j0208Index1 = super.getIndex1();
j0208Index2 = super.getIndex2();
} }
protected char decode0212(int byte1, int byte2) { protected char decode0212(int byte1, int byte2) {
return decoderJ0212.decodeDouble(byte1, byte2); return decoderJ0212.decodeDouble(byte1, byte2);
...@@ -238,8 +238,10 @@ public class EUC_JP ...@@ -238,8 +238,10 @@ public class EUC_JP
JIS_X_0201.Encoder encoderJ0201; JIS_X_0201.Encoder encoderJ0201;
JIS_X_0212_Encoder encoderJ0212; JIS_X_0212_Encoder encoderJ0212;
short[] j0208Index1; private static final short[] j0208Index1 =
String[] j0208Index2; JIS_X_0208_Encoder.getIndex1();
private static final String[] j0208Index2 =
JIS_X_0208_Encoder.getIndex2();
private final Surrogate.Parser sgp = new Surrogate.Parser(); private final Surrogate.Parser sgp = new Surrogate.Parser();
...@@ -247,8 +249,6 @@ public class EUC_JP ...@@ -247,8 +249,6 @@ public class EUC_JP
super(cs, 3.0f, 3.0f); super(cs, 3.0f, 3.0f);
encoderJ0201 = new JIS_X_0201.Encoder(cs); encoderJ0201 = new JIS_X_0201.Encoder(cs);
encoderJ0212 = new JIS_X_0212_Encoder(cs); encoderJ0212 = new JIS_X_0212_Encoder(cs);
j0208Index1 = super.getIndex1();
j0208Index2 = super.getIndex2();
} }
public boolean canEncode(char c) { public boolean canEncode(char c) {
......
...@@ -65,20 +65,18 @@ public class EUC_JP_LINUX ...@@ -65,20 +65,18 @@ public class EUC_JP_LINUX
private static class Decoder extends CharsetDecoder { private static class Decoder extends CharsetDecoder {
JIS_X_0201.Decoder decoderJ0201; JIS_X_0201.Decoder decoderJ0201;
JIS_X_0208_Decoder decodeMappingJ0208;
protected final char REPLACE_CHAR='\uFFFD'; protected final char REPLACE_CHAR='\uFFFD';
short[] jis0208Index1; private static final int start = 0xa1;
String[] jis0208Index2; private static final int end = 0xfe;
private static final short[] jis0208Index1 =
JIS_X_0208_Decoder.getIndex1();
private static final String[] jis0208Index2 =
JIS_X_0208_Decoder.getIndex2();
private Decoder(Charset cs) { private Decoder(Charset cs) {
super(cs, 1.0f, 1.0f); super(cs, 1.0f, 1.0f);
decoderJ0201 = new JIS_X_0201.Decoder(cs); decoderJ0201 = new JIS_X_0201.Decoder(cs);
decodeMappingJ0208 = new JIS_X_0208_Decoder(cs);
decodeMappingJ0208.start = 0xa1;
decodeMappingJ0208.end = 0xfe;
jis0208Index1 = decodeMappingJ0208.getIndex1();
jis0208Index2 = decodeMappingJ0208.getIndex2();
} }
protected char convSingleByte(int b) { protected char convSingleByte(int b) {
...@@ -93,11 +91,11 @@ public class EUC_JP_LINUX ...@@ -93,11 +91,11 @@ public class EUC_JP_LINUX
} }
if (((byte1 < 0) || (byte1 > jis0208Index1.length)) if (((byte1 < 0) || (byte1 > jis0208Index1.length))
|| ((byte2 < decodeMappingJ0208.start) || (byte2 > decodeMappingJ0208.end))) || ((byte2 < start) || (byte2 > end)))
return REPLACE_CHAR; return REPLACE_CHAR;
int n = (jis0208Index1[byte1 - 0x80] & 0xf) * (decodeMappingJ0208.end - decodeMappingJ0208.start + 1) int n = (jis0208Index1[byte1 - 0x80] & 0xf) * (end - start + 1)
+ (byte2 - decodeMappingJ0208.start); + (byte2 - start);
return jis0208Index2[jis0208Index1[byte1 - 0x80] >> 4].charAt(n); return jis0208Index2[jis0208Index1[byte1 - 0x80] >> 4].charAt(n);
} }
...@@ -213,18 +211,16 @@ public class EUC_JP_LINUX ...@@ -213,18 +211,16 @@ public class EUC_JP_LINUX
private static class Encoder extends CharsetEncoder { private static class Encoder extends CharsetEncoder {
JIS_X_0201.Encoder encoderJ0201; JIS_X_0201.Encoder encoderJ0201;
JIS_X_0208_Encoder encoderJ0208;
private final Surrogate.Parser sgp = new Surrogate.Parser(); private final Surrogate.Parser sgp = new Surrogate.Parser();
short[] jis0208Index1; private static final short[] jis0208Index1 =
String[] jis0208Index2; JIS_X_0208_Encoder.getIndex1();
private static final String[] jis0208Index2 =
JIS_X_0208_Encoder.getIndex2();
private Encoder(Charset cs) { private Encoder(Charset cs) {
super(cs, 2.0f, 2.0f); super(cs, 2.0f, 2.0f);
encoderJ0201 = new JIS_X_0201.Encoder(cs); encoderJ0201 = new JIS_X_0201.Encoder(cs);
encoderJ0208 = new JIS_X_0208_Encoder(cs);
jis0208Index1 = encoderJ0208.getIndex1();
jis0208Index2 = encoderJ0208.getIndex2();
} }
public boolean canEncode(char c) { public boolean canEncode(char c) {
......
...@@ -75,8 +75,12 @@ public class EUC_JP_Open ...@@ -75,8 +75,12 @@ public class EUC_JP_Open
JIS_X_0212_Solaris_Decoder decodeMappingJ0212; JIS_X_0212_Solaris_Decoder decodeMappingJ0212;
JIS_X_0208_Solaris_Decoder decodeMappingJ0208; JIS_X_0208_Solaris_Decoder decodeMappingJ0208;
short[] j0208Index1; private static final short[] j0208Index1 =
String[] j0208Index2; JIS_X_0208_Solaris_Decoder.getIndex1();
private static final String[] j0208Index2 =
JIS_X_0208_Solaris_Decoder.getIndex2();
private static final int start = 0xa1;
private static final int end = 0xfe;
protected final char REPLACE_CHAR='\uFFFD'; protected final char REPLACE_CHAR='\uFFFD';
...@@ -84,11 +88,6 @@ public class EUC_JP_Open ...@@ -84,11 +88,6 @@ public class EUC_JP_Open
super(cs); super(cs);
decoderJ0201 = new JIS_X_0201.Decoder(cs); decoderJ0201 = new JIS_X_0201.Decoder(cs);
decodeMappingJ0212 = new JIS_X_0212_Solaris_Decoder(cs); decodeMappingJ0212 = new JIS_X_0212_Solaris_Decoder(cs);
decodeMappingJ0208 = new JIS_X_0208_Solaris_Decoder(cs);
decodeMappingJ0208.start = 0xa1;
decodeMappingJ0208.end = 0xfe;
j0208Index1 = decodeMappingJ0208.getIndex1();
j0208Index2 = decodeMappingJ0208.getIndex2();
} }
...@@ -103,9 +102,9 @@ public class EUC_JP_Open ...@@ -103,9 +102,9 @@ public class EUC_JP_Open
} }
if (((byte1 < 0) if (((byte1 < 0)
|| (byte1 > decodeMappingJ0208.getIndex1().length)) || (byte1 > j0208Index1.length))
|| ((byte2 < decodeMappingJ0208.start) || ((byte2 < start)
|| (byte2 > decodeMappingJ0208.end))) || (byte2 > end)))
return REPLACE_CHAR; return REPLACE_CHAR;
char result = super.decodeDouble(byte1, byte2); char result = super.decodeDouble(byte1, byte2);
...@@ -113,8 +112,8 @@ public class EUC_JP_Open ...@@ -113,8 +112,8 @@ public class EUC_JP_Open
return result; return result;
} else { } else {
int n = (j0208Index1[byte1 - 0x80] & 0xf) * int n = (j0208Index1[byte1 - 0x80] & 0xf) *
(decodeMappingJ0208.end - decodeMappingJ0208.start + 1) (end - start + 1)
+ (byte2 - decodeMappingJ0208.start); + (byte2 - start);
return j0208Index2[j0208Index1[byte1 - 0x80] >> 4].charAt(n); return j0208Index2[j0208Index1[byte1 - 0x80] >> 4].charAt(n);
} }
} }
...@@ -125,10 +124,11 @@ public class EUC_JP_Open ...@@ -125,10 +124,11 @@ public class EUC_JP_Open
JIS_X_0201.Encoder encoderJ0201; JIS_X_0201.Encoder encoderJ0201;
JIS_X_0212_Solaris_Encoder encoderJ0212; JIS_X_0212_Solaris_Encoder encoderJ0212;
JIS_X_0208_Solaris_Encoder encoderJ0208;
short[] j0208Index1; private static final short[] j0208Index1 =
String[] j0208Index2; JIS_X_0208_Solaris_Encoder.getIndex1();
private static final String[] j0208Index2 =
JIS_X_0208_Solaris_Encoder.getIndex2();
private final Surrogate.Parser sgp = new Surrogate.Parser(); private final Surrogate.Parser sgp = new Surrogate.Parser();
...@@ -136,9 +136,6 @@ public class EUC_JP_Open ...@@ -136,9 +136,6 @@ public class EUC_JP_Open
super(cs); super(cs);
encoderJ0201 = new JIS_X_0201.Encoder(cs); encoderJ0201 = new JIS_X_0201.Encoder(cs);
encoderJ0212 = new JIS_X_0212_Solaris_Encoder(cs); encoderJ0212 = new JIS_X_0212_Solaris_Encoder(cs);
encoderJ0208 = new JIS_X_0208_Solaris_Encoder(cs);
j0208Index1 = encoderJ0208.getIndex1();
j0208Index2 = encoderJ0208.getIndex2();
} }
protected int encodeSingle(char inputChar, byte[] outputByte) { protected int encodeSingle(char inputChar, byte[] outputByte) {
......
...@@ -423,7 +423,7 @@ public class EUC_TW extends Charset implements HistoricallyNamedCharset ...@@ -423,7 +423,7 @@ public class EUC_TW extends Charset implements HistoricallyNamedCharset
if (dst.remaining() < outSize) if (dst.remaining() < outSize)
return CoderResult.OVERFLOW; return CoderResult.OVERFLOW;
for (int i = 0; i < outSize; i++) for (int i = 0; i < outSize; i++)
dst.put((byte)bb[i]); dst.put(bb[i]);
mark += inSize; mark += inSize;
} }
return CoderResult.UNDERFLOW; return CoderResult.UNDERFLOW;
......
...@@ -12339,7 +12339,7 @@ public class GB18030 ...@@ -12339,7 +12339,7 @@ public class GB18030
int start = 0x40, end = 0xFE; int start = 0x40, end = 0xFE;
if (((byte1 < 0) || (byte1 > index1.length)) if (((byte1 < 0) || (byte1 > index1.length))
|| ((byte2 < start) || (byte2 > end))) || ((byte2 < start) || (byte2 > end)))
return (char)'\uFFFD'; return '\uFFFD';
int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start); int n = (index1[byte1] & 0xf) * (end - start + 1) + (byte2 - start);
return index2[index1[byte1] >> 4].charAt(n); return index2[index1[byte1] >> 4].charAt(n);
......
...@@ -43,7 +43,7 @@ public class HKSCS { ...@@ -43,7 +43,7 @@ public class HKSCS {
private char[][] b2cBmp; private char[][] b2cBmp;
private char[][] b2cSupp; private char[][] b2cSupp;
private static DoubleByte.Decoder big5Dec; private DoubleByte.Decoder big5Dec;
protected Decoder(Charset cs, protected Decoder(Charset cs,
DoubleByte.Decoder big5Dec, DoubleByte.Decoder big5Dec,
...@@ -355,7 +355,7 @@ public class HKSCS { ...@@ -355,7 +355,7 @@ public class HKSCS {
c2b[hi] = new char[0x100]; c2b[hi] = new char[0x100];
Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING); Arrays.fill(c2b[hi], (char)UNMAPPABLE_ENCODING);
} }
c2b[hi][c & 0xff] = (char)bb; c2b[hi][c & 0xff] = bb;
} }
c++; c++;
} }
......
...@@ -104,15 +104,15 @@ abstract class ISO2022 ...@@ -104,15 +104,15 @@ abstract class ISO2022
switch(shiftFlag) { switch(shiftFlag) {
case SOFlag: case SOFlag:
tmpIndex = curSODes; tmpIndex = curSODes;
tmpDecoder = (CharsetDecoder [])SODecoder; tmpDecoder = SODecoder;
break; break;
case SS2Flag: case SS2Flag:
tmpIndex = curSS2Des; tmpIndex = curSS2Des;
tmpDecoder = (CharsetDecoder [])SS2Decoder; tmpDecoder = SS2Decoder;
break; break;
case SS3Flag: case SS3Flag:
tmpIndex = curSS3Des; tmpIndex = curSS3Des;
tmpDecoder = (CharsetDecoder [])SS3Decoder; tmpDecoder = SS3Decoder;
break; break;
} }
......
...@@ -82,11 +82,11 @@ public class JISAutoDetect ...@@ -82,11 +82,11 @@ public class JISAutoDetect
* with the sun.io JISAutoDetect implementation * with the sun.io JISAutoDetect implementation
*/ */
public byte[] getByteMask1() { public static byte[] getByteMask1() {
return Decoder.maskTable1; return Decoder.maskTable1;
} }
public byte[] getByteMask2() { public static byte[] getByteMask2() {
return Decoder.maskTable2; return Decoder.maskTable2;
} }
......
...@@ -101,17 +101,15 @@ public class PCK ...@@ -101,17 +101,15 @@ public class PCK
private static class Encoder extends SJIS.Encoder { private static class Encoder extends SJIS.Encoder {
private JIS_X_0201.Encoder jis0201; private JIS_X_0201.Encoder jis0201;
private JIS_X_0208_Solaris_Encoder jis0208;
short[] j0208Index1; private static final short[] j0208Index1 =
String[] j0208Index2; JIS_X_0208_Solaris_Encoder.getIndex1();
private static final String[] j0208Index2 =
JIS_X_0208_Solaris_Encoder.getIndex2();
private Encoder(Charset cs) { private Encoder(Charset cs) {
super(cs); super(cs);
jis0201 = new JIS_X_0201.Encoder(cs); jis0201 = new JIS_X_0201.Encoder(cs);
jis0208 = new JIS_X_0208_Solaris_Encoder(cs);
j0208Index1 = jis0208.getIndex1();
j0208Index2 = jis0208.getIndex2();
} }
protected int encodeDouble(char ch) { protected int encodeDouble(char ch) {
...@@ -121,7 +119,7 @@ public class PCK ...@@ -121,7 +119,7 @@ public class PCK
switch (ch) { switch (ch) {
case '\u2015': case '\u2015':
return (int)0x815C; return 0x815C;
case '\u2014': case '\u2014':
return 0; return 0;
default: default:
......
...@@ -114,14 +114,14 @@ public class SJIS ...@@ -114,14 +114,14 @@ public class SJIS
private JIS_X_0201.Encoder jis0201; private JIS_X_0201.Encoder jis0201;
short[] j0208Index1; private static final short[] j0208Index1 =
String[] j0208Index2; JIS_X_0208_Encoder.getIndex1();
private static final String[] j0208Index2 =
JIS_X_0208_Encoder.getIndex2();
protected Encoder(Charset cs) { protected Encoder(Charset cs) {
super(cs); super(cs);
jis0201 = new JIS_X_0201.Encoder(cs); jis0201 = new JIS_X_0201.Encoder(cs);
j0208Index1 = super.getIndex1();
j0208Index2 = super.getIndex2();
} }
protected int encodeSingle(char inputChar) { protected int encodeSingle(char inputChar) {
......
...@@ -43,8 +43,8 @@ public class COMPOUND_TEXT_Encoder extends CharsetEncoder { ...@@ -43,8 +43,8 @@ public class COMPOUND_TEXT_Encoder extends CharsetEncoder {
* cannot be used for actual encoding because they are shared across all * cannot be used for actual encoding because they are shared across all
* COMPOUND_TEXT encoders and may be stateful. * COMPOUND_TEXT encoders and may be stateful.
*/ */
private static final Map encodingToEncoderMap = private static final Map<String,CharsetEncoder> encodingToEncoderMap =
Collections.synchronizedMap(new HashMap(21, 1.0f)); Collections.synchronizedMap(new HashMap<String,CharsetEncoder>(21, 1.0f));
private static final CharsetEncoder latin1Encoder; private static final CharsetEncoder latin1Encoder;
private static final CharsetEncoder defaultEncoder; private static final CharsetEncoder defaultEncoder;
private static final boolean defaultEncodingSupported; private static final boolean defaultEncodingSupported;
...@@ -221,7 +221,7 @@ public class COMPOUND_TEXT_Encoder extends CharsetEncoder { ...@@ -221,7 +221,7 @@ public class COMPOUND_TEXT_Encoder extends CharsetEncoder {
out.put((byte)0x1B); out.put((byte)0x1B);
out.put((byte)0x25); out.put((byte)0x25);
out.put((byte)0x2F); out.put((byte)0x2F);
out.put((byte)nonStandardBytes[3]); out.put(nonStandardBytes[3]);
int toWrite = Math.min(numBytes - nonStandardBytesOff, int toWrite = Math.min(numBytes - nonStandardBytesOff,
(1 << 14) - 1 - nonStandardEncodingLen); (1 << 14) - 1 - nonStandardEncodingLen);
...@@ -313,12 +313,9 @@ public class COMPOUND_TEXT_Encoder extends CharsetEncoder { ...@@ -313,12 +313,9 @@ public class COMPOUND_TEXT_Encoder extends CharsetEncoder {
} }
// 4. Brute force search of all supported encodings. // 4. Brute force search of all supported encodings.
for (Iterator iter = CompoundTextSupport.getEncodings().iterator(); for (String encoding : CompoundTextSupport.getEncodings())
iter.hasNext();)
{ {
String encoding = (String)iter.next(); CharsetEncoder enc = encodingToEncoderMap.get(encoding);
CharsetEncoder enc =
(CharsetEncoder)encodingToEncoderMap.get(encoding);
if (enc == null) { if (enc == null) {
enc = CompoundTextSupport.getEncoder(encoding); enc = CompoundTextSupport.getEncoder(encoding);
if (enc == null) { if (enc == null) {
......
...@@ -130,13 +130,13 @@ final class CompoundTextSupport { ...@@ -130,13 +130,13 @@ final class CompoundTextSupport {
/** /**
* Maps a GL or GR escape sequence to an encoding. * Maps a GL or GR escape sequence to an encoding.
*/ */
private static final Map sequenceToEncodingMap; private static final Map<ControlSequence, String> sequenceToEncodingMap;
/** /**
* Indicates whether a particular encoding wants the high bit turned on * Indicates whether a particular encoding wants the high bit turned on
* or off. * or off.
*/ */
private static final Map highBitsMap; private static final Map<ControlSequence, Boolean> highBitsMap;
/** /**
* Maps an encoding to an escape sequence. Rather than manage two * Maps an encoding to an escape sequence. Rather than manage two
...@@ -144,18 +144,21 @@ final class CompoundTextSupport { ...@@ -144,18 +144,21 @@ final class CompoundTextSupport {
* modify both GL and GR if necessary. This makes the output slightly less * modify both GL and GR if necessary. This makes the output slightly less
* efficient, but our code much simpler. * efficient, but our code much simpler.
*/ */
private static final Map encodingToSequenceMap; private static final Map<String, ControlSequence> encodingToSequenceMap;
/** /**
* The keys of 'encodingToSequenceMap', sorted in preferential order. * The keys of 'encodingToSequenceMap', sorted in preferential order.
*/ */
private static final List encodings; private static final List<String> encodings;
static { static {
HashMap tSequenceToEncodingMap = new HashMap(33, 1.0f); HashMap<ControlSequence, String> tSequenceToEncodingMap =
HashMap tHighBitsMap = new HashMap(31, 1.0f); new HashMap<>(33, 1.0f);
HashMap tEncodingToSequenceMap = new HashMap(21, 1.0f); HashMap<ControlSequence, Boolean> tHighBitsMap =
ArrayList tEncodings = new ArrayList(21); new HashMap<>(31, 1.0f);
HashMap<String, ControlSequence> tEncodingToSequenceMap =
new HashMap<>(21, 1.0f);
ArrayList<String> tEncodings = new ArrayList<>(21);
if (!(isEncodingSupported("US-ASCII") && if (!(isEncodingSupported("US-ASCII") &&
isEncodingSupported("ISO-8859-1"))) isEncodingSupported("ISO-8859-1")))
...@@ -457,13 +460,12 @@ final class CompoundTextSupport { ...@@ -457,13 +460,12 @@ final class CompoundTextSupport {
return getNonStandardDecoder(escSequence, null); return getNonStandardDecoder(escSequence, null);
} }
static boolean getHighBit(byte[] escSequence) { static boolean getHighBit(byte[] escSequence) {
Boolean bool = (Boolean)highBitsMap.get Boolean bool = highBitsMap.get(new ControlSequence(escSequence));
(new ControlSequence(escSequence));
return (bool == Boolean.TRUE); return (bool == Boolean.TRUE);
} }
static CharsetDecoder getNonStandardDecoder(byte[] escSequence, static CharsetDecoder getNonStandardDecoder(byte[] escSequence,
byte[] encoding) { byte[] encoding) {
return getDecoder((String)sequenceToEncodingMap.get return getDecoder(sequenceToEncodingMap.get
(new ControlSequence(escSequence, encoding))); (new ControlSequence(escSequence, encoding)));
} }
static CharsetDecoder getDecoder(String enc) { static CharsetDecoder getDecoder(String enc) {
...@@ -474,7 +476,7 @@ final class CompoundTextSupport { ...@@ -474,7 +476,7 @@ final class CompoundTextSupport {
try { try {
cs = Charset.forName(enc); cs = Charset.forName(enc);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
Class cls; Class<?> cls;
try { try {
cls = Class.forName("sun.awt.motif." + enc); cls = Class.forName("sun.awt.motif." + enc);
} catch (ClassNotFoundException ee) { } catch (ClassNotFoundException ee) {
...@@ -497,22 +499,20 @@ final class CompoundTextSupport { ...@@ -497,22 +499,20 @@ final class CompoundTextSupport {
// For Encoder // For Encoder
static byte[] getEscapeSequence(String encoding) { static byte[] getEscapeSequence(String encoding) {
ControlSequence seq = (ControlSequence) ControlSequence seq = encodingToSequenceMap.get(encoding);
encodingToSequenceMap.get(encoding);
if (seq != null) { if (seq != null) {
return seq.escSequence; return seq.escSequence;
} }
return null; return null;
} }
static byte[] getEncoding(String encoding) { static byte[] getEncoding(String encoding) {
ControlSequence seq = (ControlSequence) ControlSequence seq = encodingToSequenceMap.get(encoding);
encodingToSequenceMap.get(encoding);
if (seq != null) { if (seq != null) {
return seq.encoding; return seq.encoding;
} }
return null; return null;
} }
static List getEncodings() { static List<String> getEncodings() {
return encodings; return encodings;
} }
static CharsetEncoder getEncoder(String enc) { static CharsetEncoder getEncoder(String enc) {
...@@ -523,7 +523,7 @@ final class CompoundTextSupport { ...@@ -523,7 +523,7 @@ final class CompoundTextSupport {
try { try {
cs = Charset.forName(enc); cs = Charset.forName(enc);
} catch (IllegalArgumentException e) { } catch (IllegalArgumentException e) {
Class cls; Class<?> cls;
try { try {
cls = Class.forName("sun.awt.motif." + enc); cls = Class.forName("sun.awt.motif." + enc);
} catch (ClassNotFoundException ee) { } catch (ClassNotFoundException ee) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册