@Override public IndexMappingBufferRecord clone() { return new IndexMappingBufferRecord(states, toName); }
@Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(Context.get().getIndexConverterManager().getSymbol(getIndexName(), OutputFormat.UTF8)); sb.append(":"); for (int i = 2; i >= 0; --i) sb.append(getStatesBit(i) ? 1 : 0); return sb.toString(); } }
public int getFromRawState() { if ((states & 4) == 0) return getToRawState(); else return 0x80000000 ^ getToRawState(); }
/** * String representation in specified output format. * * @param format output format * @return string representation in specified output format */ public String toString(OutputFormat format) { StringBuilder sb = new StringBuilder(); sb.append(sign ? '-' : '+').append('{'); if (map.isEmpty()) return sb.append('}').toString(); String from, to; TIntObjectIterator<IndexMappingBufferRecord> iterator = map.iterator(); while (iterator.hasNext()) { iterator.advance(); if (iterator.value().isContracted()) { from = toStringIndex(iterator.key(), format).substring(1); to = toStringIndex(iterator.value().getIndexName(), format).substring(1); sb.append(','); } else { from = toStringIndex(setRawState(iterator.value().getFromRawState(), iterator.key()), format); to = toStringIndex(setRawState(iterator.value().getToRawState(), iterator.value().getIndexName()), format); } sb.append(from).append(" -> ").append(to).append(", "); } sb.deleteCharAt(sb.length() - 1).deleteCharAt(sb.length() - 1).append('}'); return sb.toString(); } // public String toStringWithStates() {
continue; if (getRawStateInt(fromIndex) == bRec.getFromRawState()) return currentBuffer = null; int toIndex = inverseIndexState(setRawState(bRec.getToRawState(), bRec.getIndexName())); for (int mapTo = 0; mapTo < size; ++mapTo) { if (toIndices.get(mapTo) == toIndex) {
@Override public boolean tryMap(int from, int to) { int fromState = IndicesUtils.getStateInt(from); if (fromState != IndicesUtils.getStateInt(to) && !CC.isMetric(IndicesUtils.getType(from))) return false; int fromName = IndicesUtils.getNameWithType(from); IndexMappingBufferRecord record = map.get(fromName); if (record == null) { record = new IndexMappingBufferRecord(from, to); map.put(fromName, record); return true; } return record.tryMap(from, to); }
Mapping(IndexMappingBuffer buffer) { TIntObjectHashMap<IndexMappingBufferRecord> map = buffer.getMap(); fromNames = new int[map.size()]; toData = new int[map.size()]; TIntObjectIterator<IndexMappingBufferRecord> iterator = map.iterator(); int i = 0; IndexMappingBufferRecord record; while (iterator.hasNext()) { iterator.advance(); record = iterator.value(); fromNames[i] = iterator.key(); toData[i] = record.getRawDiffStateBit() | record.getIndexName(); ++i; } ArraysUtils.quickSort(fromNames, toData); sign = buffer.getSign(); }
public void invertStates() { if (isContracted()) return; states ^= 3; }
@Override public FromToHolder export() { final TIntObjectHashMap<IndexMappingBufferRecord> map = innerBuffer.map; final int size = from.length + map.size(); int[] from1 = new int[size], to1 = new int[size]; System.arraycopy(from, 0, from1, 0, from.length); System.arraycopy(to, 0, to1, 0, from.length); int i = from.length; TIntObjectIterator<IndexMappingBufferRecord> iterator = map.iterator(); while (iterator.hasNext()) { iterator.advance(); from1[i] = iterator.key(); to1[i++] = iterator.value().getIndexName(); } return new FromToHolder(from1, to1, getSign()); }
@Override public IndexMappingBufferImpl clone() { TIntObjectHashMap<IndexMappingBufferRecord> newMap = new TIntObjectHashMap<>(map); TIntObjectIterator<IndexMappingBufferRecord> iterator = newMap.iterator(); while (iterator.hasNext()) { iterator.advance(); iterator.setValue(iterator.value().clone()); } return new IndexMappingBufferImpl(newMap, sign); }
@Override public void removeContracted() { TIntObjectIterator<IndexMappingBufferRecord> iterator = map.iterator(); while (iterator.hasNext()) { iterator.advance(); if (iterator.value().isContracted()) iterator.remove(); } }
@Override public FromToHolder export() { final int size = map.size(); int[] from = new int[size], to = new int[size]; int i = 0; TIntObjectIterator<IndexMappingBufferRecord> iterator = map.iterator(); while (iterator.hasNext()) { iterator.advance(); from[i] = iterator.key(); to[i++] = iterator.value().getIndexName(); } return new FromToHolder(from, to, sign); }