public DSNumber sibling() { int[] newIndex = new int[index.length]; for (int i = 0; i < index.length; ++i) newIndex[i] = index[i]; newIndex[index.length - 1]++; return new DSNumber(newIndex); }
public DSNumber tail() { if (index.length < 2) return null; int[] newIndex = new int[index.length - 1]; for (int i = 1; i < index.length; ++i) newIndex[i - 1] = index[i]; return new DSNumber(newIndex); }
public DSNumber parent() { if (index.length <= 1) return null; int[] newIndex = new int[index.length - 1]; for (int i = 0; i < index.length - 1; ++i) newIndex[i] = index[i]; return new DSNumber(newIndex); }
public static DSNumber root() { return new DSNumber(0); }
public static DSNumber parse(String indexStr) { if (indexStr == null) throw new NullPointerException("indexStr"); String[] component = indexStr.split("\\."); if (component == null) throw new XerialError(XerialErrorCode.INVALID_INPUT, "invalid format:" + indexStr); int[] index = new int[component.length]; for (int i = 0; i < component.length; ++i) index[i] = Integer.parseInt(component[i]); return new DSNumber(index); }