
com.jaeksoft.searchlib.util.array.NativeIntBufferedArray Maven / Gradle / Ivy
/**
* License Agreement for OpenSearchServer
*
* Copyright (C) 2014 Emmanuel Keller / Jaeksoft
*
* http://www.open-search-server.com
*
* This file is part of OpenSearchServer.
*
* OpenSearchServer is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* OpenSearchServer is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* OpenSearchServer. If not, see .
**/
package com.jaeksoft.searchlib.util.array;
public class NativeIntBufferedArray implements IntBufferedArrayInterface {
private long ref;
private int pos;
private int[] buffer = new int[16384];
final private native long init(final long maxSize);
NativeIntBufferedArray(long maxSize) {
ref = init(maxSize);
}
final private native void free(final long ref);
@Override
protected void finalize() {
free(ref);
ref = 0;
}
final private void flushBuffer() {
add(ref, buffer, pos);
pos = 0;
}
final private native void add(final long ref, final int[] buffer,
final int length);
@Override
final public void add(final int value) {
if (pos == buffer.length)
flushBuffer();
buffer[pos++] = value;
}
final private native long getSize(final long ref);
@Override
final public long getSize() {
return getSize(ref) + pos;
}
public native void populateFinalArray(final long ref, final int[] finalArray);
@Override
final public int[] getFinalArray() {
if (pos > 0)
flushBuffer();
int[] finalArray = new int[(int) getSize()];
populateFinalArray(ref, finalArray);
return finalArray;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy