/** * @return the instance key numbered with index i */ public InstanceKey getInstanceKey(int i) { return instanceKeys.getMappedObject(i); }
/** * @return the unique integer that identifies this pointer key */ public int getIndex(PointerKey p) { return pointerKeys.getMappedIndex(p); }
private int findOrCreateIndex(PointerKey key) { int result = pointerKeys.getMappedIndex(key); if (result == -1) { result = pointerKeys.add(key); } return result; }
/** * Utility method for mutable mapping. map[index] U= o */ protected static <T> void mapUsingMutableMapping(MutableMapping<List<T>> map, int index, T o){ List<T> set; if (index <= map.getMaximumIndex()){ set = map.getMappedObject(index); } else { set = null; } if (null == set){ set = new ArrayList<>(); map.put(index, set); } set.add(o); }
/** * Get the set of pointer keys that should be presented below an instance key in the heap tree. Override if you have special * pointer keys (not just for fields) */ protected List<? extends PointerKey> getPointerKeysUnderInstanceKey(InstanceKey ik) { int ikIndex = pa.getInstanceKeyMapping().getMappedIndex(ik); List<? extends PointerKey> ret; if (ikIndex <= instanceKeyIdToInstanceFieldPointers.getMaximumIndex()){ ret = nonNullList(instanceKeyIdToInstanceFieldPointers.getMappedObject(ikIndex)); } else { ret = Collections.emptyList(); } return ret; }
@Override public void addNode(T n) { if (n == null) { throw new IllegalArgumentException("n is null"); } map.add(n); }
/** * @return iterator of all PointerKeys tracked */ public Iterator<PointerKey> iterateKeys() { return pointerKeys.iterator(); }
@Override public int getNumberOfNodes() { return map.getSize(); }
public static <T> MutableMapping<T> make() { return new MutableMapping<>(); }
@Override public int getMaxNumber() { return map.getMaximumIndex(); }
public static <T> OffsetOrdinalSetMapping<T> make(int offset) { MutableMapping<T> m = MutableMapping.make(); return new OffsetOrdinalSetMapping<>(m, offset); }
@Override public void removeNode(T n) { map.deleteMappedObject(n); }
/** * Utility method for mutable mapping. map[index] U= o */ protected static <T> void mapUsingMutableMapping(MutableMapping<List<T>> map, int index, T o){ List<T> set; if (index <= map.getMaximumIndex()){ set = map.getMappedObject(index); } else { set = null; } if (null == set){ set = new ArrayList<>(); map.put(index, set); } set.add(o); }
public int findOrCreateIndexForInstanceKey(InstanceKey key) { int result = instanceKeys.getMappedIndex(key); if (result == -1) { result = instanceKeys.add(key); } if (DEBUG) { System.err.println("getIndexForInstanceKey " + key + ' ' + result); } return result; }
/** * Get the set of pointer keys that should be presented below an instance key in the heap tree. Override if you have special * pointer keys (not just for fields) */ protected List<? extends PointerKey> getPointerKeysUnderInstanceKey(InstanceKey ik) { int ikIndex = pa.getInstanceKeyMapping().getMappedIndex(ik); List<? extends PointerKey> ret; if (ikIndex <= instanceKeyIdToInstanceFieldPointers.getMaximumIndex()){ ret = nonNullList(instanceKeyIdToInstanceFieldPointers.getMappedObject(ikIndex)); } else { ret = Collections.emptyList(); } return ret; }
@Override public void addNode(T n) { if (n == null) { throw new IllegalArgumentException("n is null"); } map.add(n); }
/** * @return iterator of all PointerKeys tracked */ public Iterator<PointerKey> iterateKeys() { return pointerKeys.iterator(); }
@Override public int getNumberOfNodes() { return map.getSize(); }
public static <T> MutableMapping<T> make() { return new MutableMapping<>(); }