/** * returns distance (already translated from integer to double) */ final double getDist(long pointer) { int val = edges.getInt(pointer + E_DIST); // do never return infinity even if INT MAX, see #435 return val / INT_DIST_FACTOR; }
/** * @return the weight from the landmark to the specified node. Where the landmark integer is not * a node ID but the internal index of the landmark array. */ int getFromWeight(int landmarkIndex, int node) { //only the right bits of this integer store the backward value int res = landmarkWeightDA.getInt((long) node * LM_ROW_LENGTH + landmarkIndex * 4) & FROM_WEIGHT_INF; if (res == FROM_WEIGHT_INF) return Integer.MAX_VALUE; // throw new IllegalStateException("Do not call getFromWeight for wrong landmark[" + landmarkIndex + "]=" + landmarkIDs[landmarkIndex] + " and node " + node); assert res >= 0 : "Negative backward weight " + res + ", landmark index:" + landmarkIndex + ", node:" + node; return res; }
@Override public final int getAdditionalField() { return baseGraph.edges.getInt(edgePointer + baseGraph.E_ADDITIONAL); }
@Override public double getLongitude(int id) { int intVal = da.getInt((long) id * rowSizeInBytes + LON); return Helper.intToDegree(intVal); }
@Override public final int getLevel(int nodeIndex) { checkNodeId(nodeIndex); return nodesCH.getInt((long) nodeIndex * nodeCHEntryBytes + N_LEVEL); }
@Override public final int getSkippedEdge1() { checkShortcut(true, "getSkippedEdge1"); return shortcuts.getInt(edgePointer + S_SKIP_EDGE1); }
@Override public final int getSkippedEdge2() { checkShortcut(true, "getSkippedEdge2"); return shortcuts.getInt(edgePointer + S_SKIP_EDGE2); }
@Override public final double getElevation(int nodeId) { if (!elevation) throw new IllegalStateException("Cannot access elevation - 3D is not enabled"); return Helper.intToEle(that.nodes.getInt((long) nodeId * that.nodeEntryBytes + that.N_ELE)); }
@Override public double getLatitude(int id) { int intVal = da.getInt((long) id * rowSizeInBytes + LAT); return Helper.intToDegree(intVal); }
@Override public final int getAdditionalNodeField(int index) { if (that.extStorage.isRequireNodeField() && that.N_ADDITIONAL >= 0) return that.nodes.getInt((long) index * that.nodeEntryBytes + that.N_ADDITIONAL); else throw new AssertionError("This graph does not provide an additional node field"); }
int getOrigEdgeCount(int edgeId) { edgeId -= maxEdgesCount; if (edgeId < 0) return 1; long tmp = (long) edgeId * 4; originalEdges.ensureCapacity(tmp + 4); return originalEdges.getInt(tmp); } }
@Override public final int getSkippedEdge1() { checkShortcut(true, "getSkippedEdge1"); return shortcuts.getInt(edgePointer + S_SKIP_EDGE1); }
final long getFlags_(long edgePointer, boolean reverse) { int low = edges.getInt(edgePointer + E_FLAGS); long resFlags = low; if (flagsSizeIsLong) { int high = edges.getInt(edgePointer + E_FLAGS + 4); resFlags = bitUtil.combineIntsToLong(low, high); } if (reverse) resFlags = reverseFlags(edgePointer, resFlags); return resFlags; }
@Override public String getName() { int nameIndexRef = baseGraph.edges.getInt(edgePointer + baseGraph.E_NAME); return baseGraph.nameIndex.get(nameIndexRef); }
@Override public final int getSkippedEdge2() { checkShortcut(true, "getSkippedEdge2"); return shortcuts.getInt(edgePointer + S_SKIP_EDGE2); }
@Override public int get(long key) { long retIndex = binarySearch(keys, 0, getSize(), key); if (retIndex < 0) return noEntryValue; return values.getInt(retIndex * 4); }
@Override public double getElevation(int id) { if (!is3D()) return Double.NaN; int intVal = da.getInt((long) id * rowSizeInBytes + ELE); return Helper.intToEle(intVal); }
@Test public void testLoadClose() { DataAccess da = createDataAccess(name); da.create(300); da.setInt(2 * 4, 321); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(321, da.getInt(2 * 4)); da.close(); }
@Test public void textMixRAM2MMAP() { DataAccess da = new RAMDataAccess(name, directory, true, defaultOrder); assertFalse(da.loadExisting()); da.create(100); da.setInt(7 * 4, 123); da.flush(); da.close(); da = createDataAccess(name); assertTrue(da.loadExisting()); assertEquals(123, da.getInt(7 * 4)); da.close(); }