// 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.