Improvements to array library

This commit is contained in:
Viktor Lofgren 2023-02-02 10:33:16 +01:00
parent 8168d512b8
commit e3bea19d4d
4 changed files with 14 additions and 10 deletions

View File

@ -18,22 +18,14 @@ public interface IntArrayBase extends BulkTransferArray<IntBuffer> {
}
}
default void increment(long pos) {
set(pos, get(pos) + 1);
}
default void swap(long pos1, long pos2) {
int tmp = get(pos1);
set(pos1, get(pos2));
set(pos2, tmp);
}
default void swapn(int n, long pos1, long pos2) {
for (int i = 0; i < n; i++) {
int tmp = get(pos1+i);
set(pos1+i, get(pos2+i));
set(pos2+i, tmp);
}
default void increment(long pos) {
set(pos, get(pos) + 1);
}
default int getAndIncrement(long pos) {
@ -47,6 +39,7 @@ public interface IntArrayBase extends BulkTransferArray<IntBuffer> {
set(start+i, buffer.get(i + bufferStart));
}
}
default void get(long start, long end, IntBuffer buffer, int bufferStart) {
for (int i = 0; i < (end-start); i++) {
buffer.put(i + bufferStart, get(start + i));

View File

@ -28,6 +28,7 @@ public interface LongArrayBase extends BulkTransferArray<LongBuffer> {
set(pos2, tmp);
}
/** Behavior not defined for overlapping ranges */
default void swapn(int n, long pos1, long pos2) {
for (int i = 0; i < n; i++) {
long tmp = get(pos1+i);

View File

@ -114,6 +114,11 @@ public class PagingIntArray extends AbstractPagingArray<IntArrayPage, IntBuffer>
}
}
@Override
public int getAndIncrement(long pos) {
return pages[partitioningScheme.getPage(pos)].getAndIncrement(partitioningScheme.getOffset(pos));
}
@Override
public void get(long start, long end, int[] buffer) {
if (partitioningScheme.isSamePage(start, end)) {

View File

@ -119,6 +119,11 @@ public class PagingLongArray extends AbstractPagingArray<LongArrayPage, LongBuff
}
}
@Override
public long getAndIncrement(long pos) {
return pages[partitioningScheme.getPage(pos)].getAndIncrement(partitioningScheme.getOffset(pos));
}
@Override
public void set(long pos, long value) {
int page = partitioningScheme.getPage(pos);