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

package oracle.sql;

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

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

// flag ACC_SUPER is set
class CharacterSetZHTEUC extends CharacterSetWithConverter
{
    // Constants:          81
    // Interfaces:         0
    // Fields:             5
    // Methods:            4
    // Class Attributes:   1


    static final String CHAR_CONV_SUPERCLASS_NAME = "oracle.sql.converter.CharacterConverterZHTEUC";
    static final int MAX_7BIT = 127;
    static final int CHARLENGTH = 4;
    static Class m_charConvSuperclass;
    char m_leadingCodes[];

    // Decompiling method: <init>  Signature: (ILoracle/sql/converter/CharacterConverterZHTEUC;)V
    // Max stack: 3, #locals: 3, #params: 3
    // Code length: 15 bytes, Code offset: 1272
    // Line Number Table found: 3 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetZHTEUC; At 0 15 Range 0 14 Init 0 fixed
    // Parameter  1 added: Name i Type I At 0 15 Range 0 14 Init 0
    // Parameter  2 added: Name characterconverterzhteuc Type Loracle/sql/converter/CharacterConverterZHTEUC; At 0 15 Range 0 14 Init 0
    // RetValue   3 added: Name <returnValue> Type V At 0 15 Range 0 14 Init 0 fixed
    CharacterSetZHTEUC(int i, CharacterConverterZHTEUC characterconverterzhteuc)
    {
        super(i, characterconverterzhteuc);
        m_leadingCodes = characterconverterzhteuc.getLeadingCodes();
        return;
    }

    // Decompiling method: decode  Signature: (Loracle/sql/CharacterWalker;)I
    // Max stack: 6, #locals: 6, #params: 2
    // Code length: 217 bytes, Code offset: 1333
    // Line Number Table found: 23 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetZHTEUC; At 0 217 Range 0 216 Init 0 fixed
    // Parameter  1 added: Name characterwalker Type Loracle/sql/CharacterWalker; At 0 217 Range 0 216 Init 0
    // RetValue   6 added: Name <returnValue> Type I At 0 217 Range 0 216 Init 0 fixed
    // LocalVar   2 added: Name i Type I At 38 7 Range 38 44 Init 38
    // LocalVar   3 added: Name flag Type Z At 40 87 Range 40 126 Init 40
    // LocalVar   3 chged: Name j Oname flag Type I At 126 1 Range 40 126 Init 40
    // LocalVar   2 added: Name k Type I At 148 68 Range 148 215 Init 148
    // LocalVar   4 added: Name flag Type Z At 79 43 Range 79 121 Init 79
    // LocalVar   5 added: Name flag1 Type Z At 82 34 Range 82 115 Init 82
    // LocalVar   5 chged: Name l Oname flag1 Type I At 114 2 Range 82 115 Init 82
    // LocalVar   4 chged: Name i1 Oname flag Type I At 120 2 Range 79 121 Init 79
    int decode(CharacterWalker characterwalker)
        throws SQLException
    {
        if(characterwalker.next + 1 < characterwalker.bytes.length)
        {
            int i = characterwalker.bytes[characterwalker.next] << 8 | characterwalker.bytes[characterwalker.next + 1];
            for(int k = 0; k < m_leadingCodes.length; k++)
            {
                if(i == m_leadingCodes[k])
                {
                    if(characterwalker.bytes.length - characterwalker.next < 4)
                    {
                        throw new SQLException("destination too small");
                    }
                    int l = 0;
                    for(int i1 = 0; i1 < 4; i1++)
                    {
                        l = l << 8 | characterwalker.bytes[characterwalker.next++];
                    }

                    return l;
                }
            }

        }
        int j = characterwalker.bytes[characterwalker.next] & 0xff;
        characterwalker.next++;
        if(j > 127)
        {
            if(characterwalker.bytes.length > characterwalker.next)
            {
                j = j << 8 | characterwalker.bytes[characterwalker.next];
                characterwalker.next++;
            } else
            {
                throw new SQLException("destination too small");
            }
        }
        return j;
    }

    // Decompiling method: encode  Signature: (Loracle/sql/CharacterBuffer;I)V
    // Max stack: 5, #locals: 6, #params: 3
    // Code length: 87 bytes, Code offset: 1686
    // Line Number Table found: 11 entries
    // Parameter  0 added: Name this Type Loracle/sql/CharacterSetZHTEUC; At 0 87 Range 0 86 Init 0 fixed
    // Parameter  1 added: Name characterbuffer Type Loracle/sql/CharacterBuffer; At 0 87 Range 0 86 Init 0
    // Parameter  2 added: Name i Type I At 0 87 Range 0 86 Init 0
    // RetValue   6 added: Name <returnValue> Type V At 0 87 Range 0 86 Init 0 fixed
    // LocalVar   3 added: Name j Type I At 4 8 Range 4 11 Init 4
    // LocalVar   4 added: Name flag Type Z At 6 65 Range 6 70 Init 6
    // LocalVar   4 chged: Name k Oname flag Type I At 69 2 Range 6 70 Init 6
    // LocalVar   5 added: Name flag Type Z At 28 33 Range 28 60 Init 28
    // LocalVar   5 chged: Name l Oname flag Type I At 59 2 Range 28 60 Init 28
    void encode(CharacterBuffer characterbuffer, int i)
        throws SQLException
    {
        int j = i >> 16;
        for(int k = 0; k < m_leadingCodes.length; k++)
        {
            if(j == m_leadingCodes[k])
            {
                CharacterSet.need(characterbuffer, 4);
                for(int l = 0; l < 4; l++)
                {
                    characterbuffer.bytes[characterbuffer.next++] = (byte)i;
                    i >>= 8;
                }

                return;
            }
        }

        throw new SQLException();
    }

    // Decompiling method: getInstance  Signature: (ILoracle/sql/converter/CharacterConverter;)Loracle/sql/CharacterSetZHTEUC;
    // Max stack: 4, #locals: 2, #params: 2
    // Code length: 23 bytes, Code offset: 1861
    // Line Number Table found: 6 entries
    // Parameter  0 added: Name i Type I At 0 23 Range 0 22 Init 0
    // Parameter  1 added: Name characterconverter Type Loracle/sql/converter/CharacterConverter; At 0 23 Range 0 22 Init 0
    // RetValue   2 added: Name <returnValue> Type Loracle/sql/CharacterSetZHTEUC; At 0 23 Range 0 22 Init 0 fixed
    static CharacterSetZHTEUC getInstance(int i, CharacterConverter characterconverter)
    {
        if(characterconverter.getGroupId() == 5)
        {
            return new CharacterSetZHTEUC(i, (CharacterConverterZHTEUC)characterconverter);
        } else
        {
            return null;
        }
    }
}
