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

package oracle.sql;

import java.sql.SQLException;
import oracle.core.lmx.CoreException;

// Referenced classes of package oracle.sql:
//            NUMBER

// flag ACC_SUPER is set
class LnxLibThinFormat
{
    // Constants:          161
    // Interfaces:         0
    // Fields:             36
    // Methods:            2
    // Class Attributes:   1


    boolean LNXNFFMI;
    boolean LNXNFFDS;
    boolean LNXNFFPR;
    boolean LNXNFFBL;
    boolean LNXNFFDA;
    boolean LNXNFFED;
    boolean LNXNFFSN;
    boolean LNXNFFVF;
    boolean LNXNFFSH;
    boolean LNXNFFST;
    boolean LNXNFFCH;
    boolean LNXNFFCT;
    boolean LNXNFFRC;
    boolean LNXNFFRN;
    boolean LNXNFFLC;
    boolean LNXNFFIC;
    boolean LNXNFNRD;
    boolean LNXNFRDX;
    boolean LNXNFFIL;
    boolean LNXNFFPT;
    boolean LNXNFF05;
    boolean LNXNFFHX;
    boolean LNXNFFTM;
    boolean LNXNFFUN;
    byte lnxnfgps[];
    int lnxnflhd;
    int lnxnfrhd;
    int lnxnfsiz;
    int lnxnfzld;
    int lnxnfztr;
    private final int LNXPFL_US = 1;
    private final int LNXPFL_NLS = -1;
    private final int LXM_LILCURR = 11;
    private final int LXM_LIUCURR = 11;
    private final int LXM_LIICURR = 8;
    private final int LXM_ROMOUT = 15;

    // Decompiling method: <init>  Signature: ()V
    // Max stack: 2, #locals: 1, #params: 1
    // Code length: 192 bytes, Code offset: 1673
    // Line Number Table found: 38 entries
    // Parameter  0 added: Name this Type Loracle/sql/LnxLibThinFormat; At 0 192 Range 0 191 Init 0 fixed
    // RetValue   1 added: Name <returnValue> Type V At 0 192 Range 0 191 Init 0 fixed
    LnxLibThinFormat()
    {
        super();
        LNXNFFMI = false;
        LNXNFFDS = false;
        LNXNFFPR = false;
        LNXNFFBL = false;
        LNXNFFDA = false;
        LNXNFFED = false;
        LNXNFFSN = false;
        LNXNFFVF = false;
        LNXNFFSH = false;
        LNXNFFST = false;
        LNXNFFCH = false;
        LNXNFFCT = false;
        LNXNFFRC = false;
        LNXNFFRN = false;
        LNXNFFLC = false;
        LNXNFFIC = false;
        LNXNFNRD = false;
        LNXNFRDX = false;
        LNXNFFIL = false;
        LNXNFFPT = false;
        LNXNFF05 = false;
        LNXNFFHX = false;
        LNXNFFTM = false;
        LNXNFFUN = false;
        lnxnfgps = new byte[40];
        lnxnflhd = 0;
        lnxnfrhd = 0;
        lnxnfsiz = 0;
        lnxnfzld = 0;
        lnxnfztr = 0;
        /* LNXPFL_US = 1; */
        /* LNXPFL_NLS = -1; */
        /* LXM_LILCURR = 11; */
        /* LXM_LIUCURR = 11; */
        /* LXM_LIICURR = 8; */
        /* LXM_ROMOUT = 15; */
        return;
    }

