// Decompiled by Jad v1.5.7f. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) braces deadcode fieldsfirst 
// Source File Name:   CharacterSetAL16UTF16LE.java
// Class Version:      45.3

package oracle.sql;

import java.sql.SQLException;

// Referenced classes of package oracle.sql:
//            CharacterSet, CharacterBuffer, CharacterRepConstants, CharacterWalker

// flag ACC_SUPER is set
class CharacterSetAL16UTF16LE extends CharacterSet
    implements CharacterRepConstants
{
    // Constants:          85
    // Interfaces:         1
    // Fields:             0
    // Methods:            11
    // Class Attributes:   1


    // Decompiling method: <init>  Signature: (I)V
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 11 bytes, Code offset: 1022
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 11 Range 0 10 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 11 Range 0 10 Init 0
    // RetValue   2 added: Name <returnValue> Type V At 0 11 Range 0 10 Init 0 fixed
    CharacterSetAL16UTF16LE(int i)
    {
        super(i);
        rep = 5;
        return;
    }

    // Decompiling method: convert  Signature: (Ljava/lang/String;)[B
    // Max stack: 1, #locals: 2, #params: 2
    // Code length: 5 bytes, Code offset: 1079
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 5 Range 0 4 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 5 Range 0 4 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 5 Range 0 4 Init 0 fixed
    public byte[] convert(String s)
        throws SQLException
    {
        return CharacterSet.stringToAL16UTF16LEBytes(s);
    }

    // Decompiling method: convert  Signature: (Loracle/sql/CharacterSet;[BII)[B
    // Max stack: 4, #locals: 7, #params: 5
    // Code length: 40 bytes, Code offset: 1132
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 40 Range 0 39 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 40 Range 0 39 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 40 Range 0 39 Init 0
    // Parameter  3 added: Name i Type I At 0 40 Range 0 39 Init 0
    // Parameter  4 added: Name j Type I At 0 40 Range 0 39 Init 0
    // RetValue   7 added: Name <returnValue> Type [B At 0 40 Range 0 39 Init 0 fixed
    // LocalVar   5 added: Name abyte1 Type [B At 15 24 Range 15 38 Init 15
    // LocalVar   6 added: Name s Type Ljava/lang/String; At 28 4 Range 28 31 Init 28
    public byte[] convert(CharacterSet characterset, byte abyte0[], int i, int j)
        throws SQLException
    {
        byte abyte1[];
        if(characterset.rep == 5)
        {
            abyte1 = CharacterSet.useOrCopy(abyte0, i, j);
        } else
        {
            String s = characterset.toString(abyte0, i, j);
            abyte1 = CharacterSet.stringToAL16UTF16LEBytes(s);
        }
        return abyte1;
    }

    // Decompiling method: convertWithReplacement  Signature: (Ljava/lang/String;)[B
    // Max stack: 1, #locals: 2, #params: 2
    // Code length: 5 bytes, Code offset: 1240
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 5 Range 0 4 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 5 Range 0 4 Init 0
    // RetValue   2 added: Name <returnValue> Type [B At 0 5 Range 0 4 Init 0 fixed
    public byte[] convertWithReplacement(String s)
    {
        return CharacterSet.stringToAL16UTF16LEBytes(s);
    }

    // Decompiling method: decode  Signature: (Loracle/sql/CharacterWalker;)I
    // Max stack: 2, #locals: 8, #params: 2
    // Code length: 68 bytes, Code offset: 1283
    // Line Number Table found: 10 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 68 Range 0 67 Init 0 fixed
    // Parameter  1 added: Name characterwalker Type Loracle/sql/CharacterWalker; At 0 68 Range 0 67 Init 0
    // RetValue   8 added: Name <returnValue> Type I At 0 68 Range 0 67 Init 0 fixed
    // LocalVar   4 added: Name abyte0 Type [B At 4 37 Range 4 40 Init 4
    // LocalVar   5 added: Name i Type I At 10 52 Range 10 61 Init 10
    // LocalVar   6 added: Name j Type I At 16 8 Range 16 23 Init 16
    // LocalVar   2 added: Name byte0 Type B At 38 11 Range 38 48 Init 38
    // LocalVar   3 added: Name byte1 Type B At 47 9 Range 47 55 Init 47
    // LocalVar   7 added: Name k Type I At 57 10 Range 57 66 Init 57
    int decode(CharacterWalker characterwalker)
        throws SQLException
    {
        byte abyte0[] = characterwalker.bytes;
        int i = characterwalker.next;
        int j = characterwalker.end;
        if(i + 2 >= j)
        {
            CharacterSet.failUTFConversion();
        }
        byte byte0 = abyte0[i++];
        byte byte1 = abyte0[i++];
        int k = byte0 << 8 & 0xff00 | byte1;
        characterwalker.next = i;
        return k;
    }

    // Decompiling method: encode  Signature: (Loracle/sql/CharacterBuffer;I)V
    // Max stack: 5, #locals: 3, #params: 3
    // Code length: 65 bytes, Code offset: 1435
    // Line Number Table found: 7 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 65 Range 0 64 Init 0 fixed
    // Parameter  1 added: Name characterbuffer Type Loracle/sql/CharacterBuffer; At 0 65 Range 0 64 Init 0
    // Parameter  2 added: Name i Type I At 0 65 Range 0 64 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 65 Range 0 64 Init 0 fixed
    void encode(CharacterBuffer characterbuffer, int i)
        throws SQLException
    {
        if(i > 65535)
        {
            CharacterSet.failUTFConversion();
        } else
        {
            CharacterSet.need(characterbuffer, 2);
            characterbuffer.bytes[characterbuffer.next++] = (byte)(i >> 8 & 0xff);
            characterbuffer.bytes[characterbuffer.next++] = (byte)(i & 0xff);
        }
        return;
    }

    // Decompiling method: isConvertibleFrom  Signature: (Loracle/sql/CharacterSet;)Z
    // Max stack: 2, #locals: 3, #params: 2
    // Code length: 18 bytes, Code offset: 1572
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 18 Range 0 17 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 18 Range 0 17 Init 0
    // RetValue   3 added: Name <returnValue> Type Z At 0 18 Range 0 17 Init 0 fixed
    // LocalVar   2 added: Name flag Type Z At 15 2 Range 15 16 Init 15
    public boolean isConvertibleFrom(CharacterSet characterset)
    {
        boolean flag = characterset.rep <= 1024;
        return flag;
    }

    // Decompiling method: isLossyFrom  Signature: (Loracle/sql/CharacterSet;)Z
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 7 bytes, Code offset: 1632
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 7 Range 0 6 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 7 Range 0 6 Init 0
    // RetValue   2 added: Name <returnValue> Type Z At 0 7 Range 0 6 Init 0 fixed
    public boolean isLossyFrom(CharacterSet characterset)
    {
        return characterset.isUnicode() ^ true;
    }

    // Decompiling method: isUnicode  Signature: ()Z
    // Max stack: 1, #locals: 1, #params: 1
    // Code length: 2 bytes, Code offset: 1677
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 2 Range 0 1 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type Z At 0 2 Range 0 1 Init 0 fixed
    public boolean isUnicode()
    {
        return true;
    }

    // Decompiling method: toString  Signature: ([BII)Ljava/lang/String;
    // Max stack: 4, #locals: 4, #params: 4
    // Code length: 8 bytes, Code offset: 1717
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 8 Range 0 7 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 8 Range 0 7 Init 0
    // Parameter  2 added: Name i Type I At 0 8 Range 0 7 Init 0
    // Parameter  3 added: Name j Type I At 0 8 Range 0 7 Init 0
    // RetValue   4 added: Name <returnValue> Type Ljava/lang/String; At 0 8 Range 0 7 Init 0 fixed
    public String toString(byte abyte0[], int i, int j)
        throws SQLException
    {
        return toStringWithReplacement(abyte0, i, j);
    }

    // Decompiling method: toStringWithReplacement  Signature: ([BII)Ljava/lang/String;
    // Max stack: 3, #locals: 5, #params: 4
    // Code length: 18 bytes, Code offset: 1773
    // Line Number Table found: 2 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetAL16UTF16LE; At 0 18 Range 0 17 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 18 Range 0 17 Init 0
    // Parameter  2 added: Name i Type I At 0 18 Range 0 17 Init 0
    // Parameter  3 added: Name j Type I At 0 18 Range 0 17 Init 0
    // RetValue   5 added: Name <returnValue> Type Ljava/lang/String; At 0 18 Range 0 17 Init 0 fixed
    // LocalVar   4 added: Name ac Type [C At 6 8 Range 6 13 Init 6
    public String toStringWithReplacement(byte abyte0[], int i, int j)
    {
        char ac[] = CharacterSet.AL16UTF16LEBytesToJavaChars(abyte0, i, j);
        return new String(ac);
    }
}
