3
* This file is part of jReality. jReality is open source software, made
4
* available under a BSD license:
6
* Copyright (c) 2003-2006, jReality Group: Charles Gunn, Tim Hoffmann, Markus
7
* Schmies, Steffen Weissmann.
11
* Redistribution and use in source and binary forms, with or without
12
* modification, are permitted provided that the following conditions are met:
14
* - Redistributions of source code must retain the above copyright notice, this
15
* list of conditions and the following disclaimer.
17
* - Redistributions in binary form must reproduce the above copyright notice,
18
* this list of conditions and the following disclaimer in the documentation
19
* and/or other materials provided with the distribution.
21
* - Neither the name of jReality nor the names of its contributors nor the
22
* names of their associated organizations may be used to endorse or promote
23
* products derived from this software without specific prior written
26
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
27
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
30
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36
* POSSIBILITY OF SUCH DAMAGE.
41
package opencog.spacetime.scene.data;
43
import java.nio.ByteBuffer;
44
import java.nio.ByteOrder;
45
import java.nio.IntBuffer;
48
* An immutable array. A good JIT compiler optimizes this such that access it is not slower
49
* as for the pure array. The advantage is, that only the creator who provided the array is allowed to
53
* @author <a href="mailto:hoffmann@math.tu-berlin.de">Tim Hoffmann</a>
56
public class IntArray extends DataList {
57
transient final int[] data;
58
transient final int offset, length;
62
public IntArray(int[] data) {
63
this(data, 0, data.length);
65
public IntArray(int[] data, int offset, int length) {
66
super(StorageModel.INT_ARRAY, data, offset, length);
71
public IntArray toIntArray() {
74
public final int[] toIntArray(int[] target) {
75
if(target==null) target=new int[length];
76
for(int src=offset, dst=0, n=length; dst<n; src++, dst++)
77
target[dst]=data[src];
81
* copies the containing data into a given or native ByteBuffer<br>
86
public final ByteBuffer toNativeByteBuffer(ByteBuffer bb) {
88
bb = (ByteBuffer)ByteBuffer.allocateDirect(length*4).order(ByteOrder.nativeOrder());
90
IntBuffer target = bb.asIntBuffer();
91
target.put(data, offset, length);
95
* Copies all entries of the underlying array into the <code>target</code>
96
* parameter or into a new array using widening conversion for each entry.
97
* Return the target array.
99
public final double[] toDoubleArray(double[] target) {
100
if(target==null) target=new double[length];
101
for(int src=offset, dst=0, n=length; dst<n; src++, dst++)
102
target[dst]=data[src];
105
public final int getValueAt(final int n) {
106
if(n>=length) throw new ArrayIndexOutOfBoundsException();
107
return data[n+offset];
109
public final int getLength() {