private int setInitialContents(int axis, int[] dims, LispObject contents, int index) { if (dims.length == 0) { try { data[index] = coerceLispObjectToJavaByte(contents); } catch (ArrayIndexOutOfBoundsException e) { error(new LispError("Bad initial contents for array.")); return -1; } ++index; } else { int dim = dims[0]; if (dim != contents.length()) { error(new LispError("Bad initial contents for array.")); return -1; } int[] newDims = new int[dims.length - 1]; for (int i = 1; i < dims.length; i++) newDims[i - 1] = dims[i]; if (contents.listp()) { for (int i = contents.length(); i-- > 0; ) { LispObject content = contents.car(); index = setInitialContents(axis + 1, newDims, content, index); contents = contents.cdr(); } } else { AbstractVector v = checkVector(contents); final int length = v.length(); for (int i = 0; i < length; i++) { LispObject content = v.AREF(i); index = setInitialContents(axis + 1, newDims, content, index); } } } return index; }
public void testAsFormatString() { String formatString = test.asFormatString(); Vector vec = AbstractVector.decodeVector(formatString); assertEquals(vec, test); }
public void testDecodeVector() throws Exception { Vector val = AbstractVector.decodeVector(test.asFormatString()); for (int i = 0; i < test.size(); i++) { assertEquals("get [" + i + ']', test.get(i), val.get(i)); } }