org.virbo.dataset
Class FDataSet

java.lang.Object
  extended by org.virbo.dataset.AbstractDataSet
      extended by org.virbo.dataset.FDataSet
All Implemented Interfaces:
MutablePropertyDataSet, QDataSet, WritableDataSet

public final class FDataSet
extends AbstractDataSet
implements WritableDataSet

rank 1,2,or 3 dataset backed by double array. Mutable datasets warning: No dataset should be mutable once it is accessible to the rest of the system. This would require clients make defensive copies which would seriously degrade performance.


Field Summary
static java.lang.String version
           
 
Fields inherited from class org.virbo.dataset.AbstractDataSet
properties
 
Fields inherited from interface org.virbo.dataset.QDataSet
CACHE_TAG, CADENCE, COORDINATE_FRAME, DELTA_MINUS, DELTA_PLUS, DEPEND_0, DEPEND_1, DEPEND_2, FILL_VALUE, LABEL, MAX_PLANE_COUNT, MAX_RANK, MONOTONIC, NAME, PLANE_0, QUBE, RENDER_TYPE, SCALE_TYPE, TITLE, TYPICAL_MAX, TYPICAL_MIN, UNITS, USER_PROPERTIES, VALID_MAX, VALID_MIN, WEIGHTS_PLANE
 
Method Summary
static FDataSet copy(QDataSet ds)
          copies the dataset into a writeable dataset, and all of it's depend datasets as well.
static FDataSet create(int[] qube)
          Makes an array from array of dimension sizes.
static FDataSet createRank1(int len0)
           
static FDataSet createRank2(int len0, int len1)
           
static FDataSet createRank3(int len0, int len1, int len2)
           
 void join(FDataSet ds)
          append the second dataset onto this dataset.
 int length()
          return the length of the first dimension
 int length(int i)
          return the length of the second dimension, for the ith element of the first dimension
 int length(int i0, int i1)
          return the length of the third dimension, for the ith element of the first dimension and jth element of the second dimension.
 void putLength(int len)
          Shorten the dataset by changing it's dim 0 length parameter.
 void putValue(int i0, double value)
           
 void putValue(int i0, int i1, double value)
           
 void putValue(int i0, int i1, int i2, double value)
           
 int rank()
          returns the rank of the dataset, which is the number of indeces used to access data.
 java.lang.String toString()
           
 double value(int i0)
          rank 1 accessor.
 double value(int i0, int i1)
          rank 2 accessor.
 double value(int i0, int i1, int i2)
          rank 3 accessor.
static FDataSet wrap(float[] back)
          creates a rank1 FDataSet by wrapping an existing array.
static FDataSet wrap(float[] data, int[] qube)
          Wraps an array from array of dimension sizes.
static FDataSet wrap(float[] back, int nx, int ny)
          creates a FDataSet by wrapping an existing array, aliasing it to rank 2.
static FDataSet wrap(float[] back, int nx, int ny, int nz)
          creates a FDataSet by wrapping an existing array, aliasing it to rank 3.
static FDataSet wrap(float[] back, int rank, int len0, int len1, int len2)
           
 
Methods inherited from class org.virbo.dataset.AbstractDataSet
property, property, property, putProperty, putProperty, putProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.virbo.dataset.WritableDataSet
putProperty, putProperty, putProperty
 
Methods inherited from interface org.virbo.dataset.QDataSet
property, property, property
 

Field Detail

version

public static final java.lang.String version
See Also:
Constant Field Values
Method Detail

createRank1

public static FDataSet createRank1(int len0)

createRank2

public static FDataSet createRank2(int len0,
                                   int len1)

createRank3

public static FDataSet createRank3(int len0,
                                   int len1,
                                   int len2)

create

public static FDataSet create(int[] qube)
Makes an array from array of dimension sizes. The result will have rank qube.length().

Parameters:
qube - array specifying the rank and size of each dimension
Returns:
FDataSet

wrap

public static FDataSet wrap(float[] data,
                            int[] qube)
Wraps an array from array of dimension sizes. The result will have rank qube.length().

Parameters:
data - array containing the data, with the last dimension contiguous in memory.
qube - array specifying the rank and size of each dimension
Returns:
FDataSet

wrap

public static FDataSet wrap(float[] back,
                            int rank,
                            int len0,
                            int len1,
                            int len2)

rank

public int rank()
Description copied from interface: QDataSet
returns the rank of the dataset, which is the number of indeces used to access data. Only rank 1, 2, and 3 datasets are supported in the interface. When a dataset's rank is 4 or greater, it should implement the HighRankDataSet interface which affords a slice operation to reduce rank. When a dataset's rank is 0, it should implement the RankZeroDataSet interface, which has a no-argument accessor. (TODO: Note that rank 0 and rank N have very limited use, so many routines aren't coded to handle them.)

Specified by:
rank in interface QDataSet
Specified by:
rank in class AbstractDataSet

length

public int length()
Description copied from interface: QDataSet
return the length of the first dimension

Specified by:
length in interface QDataSet
Overrides:
length in class AbstractDataSet

length

public int length(int i)
Description copied from interface: QDataSet
return the length of the second dimension, for the ith element of the first dimension

Specified by:
length in interface QDataSet
Overrides:
length in class AbstractDataSet

length

public int length(int i0,
                  int i1)
Description copied from interface: QDataSet
return the length of the third dimension, for the ith element of the first dimension and jth element of the second dimension.

Specified by:
length in interface QDataSet
Overrides:
length in class AbstractDataSet

value

public double value(int i0)
Description copied from interface: QDataSet
rank 1 accessor.

Specified by:
value in interface QDataSet
Overrides:
value in class AbstractDataSet

value

public double value(int i0,
                    int i1)
Description copied from interface: QDataSet
rank 2 accessor.

Specified by:
value in interface QDataSet
Overrides:
value in class AbstractDataSet

value

public double value(int i0,
                    int i1,
                    int i2)
Description copied from interface: QDataSet
rank 3 accessor.

Specified by:
value in interface QDataSet
Overrides:
value in class AbstractDataSet

putValue

public void putValue(int i0,
                     double value)
Specified by:
putValue in interface WritableDataSet

putValue

public void putValue(int i0,
                     int i1,
                     double value)
Specified by:
putValue in interface WritableDataSet

putValue

public void putValue(int i0,
                     int i1,
                     int i2,
                     double value)
Specified by:
putValue in interface WritableDataSet

putLength

public void putLength(int len)
Shorten the dataset by changing it's dim 0 length parameter. The same backing array is used, so the element that remain ill be the same. can only shorten!


toString

public java.lang.String toString()
Overrides:
toString in class AbstractDataSet

copy

public static FDataSet copy(QDataSet ds)
copies the dataset into a writeable dataset, and all of it's depend datasets as well. //TODO: check for DDataSet, do System.arraycopy.


wrap

public static FDataSet wrap(float[] back)
creates a rank1 FDataSet by wrapping an existing array.


wrap

public static FDataSet wrap(float[] back,
                            int nx,
                            int ny)
creates a FDataSet by wrapping an existing array, aliasing it to rank 2.


wrap

public static FDataSet wrap(float[] back,
                            int nx,
                            int ny,
                            int nz)
creates a FDataSet by wrapping an existing array, aliasing it to rank 3.


join

public void join(FDataSet ds)
append the second dataset onto this dataset. Not thread safe!!! TODO: this really should return a new dataset. Presumably this is to avoid copies, but currently it copies anyway!