gcc/libjava/gnu/gcj/convert/Input_UnicodeLittle.java
Per Bothner 0fca95f56f Input_UnicodeBig.java: New class..
* gnu/gcj/convert/Input_UnicodeBig.java:  New class..
	* gnu/gcj/convert/Input_UnicodeLittle.java:  New class.
	* Makefile.am:  Update accordingly.
	* gnu/gcj/convert/IOConverter.java:  Define "utf-16le" and "utf16be"
	as aliases for UnicodeLittle and UnicodeBig.

From-SVN: r79723
2004-03-19 16:24:49 -08:00

50 lines
1.1 KiB
Java

/* Copyright (C) 2004 Free Software Foundation
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package gnu.gcj.convert;
public class Input_UnicodeLittle extends BytesToUnicode
{
/** 0, 8, or 16 bits of a partially constructed character. */
char partial;
/** How many bytes of partial are valid. */
int partial_count;
public String getName() { return "UnicodeLittle"; }
public int read (char[] outbuffer, int outpos, int count)
{
int origcount = count;
for (;;)
{
if (partial_count == 2)
{
if (count == 0)
break;
if (partial == 0xFEFF)
; // drop byte order mark
// else if (partial >= 0xFFFe) ERROR;
else
outbuffer[outpos++] = partial;
count--;
partial_count = 0;
partial = 0;
}
else if (inpos >= inlength)
break;
else
{
int b = inbuffer[inpos++] & 0xFF;
partial = (char) (partial | (b << (8 * partial_count)));
partial_count++;
}
}
return origcount - count;
}
}