// 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:   CharacterConverterSJIS.java
// Class Version:      45.3

package oracle.sql.converter;

import java.sql.SQLException;

// Referenced classes of package oracle.sql.converter:
//            CharacterConverter12Byte, CharacterConverter

// flag ACC_SUPER is set
public class CharacterConverterSJIS extends CharacterConverter12Byte
{
    // Constants:          49
    // Interfaces:         0
    // Fields:             2
    // Methods:            3
    // Class Attributes:   1


    static final short MIN_8BIT_SB = 161;
    static final short MAX_8BIT_SB = 223;

    // Decompiling method: <init>  Signature: ()V
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 10 bytes, Code offset: 708
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverterSJIS; At 0 10 Range 0 9 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type V At 0 10 Range 0 9 Init 0 fixed
    public CharacterConverterSJIS()
    {
        super();
        m_groupId = 4;
        return;
    }

    // Decompiling method: toUnicodeString  Signature: ([BII)Ljava/lang/String;
    // Max stack: 5, #locals: 9, #params: 4
    // Code length: 137 bytes, Code offset: 764
    // Line Number Table found: 19 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverterSJIS; At 0 137 Range 0 136 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 137 Range 0 136 Init 0
    // Parameter  2 added: Name i Type I At 0 137 Range 0 136 Init 0
    // Parameter  3 added: Name j Type I At 0 137 Range 0 136 Init 0
    // RetValue   9 added: Name <returnValue> Type Ljava/lang/String; At 0 137 Range 0 136 Init 0 fixed
    // LocalVar   4 added: Name k Type I At 3 118 Range 3 120 Init 3
    // LocalVar   5 added: Name ac Type [C At 8 122 Range 8 129 Init 8
    // LocalVar   6 added: Name l Type I At 11 108 Range 11 118 Init 11
    // LocalVar   7 added: Name flag Type Z At 14 119 Range 14 132 Init 14
    // LocalVar   7 chged: Name i1 Oname flag Type I At 131 2 Range 14 132 Init 14
    // LocalVar   8 added: Name j1 Type I At 27 83 Range 27 109 Init 27
    public String toUnicodeString(byte abyte0[], int i, int j)
        throws SQLException
    {
        int k = i + j;
        char ac[] = new char[j];
        int l = i;
        int i1 = 0;
        for(; l < k; l++)
        {
            int j1 = abyte0[l] & 0xff;
            if(j1 > 223 || j1 > 127 && j1 < 161)
            {
                if(l < k - 1)
                {
                    j1 = abyte0[l] << 8 & 0xff00 | abyte0[l + 1] & 0xff;
                    l++;
                } else
                {
                    throw new SQLException("Cannot map Oracle character to Unicode.");
                }
            }
            ac[i1++] = toUnicode(j1);
        }

        return new String(ac, 0, i1);
    }

    // Decompiling method: toUnicodeStringWithReplacement  Signature: ([BII)Ljava/lang/String;
    // Max stack: 5, #locals: 9, #params: 4
    // Code length: 126 bytes, Code offset: 1021
    // Line Number Table found: 17 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverterSJIS; At 0 126 Range 0 125 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 126 Range 0 125 Init 0
    // Parameter  2 added: Name i Type I At 0 126 Range 0 125 Init 0
    // Parameter  3 added: Name j Type I At 0 126 Range 0 125 Init 0
    // RetValue   9 added: Name <returnValue> Type Ljava/lang/String; At 0 126 Range 0 125 Init 0 fixed
    // LocalVar   4 added: Name k Type I At 3 107 Range 3 109 Init 3
    // LocalVar   5 added: Name ac Type [C At 8 111 Range 8 118 Init 8
    // LocalVar   6 added: Name flag Type Z At 11 97 Range 11 107 Init 11
    // LocalVar   7 added: Name flag1 Type Z At 14 108 Range 14 121 Init 14
    // LocalVar   6 chged: Name l Oname flag Type I At 106 2 Range 11 107 Init 11
    // LocalVar   7 chged: Name i1 Oname flag1 Type I At 120 2 Range 14 121 Init 14
    // LocalVar   8 added: Name j1 Type I At 29 70 Range 29 98 Init 29
    public String toUnicodeStringWithReplacement(byte abyte0[], int i, int j)
    {
        int k = i + j;
        char ac[] = new char[j];
        int l = 0;
        int i1 = 0;
        for(; l < k; l++)
        {
            int j1 = abyte0[i + l] & 0xff;
            if((j1 > 223 || j1 > 127 && j1 < 161) && l < k - 1)
            {
                j1 = abyte0[l] << 8 & 0xff00 | abyte0[l + 1] & 0xff;
                l++;
            }
            ac[i1++] = toUnicodeWithReplacement(j1);
        }

        return new String(ac, 0, i1);
    }
}
