@Override public int getSize() { return (Pointer.NULL.getSize() * pointers.length); }
public XfsZPointerArray(Pointer aPointer) { int offset = 0; Buffer buffer = null; List<Pointer> pointers = new ArrayList<>(); while (true) { buffer = aPointer.buffer(offset + aPointer.getSize()); Pointer p = new Pointer(buffer.subBuffer(offset, aPointer.getSize())); if (Pointer.NULL.equals(p)) { break; } pointers.add(p); offset += p.getSize(); } this.pointers = pointers.toArray(new Pointer[pointers.size()]); assignBuffer(buffer); }
public ZList(Pointer pointer) { int offset = 0; Buffer buffer = null; while (true) { buffer = pointer.buffer(offset + pointer.getSize()); Pointer p = new Pointer(buffer.subBuffer(offset, pointer.getSize())); if (Pointer.NULL.equals(p)) { break; } pointers.add(p); offset += p.getSize(); } assignBuffer(buffer); }
public <T extends Type> ZList(List<T> types) { for (int i = 0; i < types.size(); i++) { pointers.add(new Pointer()); } allocate(); int offset = 0; for (int i = 0; i < types.size(); i++) { Pointer p = pointers.get(i); p.assignBuffer(getBuffer().subBuffer(offset, p.getSize())); p.pointTo(types.get(i)); offset += p.getSize(); } }
/** * @param p * the {@link Pointer} of the first element * @param length * the length of the array, must be at least 1 * @throws IllegalArgumentException * if length <= 0 */ public PointerArray(final Pointer p, final int length) throws IllegalArgumentException { this(length); if (length <= 0) { throw new IllegalArgumentException("Invalid length: " + length + ", length must be at least 1"); } assignBuffer(p.buffer(p.getSize() * length)); } }
public XfsZPointerArray(T[] array) { pointers = new Pointer[array.length]; allocate(); int size = Pointer.NULL.getSize(); for (int i = 0; i < pointers.length; i++) { pointers[i] = new Pointer(getBuffer().subBuffer(i * size, size)); pointers[i].pointTo(array[i]); } }