package hep.io.root.reps;
import hep.io.root.*;
import hep.io.root.core.*;
import java.io.*;
/**
* @author Tony Johnson (tonyj@slac.stanford.edu)
* @version $Id: TListRep.java 8584 2006-08-10 23:06:37Z duns $
*/
public abstract class TListRep extends AbstractRootObject implements hep.io.root.interfaces.TList
{
private String fName;
private RootObject[] fArray;
private int fSize;
public int getBits()
{
return 0;
}
public boolean isEmpty()
{
return fSize == 0;
}
/** name of the collection */
public String getName()
{
return fName;
}
/** number of elements in collection */
public int getSize()
{
return fSize;
}
public int getUniqueID()
{
return 0;
}
public void add(int param, Object obj)
{
throw new UnsupportedOperationException();
}
public boolean add(Object obj)
{
throw new UnsupportedOperationException();
}
public boolean addAll(java.util.Collection collection)
{
throw new UnsupportedOperationException();
}
public boolean addAll(int param, java.util.Collection collection)
{
throw new UnsupportedOperationException();
}
public void clear()
{
throw new UnsupportedOperationException();
}
public boolean contains(Object obj)
{
for (int i = 0; i < fSize; i++)
if ((obj == null) ? (fArray[i] == null) : obj.equals(fArray[i]))
return true;
return false;
}
public boolean containsAll(java.util.Collection collection)
{
java.util.Iterator i = collection.iterator();
while (i.hasNext())
if (!contains(i.next()))
return false;
return true;
}
public Object get(int param)
{
return fArray[param];
}
public int indexOf(Object obj)
{
for (int i = 0; i < fSize; i++)
if ((obj == null) ? (fArray[i] == null) : obj.equals(fArray[i]))
return i;
return -1;
}
public java.util.Iterator iterator()
{
return new TListIterator(fArray, fSize, 0);
}
public int lastIndexOf(Object obj)
{
for (int i = fSize - 1; i >= 0; i--)
if ((obj == null) ? (fArray[i] == null) : obj.equals(fArray[i]))
return i;
return -1;
}
public java.util.ListIterator listIterator(int start)
{
return new TListIterator(fArray, fSize, start);
}
public java.util.ListIterator listIterator()
{
return new TListIterator(fArray, fSize, 0);
}
public void readMembers(RootInput in) throws IOException
{
int v = in.readVersion(this);
if (v > 2)
{
in.readObject("TObject");
}
if (v > 1)
{
fName = in.readObject("TString").toString();
}
fSize = in.readInt();
fArray = new RootObject[fSize];
for (int i = 0; i < fSize; i++)
{
RootObject obj = in.readObjectRef();
if (v > 3)
{
int l = in.readByte();
if (l > 0)
{
byte[] data = new byte[l];
for (int j = 0; j < l; i++)
data[j] = in.readByte();
String opt = new String(data);
// Note we just toss away the option for now, should do something better I guess.
}
else
fArray[i] = obj;
}
else
fArray[i] = obj;
}
in.checkLength(this);
}
public Object remove(int param)
{
throw new UnsupportedOperationException();
}
public boolean remove(Object obj)
{
throw new UnsupportedOperationException();
}
public boolean removeAll(java.util.Collection collection)
{
throw new UnsupportedOperationException();
}
public boolean retainAll(java.util.Collection collection)
{
throw new UnsupportedOperationException();
}
public Object set(int param, Object obj)
{
throw new UnsupportedOperationException();
}
public int size()
{
return fSize;
}
public java.util.List subList(int param, int param1)
{
// I'm too lazy to implement this
throw new UnsupportedOperationException();
}
public Object[] toArray(Object[] obj)
{
int l = obj.length;
if (l < fSize)
obj = (Object[]) java.lang.reflect.Array.newInstance(obj.getClass(), 0);
System.arraycopy(fArray, 0, obj, 0, fSize);
return obj;
}
public Object[] toArray()
{
Object[] obj = new Object[fSize];
System.arraycopy(fArray, 0, obj, 0, fSize);
return obj;
}
}