package hep.io.root.reps; import hep.io.root.RootClassNotFound; import hep.io.root.core.AbstractRootObject; import hep.io.root.core.CloneLeaf; import hep.io.root.core.GenericRootClass; import hep.io.root.core.HollowBuilder; import hep.io.root.core.RootClassFactory; import hep.io.root.core.RootInput; import hep.io.root.core.SingleLeaf; import hep.io.root.interfaces.TBranch; import hep.io.root.interfaces.TBranchClones; import hep.io.root.interfaces.TLeaf; import hep.io.root.interfaces.TObjArray; import java.io.IOException; /** * * @author tonyj * @version $Id: TBranchClonesRep.java 8584 2006-08-10 23:06:37Z duns $ */ public abstract class TBranchClonesRep extends AbstractRootObject implements TBranchClones { private Class hollowClass; private RootInput rin; private String fClassName; private String fName; private String fTitle; private TBranch fBranchCount; private TObjArray fBranches; private TObjArray fLeaves; private double fEntries; private double fTotBytes; private double fZipBytes; private int fBasketSize; private int fBits; private int fCompress; private int fEntryNumber; private int fEntryOffset; private int fMaxBaskets; private int fOffset; private int fUniqueId; private int fWriteBasket; public TObjArray getLeaves() { return fLeaves; } //public Object getEntry(int index) throws IOException //{ // int l = ((Integer) count.getEntry(index)).intValue(); // return new HollowArray(l,index,objectClass,this); //} public Class getObjectClass() { try { if (hollowClass == null) { HollowBuilder builder = new HollowBuilder(this, true); String name = "hep.io.root.hollow." + getClassName(); RootClassFactory factory = rin.getFactory(); GenericRootClass gc = (GenericRootClass) factory.create(getClassName()); hollowClass = factory.getLoader().loadSpecial(builder, name, gc); // Populate the leafs. builder.populateStatics(hollowClass, factory); return hollowClass; } return hollowClass; } catch (RootClassNotFound x) { throw new RuntimeException("Error looking up class for TBranchClones " + x.getClassName(),x); } } public void readMembers(RootInput in) throws IOException { int v = in.readVersion(this); v = in.readVersion(this); v = in.readVersion(this); fUniqueId = in.readInt(); fBits = in.readInt(); fName = in.readObject("TString").toString(); fTitle = in.readObject("TString").toString(); fCompress = in.readInt(); fBasketSize = in.readInt(); fEntryOffset = in.readInt(); fMaxBaskets = in.readInt(); fWriteBasket = in.readInt(); fEntryNumber = in.readInt(); fEntries = in.readDouble(); fTotBytes = in.readDouble(); fZipBytes = in.readDouble(); fOffset = in.readInt(); fBranchCount = (TBranch) in.readObjectRef(); fClassName = in.readObject("TString").toString(); fBranches = (TObjArray) in.readObject("TObjArray"); rin = in.getTop(); TLeaf leaf = new CloneLeaf(); leaf.setBranch(this); fLeaves = new SingleLeaf(leaf); } }