⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buffer.java

📁 cisco-2950交换机的应用程序的源代码
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   Buffer.java

package cisco.dsbu.cms.boot.internal.xmllite;

import java.io.*;

// Referenced classes of package cisco.dsbu.cms.boot.internal.xmllite:
//            CharString

class Buffer
{

    private static final int LOAD_SUCCESS = 0;
    private static final int LOAD_BUFFER_FULL = 1;
    private static final int LOAD_SOURCE_END = 2;
    private Reader source;
    private char buffer[];
    private int bufferSize;
    private int bufferStart;
    private int bufferEnd;
    private int bufferLength;

    Buffer(int i)
    {
        bufferStart = 0;
        bufferEnd = 0;
        bufferLength = 0;
        buffer = new char[i];
        bufferSize = i;
    }

    void setSource(Reader reader)
    {
        source = reader;
        bufferStart = 0;
        bufferEnd = 0;
        bufferLength = 0;
    }

    char peek()
        throws IOException
    {
        if(bufferLength == 0)
            loadBuffer();
        if(bufferLength == 0)
        {
            throw new EOFException();
        } else
        {
            char c = buffer[bufferStart];
            return c;
        }
    }

    char readCharacter()
        throws IOException
    {
        char c = peek();
        charactersRemoved(1);
        return c;
    }

    CharString readCharacters()
        throws IOException
    {
        return readCharacters(bufferLength);
    }

    CharString readCharacters(int i)
        throws IOException
    {
        if(bufferLength < i)
            loadBuffer();
        if(bufferLength == 0)
        {
            throw new EOFException();
        } else
        {
            int j = bufferLength >= i ? i : bufferLength;
            CharString charstring = new CharString(buffer, bufferStart, j);
            charactersRemoved(j);
            return charstring;
        }
    }

    int find(char c)
        throws IOException
    {
        boolean flag = false;
        int i = bufferStart;
        int j = 0;
        do
        {
            if(j == bufferLength)
            {
                int k = loadBuffer();
                if(k == 1 || k == 2)
                    break;
            }
            j++;
            if(buffer[i] == c)
            {
                flag = true;
                break;
            }
            if(++i == bufferSize)
                i = 0;
        } while(true);
        return flag ? j : -1;
    }

    int findNonWhiteSpace()
        throws IOException
    {
        boolean flag = false;
        int i = bufferStart;
        int j = 0;
        do
        {
            if(j == bufferLength)
            {
                int k = loadBuffer();
                if(k == 1 || k == 2)
                    break;
            }
            j++;
            if(!Character.isWhitespace(buffer[i]))
            {
                flag = true;
                break;
            }
            if(++i == bufferSize)
                i = 0;
        } while(true);
        return flag ? j : -1;
    }

    private int loadBuffer()
        throws IOException
    {
        if(bufferLength == bufferSize)
            return 1;
        int i = bufferSize - bufferLength;
        int j = bufferSize - bufferEnd;
        int k;
        if(j < i)
        {
            k = i - j;
        } else
        {
            j = i;
            k = 0;
        }
        int l = source.read(buffer, bufferEnd, j);
        if(l == -1)
            return 2;
        charactersAdded(l);
        if(l == j && k != 0)
        {
            int i1 = source.read(buffer, bufferEnd, k);
            if(i1 != -1)
                charactersAdded(i1);
        }
        return 0;
    }

    private void charactersAdded(int i)
    {
        bufferEnd += i;
        if(bufferEnd >= bufferSize)
            bufferEnd -= bufferSize;
        bufferLength += i;
    }

    private void charactersRemoved(int i)
    {
        bufferStart += i;
        if(bufferStart >= bufferSize)
            bufferStart -= bufferSize;
        bufferLength -= i;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -