View Javadoc

1   package org.lcsim.lcio;
2   
3   import hep.io.sio.SIOInputStream;
4   import hep.io.sio.SIOOutputStream;
5   
6   import java.io.IOException;
7   import java.util.HashMap;
8   import java.util.Map;
9   import org.lcsim.event.EventHeader.LCMetaData;
10  
11  
12  /**
13   *
14   * @author Frank Gaede
15   * @version $Id: SIOLCParameters.java,v 1.4 2007/10/17 02:06:23 tonyj Exp $
16   */
17  class SIOLCParameters
18  {
19     private Map<String,int[]>     _intMap = new HashMap<String,int[]>();
20     private Map<String,float[]>   _floatMap = new HashMap<String,float[]>();
21     private Map<String,String[]>  _stringMap = new HashMap<String,String[]>();
22     
23     
24     Map<String,int[]> getIntMap()
25     {
26        return _intMap;
27     }
28     Map<String,float[]> getFloatMap()
29     {
30        return _floatMap;
31     }
32     Map<String,String[]> getStringMap()
33     {
34        return _stringMap;
35     }
36     SIOLCParameters()
37     {
38        
39     }
40     SIOLCParameters(SIOInputStream in) throws IOException
41     {
42        int nIntParameters =  in.readInt();
43        for (int i = 0; i < nIntParameters; i++)
44        {
45           String key = in.readString();
46           int nInt = in.readInt() ;
47           int[] iv = new int[nInt] ;
48           for (int j = 0; j < nInt; j++)
49           {
50              iv[j] = in.readInt() ;
51           }
52           _intMap.put( key , iv ) ;
53        }
54        int nFloatParameters =  in.readInt();
55        for (int i = 0; i < nFloatParameters; i++)
56        {
57           String key = in.readString();
58           int nFloat = in.readInt() ;
59           float[] fv = new float[nFloat] ;
60           for (int j = 0; j < nFloat; j++)
61           {
62              fv[j] = in.readFloat() ;
63           }
64           _floatMap.put( key , fv ) ;
65        }
66        
67        int nStringParameters =  in.readInt();
68        for (int i = 0; i < nStringParameters; i++)
69        {
70           String key = in.readString();
71           int nString = in.readInt() ;
72           String[] sv = new String[nString] ;
73           for (int j = 0; j < nString; j++)
74           {
75              sv[j] = in.readString() ;
76           }
77           _stringMap.put( key , sv ) ;
78        }
79     }
80     static void write(Map<String,int[]> intMap, Map<String,float[]> floatMap, Map<String,String[]> stringMap, SIOOutputStream out) throws IOException
81     {
82        out.writeInt(intMap.size());
83        for (Map.Entry<String,int[]> entry : intMap.entrySet())
84        {
85           out.writeString(entry.getKey());
86           int[] values = entry.getValue();
87           out.writeInt(values.length) ;
88           for (int v : values)
89           {
90              out.writeInt(v);
91           }
92        }
93        out.writeInt(floatMap.size());
94        for (Map.Entry<String,float[]> entry : floatMap.entrySet())
95        {
96           out.writeString(entry.getKey());
97           float[] values = entry.getValue();
98           out.writeInt(values.length) ;
99           for (float v : values)
100          {
101             out.writeFloat(v);
102          }
103       }
104       out.writeInt(stringMap.size());
105       for (Map.Entry<String,String[]> entry : stringMap.entrySet())
106       {
107          out.writeString(entry.getKey());
108          String[] values = entry.getValue();
109          out.writeInt(values.length) ;
110          for (String v : values)
111          {
112             out.writeString(v);
113          }
114       }
115    }
116 }