@Override public StringDatasetBase getView() { StringDatasetBase view = new StringDatasetBase(); copyToView(this, view, true, true); view.setData(); return view; }
@Override public StringDatasetBase getSlice(final SliceIterator siter) { StringDatasetBase result = new StringDatasetBase(siter.getShape()); String[] rdata = result.data; // PRIM_TYPE for (int i = 0; siter.hasNext(); i++) rdata[i] = data[siter.index]; result.setName( name + BLOCK_OPEN + Slice.createString(siter.shape, siter.start, siter.stop, siter.step) + BLOCK_CLOSE); return result; }
@Override public boolean equals(Object obj) { if (!super.equals(obj)) { return false; } if (getRank() == 0) // already true for zero-rank dataset return true; StringDatasetBase other = (StringDatasetBase) obj; IndexIterator iter = getIterator(); IndexIterator oiter = other.getIterator(); while (iter.hasNext() && oiter.hasNext()) { if (!data[iter.index].equals(other.data[oiter.index])) // OBJECT_UNEQUAL return false; } return true; }
/** * Copy a dataset * * @param dataset */ public StringDatasetBase(final StringDatasetBase dataset) { copyToView(dataset, this, true, true); try { if (dataset.stride == null) { odata = data = dataset.data.clone(); } else { offset = 0; stride = null; base = null; odata = data = createArray(size); IndexIterator iter = dataset.getIterator(); for (int i = 0; iter.hasNext(); i++) { data[i] = dataset.data[iter.index]; } } } catch (Throwable t) { logger.error("Could not create a dataset of shape {}", Arrays.toString(shape), t); throw t; } }
/** * Create a dataset from an object which could be a Java list, array (of arrays...) or Number. * Ragged sequences or arrays are padded with zeros. * * @param obj * @return dataset with contents given by input */ public static StringDatasetBase createFromObject(final Object obj) { StringDatasetBase result = new StringDatasetBase(); result.shape = getShapeFromObject(obj); result.size = calcSize(result.shape); try { result.odata = result.data = createArray(result.size); } catch (Throwable t) { logger.error("Could not create a dataset of shape {}", Arrays.toString(result.shape), t); throw t; } int[] pos = new int[result.shape.length]; result.fillData(obj, 0, pos); return result; }