    // Decompiling method: parseFormat  Signature: (Ljava/lang/String;)V
    // Max stack: 4, #locals: 18, #params: 2
    // Code length: 2113 bytes, Code offset: 2051
    // Line Number Table found: 313 entries
    // Parameter  0 added: Name this Type Loracle/sql/LnxLibThinFormat; At 0 2113 Range 0 2112 Init 0 fixed
    // Parameter  1 added: Name s Type Ljava/lang/String; At 0 2113 Range 0 2112 Init 0
    // RetValue  18 added: Name <returnValue> Type V At 0 2113 Range 0 2112 Init 0 fixed
    // LocalVar   2 added: Name flag Type Z At 1 1981 Range 1 1981 Init 1
    // LocalVar   3 added: Name flag1 Type Z At 3 1980 Range 3 1982 Init 3
    // LocalVar   4 added: Name flag2 Type Z At 5 1932 Range 5 1936 Init 5
    // LocalVar   5 added: Name flag3 Type Z At 8 1168 Range 8 1175 Init 8
    // LocalVar   6 added: Name flag4 Type Z At 11 2051 Range 11 2061 Init 11
    // LocalVar   8 added: Name flag5 Type Z At 14 484 Range 14 497 Init 14
    // LocalVar   9 added: Name flag6 Type Z At 17 2 Range 17 18 Init 17
    // LocalVar  11 added: Name flag7 Type Z At 20 1907 Range 20 1926 Init 20
    // LocalVar  12 added: Name flag8 Type Z At 23 1720 Range 23 1742 Init 23
    // LocalVar  13 added: Name flag9 Type Z At 26 887 Range 26 912 Init 26
    // LocalVar  14 added: Name flag10 Type Z At 29 891 Range 29 919 Init 29
    // LocalVar  15 added: Name flag11 Type Z At 32 2050 Range 32 2081 Init 32
    // LocalVar  16 added: Name byte0 Type B At 36 618 Range 36 653 Init 36
    // LocalVar  17 added: Name flag12 Type Z At 39 1047 Range 39 1085 Init 39
    // LocalVar   9 added: Name i Type I At 45 1887 Range 45 1931 Init 45
    // LocalVar  10 added: Name ac Type [C At 51 1764 Range 51 1814 Init 51
    // LocalVar   2 chged: Name j Oname flag Type I At 1941 1 Range 1 1981 Init 1
    // LocalVar   3 chged: Name k Oname flag1 Type I At 1982 1 Range 3 1982 Init 3
    // LocalVar   6 chged: Name l Oname flag4 Type I At 2060 2 Range 11 2061 Init 11
    // LocalVar   6 added: Name i1 Type I At 2067 4 Range 2067 2070 Init 2067
    // LocalVar   6 added: Name j1 Type I At 2076 4 Range 2076 2079 Init 2076
    // LocalVar  15 chged: Name k1 Oname flag11 Type I At 2080 2 Range 32 2081 Init 32
    // LocalVar   6 added: Name l1 Type I At 2085 24 Range 2085 2108 Init 2085
    // LocalVar  11 chged: Name i2 Oname flag7 Type I At 63 2 Range 20 1926 Init 20
    // LocalVar   7 added: Name c Type C At 69 1853 Range 69 1921 Init 69
    // LocalVar   8 chged: Name j2 Oname flag5 Type I At 271 2 Range 14 497 Init 14
    // LocalVar  13 chged: Name c1 Oname flag9 Type C At 320 593 Range 26 912 Init 26
    // LocalVar  14 chged: Name c2 Oname flag10 Type C At 353 567 Range 29 919 Init 29
    // LocalVar  17 chged: Name k2 Oname flag12 Type I At 588 2 Range 39 1085 Init 39
    // LocalVar  12 chged: Name l2 Oname flag8 Type I At 794 2 Range 23 1742 Init 23
    // LocalVar   6 name i1(I) merged out into l(I)
    // LocalVar   6 name j1(I) merged out into l(I)
    // LocalVar   6 name l1(I) merged out into l(I)
    // LocalVar   9 chged: Name i1 Oname flag6 Type I At 17 2 Range 17 18 Init 17
    // LocalVar   9 name i(I) merged out into i1(I)
    public void parseFormat(String s)
        throws SQLException
    {
        int i = 0;
        int j = 0;
        boolean flag = false;
        boolean flag1 = false;
        int k = 0;
        int l = 0;
        int i1 = 0;
        int j1 = 0;
        int k1 = 0;
        char c1 = '\0';
        char c2 = '\0';
        int l1 = 0;
        byte byte0 = 39;
        int i2 = 0;
        i1 = s.length();
        char ac[] = s.toCharArray();
        LNXNFFIL = true;
        for(; i1 != 0; i1--)
        {
            char c = Character.toLowerCase(ac[j1]);
            switch(c)
            {
            case 48: // '0'
            case 53: // '5'
            case 57: // '9'
            case 120: // 'x'
                if(LNXNFFSN)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                if(l == 120 && c != 'x')
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                if(c == '5')
                {
                    if(i1 == 2)
                    {
                        c1 = Character.toLowerCase(ac[j1 + 1]);
                    } else
                    if(i1 == 3)
                    {
                        c1 = Character.toLowerCase(ac[j1 + 1]);
                        c2 = Character.toLowerCase(ac[j1 + 2]);
                    }
                    if(!LNXNFF05 && (i1 == 1 || i1 == 2 && c1 == 's' || c1 == 'c' || c1 == 'l' || c1 == 'u' || i1 == 3 && (c1 == 'p' && c2 == 'r' || c1 == 'p' && c2 == 't' || c1 == 'm' && c2 == 'i')))
                    {
                        LNXNFF05 = true;
                    } else
                    {
                        throw new SQLException(CoreException.getMessage((byte)5));
                    }
                }
                if(c == 'x')
                {
                    if(l == 0 || l == 109 || l == 48 || l == 120)
                    {
                        LNXNFFHX = true;
                        if(ac[j1] == 'x')
                        {
                            LNXNFFLC = true;
                        }
                    } else
                    {
                        throw new SQLException(CoreException.getMessage((byte)5));
                    }
                }
                i++;
                if(c == '0' && (flag || j == 0))
                {
                    j = i;
                }
                break;

            case 103: // 'g'
                if(LNXNFFSN || LNXNFFHX || flag || l1 == byte0 || i2 > 0 || i == 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                i2 = -1;
                lnxnfgps[l1] = (byte)(0x80 | i);
                l1++;
                break;

            case 44: // ','
                if(LNXNFFSN || LNXNFFHX || flag || l1 == byte0 || i2 < 0 || i == 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                flag1 = true;
                lnxnfgps[l1] = (byte)i;
                l1++;
                i2 = 1;
                break;

            case 99: // 'c'
            case 108: // 'l'
            case 117: // 'u'
                if(LNXNFFCH || LNXNFFCT || LNXNFFRC || LNXNFFSN || LNXNFFDS || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                if(c == 'c')
                {
                    k += 7;
                    LNXNFFIC = true;
                } else
                if(c == 'l')
                {
                    k += 10;
                } else
                {
                    k += 10;
                    LNXNFFUN = true;
                }
                if(j1 == k1)
                {
                    LNXNFFCH = true;
                    break;
                }
                if(i1 == 2)
                {
                    c1 = Character.toLowerCase(ac[j1 + 1]);
                } else
                if(i1 == 3)
                {
                    c1 = Character.toLowerCase(ac[j1 + 1]);
                    c2 = Character.toLowerCase(ac[j1 + 2]);
                }
                if(i1 == 1 || i1 == 2 && c1 == 's' || i1 == 3 && (c1 == 'p' && c2 == 'r' || c1 == 'p' && c2 == 't' || c1 == 'm' && c2 == 'i'))
                {
                    LNXNFFCT = true;
                    break;
                }
                if(LNXNFF05)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFRC = true;
                // fall through

            case 100: // 'd'
                if(i2 > 0 || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                i2 = -1;
                // fall through

            case 118: // 'v'
                if(c == 'v')
                {
                    LNXNFNRD = true;
                }
                // fall through

            case 46: // '.'
                if(LNXNFFSN || LNXNFFHX || flag)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                flag = true;
                lnxnflhd = i;
                if(j != 0)
                {
                    lnxnfzld = (i - j) + 1;
                    j = 0;
                } else
                {
                    lnxnfzld = 0;
                }
                i = 0;
                if(c != '.' && c != 'd')
                {
                    break;
                }
                k++;
                if(c != '.')
                {
                    break;
                }
                if(i2 < 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                i2 = 1;
                LNXNFRDX = true;
                break;

            case 98: // 'b'
                if(LNXNFFSN || LNXNFFBL || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFBL = true;
                break;

            case 101: // 'e'
                if(LNXNFFSN || LNXNFF05 || LNXNFFHX || flag1)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFSN = true;
                if(i1 < 4 || ac[j1] != ac[j1 + 1] || ac[j1] != ac[j1 + 2] || ac[j1] != ac[j1 + 3])
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                j1 += 3;
                i1 -= 3;
                k += 5;
                break;

            case 36: // '$'
                if(LNXNFFSN || LNXNFFDS || LNXNFFCH || LNXNFFCT || LNXNFFRC || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFDS = true;
                k++;
                break;

            case 114: // 'r'
                if(j1 != k1 || i1 != 2)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFRN = true;
                if(ac[j1] == 'r')
                {
                    LNXNFFLC = true;
                }
                lnxnfsiz = 15;
                LNXNFFVF = true;
                return;

            case 102: // 'f'
                if(j1 != k1 || !LNXNFFIL)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFIL = false;
                j1++;
                if(Character.toLowerCase(ac[j1]) == 'm')
                {
                    i1--;
                    k1 = j1 + 1;
                    c = 'm';
                } else
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                break;

            case 112: // 'p'
                if(LNXNFFSH || LNXNFFST || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                k++;
                if(--i1 > 1)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                j1++;
                if(Character.toLowerCase(ac[j1]) == 'r')
                {
                    LNXNFFPR = true;
                    break;
                }
                if(Character.toLowerCase(ac[j1]) == 't')
                {
                    LNXNFFPT = true;
                } else
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                break;

            case 109: // 'm'
                if(LNXNFFSH || LNXNFFST || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFMI = true;
                j1++;
                if(Character.toLowerCase(ac[j1]) == 'i')
                {
                    if(--i1 > 1)
                    {
                        throw new SQLException(CoreException.getMessage((byte)5));
                    }
                } else
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                break;

            case 115: // 's'
                if(LNXNFFSH || LNXNFFHX)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                if(j1 == k1)
                {
                    LNXNFFSH = true;
                    k1++;
                    break;
                }
                if(i1 == 1)
                {
                    LNXNFFST = true;
                } else
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                break;

            case 116: // 't'
                if(j1 != k1 || i1 < 2 || i1 > 3)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                if(Character.toLowerCase(ac[j1 + 1]) != 'm')
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
                LNXNFFTM = true;
                LNXNFFIL = false;
                switch(i1 != 3 ? 57 : Character.toLowerCase(ac[j1 + 2]))
                {
                default:
                    throw new SQLException(CoreException.getMessage((byte)5));

                case 101: // 'e'
                    LNXNFFSN = true;
                    // fall through

                case 57: // '9'
                    lnxnflhd = 0;
                    break;
                }
                lnxnfrhd = 0;
                lnxnfsiz = 64;
                lnxnfzld = 0;
                lnxnfztr = 0;
                LNXNFFVF = true;
                return;

            default:
                throw new SQLException(CoreException.getMessage((byte)5));
            }
            l = c;
            j1++;
        }

        if(flag)
        {
            lnxnfrhd = i;
            lnxnfztr = !LNXNFFIL && !LNXNFNRD ? j : i;
        } else
        {
            lnxnflhd = i;
            lnxnfzld = j == 0 ? 0 : (i - j) + 1;
            lnxnfrhd = 0;
            lnxnfztr = 0;
            LNXNFNRD = true;
        }
        if(LNXNFFSN)
        {
            if(lnxnflhd <= 1)
            {
                if(lnxnflhd == 0)
                {
                    throw new SQLException(CoreException.getMessage((byte)5));
                }
            } else
            {
                lnxnflhd = 1;
            }
            if(lnxnfzld > 1)
            {
                lnxnfzld = 1;
            }
        }
        k += lnxnflhd;
        k += lnxnfrhd;
        k += l1 + 1;
        if(k > 64)
        {
            throw new SQLException(CoreException.getMessage((byte)5));
        } else
        {
            lnxnfsiz = k;
            return;
        }
    }
}
