Package ucar.nc2.iosp

Class LayoutRegular

  • All Implemented Interfaces:
    Layout

    public class LayoutRegular
    extends Object
    implements Layout
    Indexer into data that has a "regular" layout, like netcdf-3 and hdf5 compact and contiguous storage. The data is contiguous, with outer dimension varying fastest. Given a Section, this calculates the set of contiguous "chunks" of the wanted data into the stored data. The wanted section is always a subset of the data section (see RegularSectionLayout where thats not the case).
    Since:
    Jan 3, 2008
    • Constructor Detail

      • LayoutRegular

        public LayoutRegular​(long startPos,
                             int elemSize,
                             int[] varShape,
                             @Nullable
                             Section wantSection)
                      throws InvalidRangeException
        Constructor.
        Parameters:
        startPos - starting address of the entire data array.
        elemSize - size of an element in bytes.
        varShape - shape of the entire data array.
        wantSection - the wanted section of data, contains a List of Range objects.
        Throws:
        InvalidRangeException - if ranges are misformed
    • Method Detail

      • getTotalNelems

        public long getTotalNelems()
        Description copied from interface: Layout
        Get total number of elements in the wanted subset.
        Specified by:
        getTotalNelems in interface Layout
        Returns:
        total number of elements in the wanted subset.
      • getElemSize

        public int getElemSize()
        Description copied from interface: Layout
        Get size of each element in bytes.
        Specified by:
        getElemSize in interface Layout
        Returns:
        size of each element in bytes.
      • hasNext

        public boolean hasNext()
        Description copied from interface: Layout
        Is there more to do
        Specified by:
        hasNext in interface Layout
        Returns:
        true if theres more to do
      • next

        public Layout.Chunk next()
        Description copied from interface: Layout
        Get the next chunk
        Specified by:
        next in interface Layout
        Returns:
        next chunk, or null if !hasNext()