001/*- 002 * Copyright 2015, 2016 Diamond Light Source Ltd. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the Eclipse Public License v1.0 006 * which accompanies this distribution, and is available at 007 * http://www.eclipse.org/legal/epl-v10.html 008 */ 009 010package org.eclipse.january.dataset; 011 012import org.eclipse.january.DatasetException; 013import org.eclipse.january.IMonitor; 014import org.eclipse.january.io.ILazySaver; 015 016/** 017 * This sub-interface adds the ability to write to a lazy dataset slice-by-slice 018 */ 019public interface ILazyWriteableDataset extends IDynamicDataset { 020 021 /** 022 * See {@link IDynamicDataset#UNLIMITED} 023 */ 024 public static final int UNLIMITED = IDynamicDataset.UNLIMITED; 025 026 /** 027 * Set saver 028 * @param saver lazy saver 029 */ 030 public void setSaver(ILazySaver saver); 031 032 /** 033 * Set a slice of the dataset 034 * 035 * @param monitor can be null 036 * @param data input 037 * @param slice an n-D slice 038 * @throws DatasetException when cannot write data 039 */ 040 public void setSlice(final IMonitor monitor, final IDataset data, final SliceND slice) throws DatasetException; 041 042 /** 043 * Set a slice of the dataset 044 * 045 * @param monitor can be null 046 * @param data input 047 * @param start 048 * specifies the starting indexes (can be null for origin) 049 * @param stop 050 * specifies the stopping indexes (can be null for end) 051 * @param step 052 * specifies the steps in the slice (can be null for unit steps) 053 * @throws DatasetException when cannot write data 054 */ 055 public void setSlice(final IMonitor monitor, final IDataset data, final int[] start, final int[] stop, final int[] step) throws DatasetException; 056 057 /** 058 * Set a slice of the dataset synchronously 059 * 060 * @param monitor can be null 061 * @param data input 062 * @param slice an n-D slice 063 * @throws DatasetException when cannot write data 064 */ 065 public void setSliceSync(final IMonitor monitor, final IDataset data, final SliceND slice) throws DatasetException; 066 067 /** 068 * Set writing slices as asynchronous 069 * @param async true if writing should be asynchronous 070 */ 071 public void setWritingAsync(boolean async); 072 073 /** 074 * Get the value used to fill an un-initialized dataset 075 * @return fill value 076 */ 077 public Object getFillValue(); 078 079 /** 080 * Set the value used to fill an un-initialized dataset 081 * @param fill value 082 */ 083 public void setFillValue(Object fill); 084 085 @Override 086 public ILazyWriteableDataset squeezeEnds(); 087}