// 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: StreamerInfoString.java
package hep.rootio.implementation;
import hep.rootio.*;
import java.io.IOException;
import java.io.PrintStream;
import java.util.StringTokenizer;
import java.util.Vector;
// Referenced classes of package hep.rootio.implementation:
// StreamerInfo, IntrinsicRootClass, AbstractRootObject, GenericRootObject
public class StreamerInfoString extends StreamerInfo
{
private class MemberString extends StreamerInfo.Member
{
boolean isPointer()
{
return pointer;
}
void read(RootInput in, GenericRootObject obj)
throws IOException
{
try
{
if(pointer)
{
hep.rootio.RootObjectRepresentation rep = in.readObjectRef();
obj.put(name, rep);
} else
if(dim == 1)
obj.put(name, type.read(in));
else
obj.put(name, ((IntrinsicRootClass)type).readArray(in, dim));
}
catch(IOException x)
{
x.printStackTrace();
System.err.println("Error reading member " + name + " of " + obj.getRootClass());
throw x;
}
}
public String getComment()
{
return null;
}
public RootClass getType()
{
return type;
}
public String getName()
{
return name;
}
public int getArrayDim()
{
return dim != 1 ? 1 : 0;
}
private RootClass type;
private String name;
private boolean pointer;
private int dim;
MemberString(RootClass type, String name, boolean pointer, int dim)
{
this.type = type;
this.name = name;
this.pointer = pointer;
this.dim = dim;
}
}
public StreamerInfoString(String description)
{
this.description = description;
}
void resolve(RootClassFactory factory)
throws RootClassNotFound
{
if(description != null)
{
Vector sv = new Vector();
Vector mv = new Vector();
for(StringTokenizer tokenizer = new StringTokenizer(description, ";"); tokenizer.hasMoreTokens();)
{
String token = tokenizer.nextToken();
StringTokenizer t2 = new StringTokenizer(token, " ");
if(t2.countTokens() == 1)
{
String className = t2.nextToken();
RootClass superClass = factory.create(className);
sv.addElement(superClass);
} else
{
int index = 1;
String type = t2.nextToken();
String name = t2.nextToken();
boolean pointer = type.endsWith("*");
if(pointer)
type = type.substring(0, type.length() - 1);
int pos = type.indexOf('[');
if(pos > 0)
{
int l = type.length();
index = Integer.parseInt(type.substring(pos + 1, l - 1));
type = type.substring(0, pos);
}
RootClass memberClass = factory.create(type);
mv.addElement(new MemberString(memberClass, name, pointer, index));
}
}
super.superClasses = new RootClass[sv.size()];
sv.copyInto(super.superClasses);
super.members = new MemberString[mv.size()];
mv.copyInto(super.members);
description = null;
}
}
int getVersion()
{
return 0;
}
int getCheckSum()
{
return 0;
}
private String description;
}
Ads help maintain this website.