// 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:   CharacterConverter2ByteFixed.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 CharacterConverter2ByteFixed extends CharacterConverter12Byte
{
    // Constants:          67
    // Interfaces:         0
    // Fields:             0
    // Methods:            5
    // Class Attributes:   1


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

    // Decompiling method: toOracleString  Signature: (Ljava/lang/String;)[B
    // Max stack: 5, #locals: 9, #params: 2
    // Code length: 116 bytes, Code offset: 989
    // Line Number Table found: 22 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverter2ByteFixed; At 0 116 Range 0 115 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 116 Range 0 115 Init 0
    // RetValue   9 added: Name <returnValue> Type [B At 0 116 Range 0 115 Init 0 fixed
    // LocalVar   2 added: Name i Type I At 4 78 Range 4 81 Init 4
    // LocalVar   3 added: Name ac Type [C At 16 27 Range 16 42 Init 16
    // LocalVar   4 added: Name abyte0 Type [B At 30 85 Range 30 114 Init 30
    // LocalVar   6 added: Name flag Type Z At 33 74 Range 33 106 Init 33
    // LocalVar   7 added: Name flag1 Type Z At 36 45 Range 36 80 Init 36
    // LocalVar   7 chged: Name j Oname flag1 Type I At 79 2 Range 36 80 Init 36
    // LocalVar   6 chged: Name k Oname flag Type I At 85 2 Range 33 106 Init 33
    // LocalVar   8 added: Name abyte1 Type [B At 97 15 Range 97 111 Init 97
    // LocalVar   5 added: Name c Type C At 49 25 Range 49 73 Init 49
    public byte[] toOracleString(String s)
        throws SQLException
    {
        int i = s.length();
        if(i == 0)
        {
            return new byte[0];
        }
        char ac[] = new char[i];
        s.getChars(0, i, ac, 0);
        byte abyte0[] = new byte[i * 2];
        int j = 0;
        for(int k = 0; k < i; k++)
        {
            char c = toOracleCharacter(ac[k]);
            abyte0[j++] = (byte)(c >> 8);
            abyte0[j++] = (byte)c;
        }

        if(j < abyte0.length)
        {
            byte abyte1[] = new byte[j];
            System.arraycopy(abyte0, 0, abyte1, 0, j);
            return abyte1;
        } else
        {
            return abyte0;
        }
    }

    // Decompiling method: toOracleStringWithReplacement  Signature: (Ljava/lang/String;)[B
    // Max stack: 5, #locals: 9, #params: 2
    // Code length: 116 bytes, Code offset: 1237
    // Line Number Table found: 22 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverter2ByteFixed; At 0 116 Range 0 115 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 116 Range 0 115 Init 0
    // RetValue   9 added: Name <returnValue> Type [B At 0 116 Range 0 115 Init 0 fixed
    // LocalVar   2 added: Name i Type I At 4 78 Range 4 81 Init 4
    // LocalVar   3 added: Name ac Type [C At 16 27 Range 16 42 Init 16
    // LocalVar   4 added: Name abyte0 Type [B At 30 85 Range 30 114 Init 30
    // LocalVar   6 added: Name flag Type Z At 33 74 Range 33 106 Init 33
    // LocalVar   7 added: Name flag1 Type Z At 36 45 Range 36 80 Init 36
    // LocalVar   7 chged: Name j Oname flag1 Type I At 79 2 Range 36 80 Init 36
    // LocalVar   6 chged: Name k Oname flag Type I At 85 2 Range 33 106 Init 33
    // LocalVar   8 added: Name abyte1 Type [B At 97 15 Range 97 111 Init 97
    // LocalVar   5 added: Name c Type C At 49 25 Range 49 73 Init 49
    public byte[] toOracleStringWithReplacement(String s)
    {
        int i = s.length();
        if(i == 0)
        {
            return new byte[0];
        }
        char ac[] = new char[i];
        s.getChars(0, i, ac, 0);
        byte abyte0[] = new byte[i * 2];
        int j = 0;
        for(int k = 0; k < i; k++)
        {
            char c = toOracleCharacterWithReplacement(ac[k]);
            abyte0[j++] = (byte)(c >> 8);
            abyte0[j++] = (byte)c;
        }

        if(j < abyte0.length)
        {
            byte abyte1[] = new byte[j];
            System.arraycopy(abyte0, 0, abyte1, 0, j);
            return abyte1;
        } else
        {
            return abyte0;
        }
    }

    // Decompiling method: toUnicodeString  Signature: ([BII)Ljava/lang/String;
    // Max stack: 5, #locals: 9, #params: 4
    // Code length: 114 bytes, Code offset: 1475
    // Line Number Table found: 17 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverter2ByteFixed; At 0 114 Range 0 113 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 114 Range 0 113 Init 0
    // Parameter  2 added: Name i Type I At 0 114 Range 0 113 Init 0
    // Parameter  3 added: Name j Type I At 0 114 Range 0 113 Init 0
    // RetValue   9 added: Name <returnValue> Type Ljava/lang/String; At 0 114 Range 0 113 Init 0 fixed
    // LocalVar   4 added: Name k Type I At 3 95 Range 3 97 Init 3
    // LocalVar   5 added: Name ac Type [C At 8 99 Range 8 106 Init 8
    // LocalVar   6 added: Name l Type I At 11 85 Range 11 95 Init 11
    // LocalVar   7 added: Name flag Type Z At 14 96 Range 14 109 Init 14
    // LocalVar   7 chged: Name i1 Oname flag Type I At 108 2 Range 14 109 Init 14
    // LocalVar   8 added: Name j1 Type I At 27 2 Range 27 28 Init 27
    // LocalVar   8 added: Name k1 Type I At 59 28 Range 59 86 Init 59
    // LocalVar   8 name k1(I) merged out into j1(I)
    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(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: 104 bytes, Code offset: 1701
    // Line Number Table found: 16 entries
    // Parameter  0 added: Name this Type Loracle/sql/converter/CharacterConverter2ByteFixed; At 0 104 Range 0 103 Init 0 fixed
    // Parameter  1 added: Name abyte0 Type [B At 0 104 Range 0 103 Init 0
    // Parameter  2 added: Name i Type I At 0 104 Range 0 103 Init 0
    // Parameter  3 added: Name j Type I At 0 104 Range 0 103 Init 0
    // RetValue   9 added: Name <returnValue> Type Ljava/lang/String; At 0 104 Range 0 103 Init 0 fixed
    // LocalVar   4 added: Name k Type I At 3 85 Range 3 87 Init 3
    // LocalVar   5 added: Name ac Type [C At 8 89 Range 8 96 Init 8
    // LocalVar   6 added: Name l Type I At 11 75 Range 11 85 Init 11
    // LocalVar   7 added: Name flag Type Z At 14 86 Range 14 99 Init 14
    // LocalVar   8 added: Name flag1 Type Z At 17 2 Range 17 18 Init 17
    // LocalVar   7 chged: Name i1 Oname flag Type I At 98 2 Range 14 99 Init 14
    // LocalVar   8 added: Name j1 Type I At 30 47 Range 30 76 Init 30
    public String toUnicodeStringWithReplacement(byte abyte0[], int i, int j)
    {
        int k = i + j;
        char ac[] = new char[j];
        int l = i;
        int i1 = 0;
        boolean flag = false;
        for(; l < k; l++)
        {
            int j1 = abyte0[l] & 0xff;
            if(l < k - 1)
            {
                j1 = abyte0[l] << 8 & 0xff00 | abyte0[l + 1] & 0xff;
                l++;
            }
            ac[i1++] = toUnicodeWithReplacement(j1);
        }

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