public long[] getApproximateSizes(NativeRange... ranges) { if (ranges == null) { return null; } long rc[] = new long[ranges.length]; NativeRange.RangeJNI structs[] = new NativeRange.RangeJNI[ranges.length]; if (rc.length > 0) { NativeBuffer range_array = NativeRange.RangeJNI.arrayCreate(ranges.length); try { for (int i = 0; i < ranges.length; i++) { structs[i] = new NativeRange.RangeJNI(ranges[i]); structs[i].arrayWrite(range_array.pointer(), i); } DBJNI.GetApproximateSizes(self, range_array.pointer(), ranges.length, rc); } finally { for (int i = 0; i < ranges.length; i++) { if (structs[i] != null) { structs[i].delete(); } } range_array.delete(); } } return rc; }