NeXusJavaBindings  1
 All Classes Namespaces Files Functions Variables Typedefs Macros Pages
HDFNativeData.java
Go to the documentation of this file.
1 /****************************************************************************
2  * NCSA HDF *
3  * National Comptational Science Alliance *
4  * University of Illinois at Urbana-Champaign *
5  * 605 E. Springfield, Champaign IL 61820 *
6  * *
7  * For conditions of distribution and use, see the accompanying *
8  * hdf/COPYING file. *
9  * *
10  ****************************************************************************/
11 
12 package ncsa.hdf.hdflib;
13 
14 public class HDFNativeData
15 {
16  public HDFNativeData() {}
17  public static native int[] byteToInt( byte[] data );
18  public static native float[] byteToFloat( byte[] data );
19  public static native short[] byteToShort( byte[] data );
20  public static native long[] byteToLong( byte[] data );
21  public static native double[] byteToDouble( byte[] data );
22 
23  public static native int[] byteToInt( int start, int len, byte[] data );
24  public static int byteToInt( byte[] data, int start)
25  {
26  int []ival = new int[1];
27  ival = byteToInt(start,1,data);
28  return(ival[0]);
29  }
30 
31  public static native short[] byteToShort( int start, int len, byte[] data );
32  public static short byteToShort( byte[] data, int start)
33  {
34  short []sval = new short[1];
35  sval = byteToShort(start,1,data);
36  return(sval[0]);
37  }
38 
39  public static native float[] byteToFloat( int start, int len, byte[] data );
40  public static float byteToFloat( byte[] data, int start)
41  {
42  float []fval = new float[1];
43  fval = byteToFloat(start,1,data);
44  return(fval[0]);
45  }
46 
47  public static native long[] byteToLong( int start, int len, byte[] data );
48  public static long byteToLong( byte[] data, int start)
49  {
50  long []lval = new long[1];
51  lval = byteToLong(start,1,data);
52  return(lval[0]);
53  }
54 
55  public static native double[] byteToDouble( int start, int len, byte[] data );
56  public static double byteToDouble( byte[] data, int start)
57  {
58  double []dval = new double[1];
59  dval = byteToDouble(start,1,data);
60  return(dval[0]);
61  }
62 
63  public static native byte[] intToByte( int start, int len, int[] data);
64  public static native byte[] shortToByte( int start, int len, short[] data);
65  public static native byte[] floatToByte( int start, int len, float[] data);
66  public static native byte[] longToByte( int start, int len, long[] data);
67  public static native byte[] doubleToByte( int start, int len, double[] data);
68 
69  public static native byte[] byteToByte( byte data);
70  static byte[] byteToByte( Byte data){return byteToByte(data.byteValue());}
71  public static native byte[] intToByte( int data);
72  static byte[] intToByte( Integer data){return intToByte(data.intValue());}
73  public static native byte[] shortToByte(short data);
74  static byte[] shortToByte( Short data){return shortToByte(data.shortValue());}
75  public static native byte[] floatToByte( float data);
76  static byte[] floatToByte( Float data){return floatToByte(data.floatValue());};
77  public static native byte[] longToByte( long data);
78  static byte[] longToByte(Long data){ return longToByte(data.longValue());}
79  public static native byte[] doubleToByte( double data);
80  static byte[] doubleToByte( Double data){return doubleToByte(data.doubleValue());}
81 
82  public Object byteToNumber( byte[] barray, Object obj)
83  throws HDFException
84  {
85  Class theClass = obj.getClass();
86  String type = theClass.getName();
87  Object retobj = null;
88 
89  if (type.equals("java.lang.Integer")) {
90  int[] i = ncsa.hdf.hdflib.HDFNativeData.byteToInt(0,1,barray);
91  retobj = new Integer(i[0]);
92  } else if (type.equals("java.lang.Byte")) {
93  retobj = new Byte(barray[0]);
94  } else if (type.equals("java.lang.Short")) {
95  short[] f = ncsa.hdf.hdflib.HDFNativeData.byteToShort(0,1,barray);
96  retobj = new Short(f[0]) ;
97  } else if (type.equals("java.lang.Float")) {
98  float[] f = ncsa.hdf.hdflib.HDFNativeData.byteToFloat(0,1,barray);
99  retobj = new Float(f[0]) ;
100  } else if (type.equals("java.lang.Long")) {
101  long[] f = ncsa.hdf.hdflib.HDFNativeData.byteToLong(0,1,barray);
102  retobj = new Long(f[0]) ;
103  } else if (type.equals("java.lang.Double")) {
104  double[] f = ncsa.hdf.hdflib.HDFNativeData.byteToDouble(0,1,barray);
105  retobj = new Double(f[0] );
106  } else {
107  /* exception: unsupprted type */
108  HDFException ex =
109  (HDFException)new HDFJavaException("byteToNumber: setfield bad type: "+obj+" "+type);
110  throw(ex);
111  }
112  return(retobj);
113  }
114 
128 public static Object defineDataObject(int dataType, int datasize)
129  {
130  Object data = null;
131 
132  if ((dataType & HDFConstants.DFNT_LITEND) != 0) {
133  dataType -= HDFConstants.DFNT_LITEND;
134  }
135 
136  switch(dataType)
137  {
140  data = new short[datasize];
141  break;
144  data = new int[datasize];
145  break;
148  data = new long[datasize];
149  break;
151  data = new float[datasize];
152  break;
154  data = new double[datasize];
155  break;
156  default:
157  case HDFConstants.DFNT_CHAR:
160  case HDFConstants.DFNT_INT8:
161  data = new byte[datasize];
162  break;
163 
164  }
165  return data;
166  }
167 }