// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/kpdus/jad.html
// Decompiler options: packimports(3) 
// Source File Name:   TBasket.java

package hep.rootio.reps;

import hep.rootio.RootInput;
import hep.rootio.implementation.*;

import java.io.DataInput;
import java.io.IOException;

// Referenced classes of package hep.rootio.reps:
//            TKey

public class TBasket extends SpecificRootObject
{

    public TBasket()
    {
        curIndex = -2;
        curValue = null;
    }

    public void read(RootInput in)
        throws IOException
    {
        hep.rootio.RootObjectRepresentation superClasses[] = getSuperClasses();
        TKey key = (TKey)superClasses[0];
        key.read(in);
        int v = in.readVersion(this);
        readMembers(in, v);
        in.checkLength(this);
        fKeylen = ((Integer)get("fKeylen")).intValue();
        if(data == null)
            data = key.getData();
    }

    void readEntryOffsets(int len)
        throws IOException
    {
        int last = ((Integer)get("fLast")).intValue();
        data.setPosition(last);
        fEntryOffset = new int[len];
        data.readArray(fEntryOffset);
        put("fEntryOffset", fEntryOffset);
    }

    public void readMembers(RootInput in, int v)
        throws IOException
    {
        int fBufferSize = in.readInt();
        put("fNevBufSize", fNevBufSize = in.readInt());
        int fNevBuf;
        put("fNevBuf", fNevBuf = in.readInt());
        int fLast;
        put("fLast", fLast = in.readInt());
        if(fLast > fBufferSize)
            fBufferSize = fLast;
        put("fBufferSize", fBufferSize);
        int flag = in.readByte();
        if(flag == 0)
            return;
        if(flag % 10 != 2)
        {
            fEntryOffset = new int[fNevBufSize];
            if(fNevBuf != 0)
            {
                int l = in.readInt();
                for(int i = 0; i < l; i++)
                    fEntryOffset[i] = in.readInt();

            }
            if(20 < flag && flag < 40)
            {
                for(int i = 0; i < fNevBuf; i++)
                    fEntryOffset[i] &= 0xffffff;

            }
            put("fEntryOffset", fEntryOffset);
            if(flag > 40)
            {
                int fDisplacement[] = new int[fNevBufSize];
                int l = in.readInt();
                for(int i = 0; i < l; i++)
                    fDisplacement[i] = in.readInt();

                put("fDisplacement", fDisplacement);
            }
        }
        if(flag == 1 || flag > 10)
        {
            byte buf[] = new byte[fBufferSize];
            if(v > 1)
            {
                for(int i = 0; i < fLast; i++)
                    buf[i] = in.readByte();

            } else
            {
                int l = in.readInt();
                for(int i = 0; i < l; i++)
                    buf[i] = in.readByte();

            }
            put("fBufferRef", buf);
            data = new RootInputStream(new RootByteArrayInputStream(buf, 0), in.getRAF());
        }
    }

    Object getEntry(int index, int offset, Leaf leaf)
        throws IOException
    {
        int i = index - offset;
        if(i == curIndex)
            return curValue;
        if(i == curIndex + 1)
            curIndex++;
        else
        if(fEntryOffset == null)
        {
            data.setPosition(fKeylen + i * fNevBufSize);
            curIndex = i;
        } else
        {
            data.setPosition(fEntryOffset[i]);
            curIndex = i;
        }
        curValue = leaf.readData(data, index);
        return curValue;
    }

    private int curIndex;
    private Object curValue;
    private RootInputStream data;
    private int fKeylen;
    private int fNevBufSize;
    private int fEntryOffset[];
    static final int kDisplacementMask = 0xff000000;
}

 

Ads help maintain this website.