package hep.io.root.reps;
import hep.io.root.RootObject;
import hep.io.root.core.AbstractRootObject;
import hep.io.root.core.RootInput;
import hep.io.root.core.TListIterator;
import hep.io.root.interfaces.TObject;
import java.io.IOException;
/**
* @author Tony Johnson (tonyj@slac.stanford.edu)
* @version $Id: TCollectionRep.java 8584 2006-08-10 23:06:37Z duns $
*/
public abstract class TCollectionRep extends AbstractRootObject implements hep.io.root.interfaces.TCollection
{
private String fName;
private TObject fObject;
private RootObject[] fArray;
private int fNobjects;
private int fSize;
public Object getElementAt(int index)
{
return fArray[index];
}
public boolean isEmpty()
{
return fSize == 0;
}
public int getLast()
{
return fNobjects;
}
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);
fObject = (TObject) in.readObject("TObject");
fName = in.readObject("TString").toString();
fNobjects = in.readInt();
fArray = new RootObject[fNobjects];
fSize = 0;
for (int i = 0; i < fNobjects; i++)
{
fArray[i] = in.readObjectRef();
if (fArray[i] != null)
fSize = i + 1;
}
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 index, Object obj)
{
//We allow this so that new entries can be added to the list of Baskets in a Branch
//throw new UnsupportedOperationException();
Object old = fArray[index];
fArray[index] = (RootObject) obj;
return old;
}
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;
}
void setElementAt(int index, RootObject value)
{
fArray[index] = value;
}
RootObject elementAt(int index)
{
return fArray[index];
}
}