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