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

package oracle.sql;

import java.sql.SQLException;
import oracle.sql.converter.CharacterConverter;

// Referenced classes of package oracle.sql:
//            CharacterSet, CharacterSet12Byte, CharacterSet1Byte, CharacterSet2ByteFixed, 
//            CharacterSetGB18030, CharacterSetJAEUC, CharacterSetLCFixed, CharacterSetSJIS, 
//            CharacterSetShift, CharacterSetZHTEUC

// flag ACC_SUPER is set
abstract class CharacterSetWithConverter extends CharacterSet
{
    // Constants:          107
    // Interfaces:         0
    // Fields:             1
    // Methods:            9
    // Class Attributes:   1


    CharacterConverter m_converter;

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

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

    // Decompiling method: convert  Signature: (Loracle/sql/CharacterSet;[BII)[B
    // Max stack: 5, #locals: 5, #params: 5
    // Code length: 32 bytes, Code offset: 2194
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetWithConverter; At 0 32 Range 0 31 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 32 Range 0 31 Init 0
    // Parameter  2 added: Name abyte0 Type [B At 0 32 Range 0 31 Init 0
    // Parameter  3 added: Name i Type I At 0 32 Range 0 31 Init 0
    // Parameter  4 added: Name j Type I At 0 32 Range 0 31 Init 0
    // RetValue   5 added: Name <returnValue> Type [B At 0 32 Range 0 31 Init 0 fixed
    public byte[] convert(CharacterSet characterset, byte abyte0[], int i, int j)
        throws SQLException
    {
        if(characterset.getOracleId() == getOracleId())
        {
            return CharacterSet.useOrCopy(abyte0, i, j);
        } else
        {
            return convert(characterset.toString(abyte0, i, j));
        }
    }

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

    // Decompiling method: getInstance  Signature: (I)Loracle/sql/CharacterSet;
    // Max stack: 2, #locals: 3, #params: 1
    // Code length: 115 bytes, Code offset: 2329
    // Line Number Table found: 37 entries
    // Parameter  0 added: Name i Type I At 0 115 Range 0 114 Init 0
    // RetValue   3 added: Name <returnValue> Type Loracle/sql/CharacterSet; At 0 115 Range 0 114 Init 0 fixed
    // LocalVar   1 added: Name characterconverter Type Loracle/sql/converter/CharacterConverter; At 4 107 Range 4 110 Init 4
    // LocalVar   2 added: Name obj Type A At 12 1 Range 12 12 Init 12
    // LocalVar   2 added: Name characterset1byte Type Loracle/sql/CharacterSet1Byte; At 19 5 Range 19 23 Init 19
    // LocalVar   2 added: Name charactersetsjis Type Loracle/sql/CharacterSetSJIS; At 31 5 Range 31 35 Init 31
    // LocalVar   2 added: Name charactersetshift Type Loracle/sql/CharacterSetShift; At 43 5 Range 43 47 Init 43
    // LocalVar   2 added: Name characterset2bytefixed Type Loracle/sql/CharacterSet2ByteFixed; At 55 5 Range 55 59 Init 55
    // LocalVar   2 added: Name charactersetgb18030 Type Loracle/sql/CharacterSetGB18030; At 67 5 Range 67 71 Init 67
    // LocalVar   2 added: Name characterset12byte Type Loracle/sql/CharacterSet12Byte; At 79 5 Range 79 83 Init 79
    // LocalVar   2 added: Name charactersetjaeuc Type Loracle/sql/CharacterSetJAEUC; At 91 5 Range 91 95 Init 91
    // LocalVar   2 added: Name charactersetzhteuc Type Loracle/sql/CharacterSetZHTEUC; At 103 5 Range 103 107 Init 103
    // LocalVar   2 chged: Name characterset1byte1 Oname obj Type Loracle/sql/CharacterSet1Byte; At 12 1 Range 12 12 Init 12
    // LocalVar   2 name characterset1byte(Loracle/sql/CharacterSet1Byte;) merged out into characterset1byte1(Loracle/sql/CharacterSet1Byte;)
    // LocalVar   2 chged: Name obj Oname characterset1byte1 Type Ljava/lang/Object; At 12 12 Range 12 23 Init 12
    // LocalVar   2 name charactersetsjis(Loracle/sql/CharacterSetSJIS;) merged out into obj(Ljava/lang/Object;)
    // LocalVar   2 name charactersetshift(Loracle/sql/CharacterSetShift;) merged out into obj(Ljava/lang/Object;)
    // LocalVar   2 name characterset2bytefixed(Loracle/sql/CharacterSet2ByteFixed;) merged out into obj(Ljava/lang/Object;)
    // LocalVar   2 name charactersetgb18030(Loracle/sql/CharacterSetGB18030;) merged out into obj(Ljava/lang/Object;)
    // LocalVar   2 name characterset12byte(Loracle/sql/CharacterSet12Byte;) merged out into obj(Ljava/lang/Object;)
    // LocalVar   2 name charactersetjaeuc(Loracle/sql/CharacterSetJAEUC;) merged out into obj(Ljava/lang/Object;)
    // LocalVar   2 name charactersetzhteuc(Loracle/sql/CharacterSetZHTEUC;) merged out into obj(Ljava/lang/Object;)
    static CharacterSet getInstance(int i)
    {
        CharacterConverter characterconverter = CharacterConverter.getInstance(i);
        if(characterconverter == null)
        {
            return null;
        }
        Object obj = null;
        if((obj = CharacterSet1Byte.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSetSJIS.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSetShift.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSet2ByteFixed.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSetGB18030.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSet12Byte.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSetJAEUC.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        }
        if((obj = CharacterSetZHTEUC.getInstance(i, characterconverter)) != null)
        {
            return ((CharacterSet) (obj));
        } else
        {
            return CharacterSetLCFixed.getInstance(i, characterconverter);
        }
    }

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

    // Decompiling method: isLossyFrom  Signature: (Loracle/sql/CharacterSet;)Z
    // Max stack: 2, #locals: 2, #params: 2
    // Code length: 17 bytes, Code offset: 2681
    // Line Number Table found: 1 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetWithConverter; At 0 17 Range 0 16 Init 0 fixed
    // Parameter  1 added: Name characterset Type Loracle/sql/CharacterSet; At 0 17 Range 0 16 Init 0
    // RetValue   2 added: Name <returnValue> Type Z At 0 17 Range 0 16 Init 0 fixed
    public boolean isLossyFrom(CharacterSet characterset)
    {
        return characterset.getOracleId() != getOracleId();
    }

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

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