@Override public void getFromOffset(final long offset, final int ngramOrder, @OutputParameter final PhraseTableValues outputVal) { if (offset >= valueIndexes[ngramOrder].size()) return; final long valueIndex = valueIndexes[ngramOrder].get(offset); if (valueIndex == EMPTY_VALUE_INDEX) return; if (outputVal instanceof FeaturePhraseTableValues && valueIndex >= 0) { final float[] fs = new float[numFeatures]; for (int i = 0; i < numFeatures; ++i) fs[i] = Float.intBitsToFloat((int) features[ngramOrder].get((int) (valueIndex + i))); ((FeaturePhraseTableValues) outputVal).features = fs; } if (outputVal instanceof TargetTranslationsValues && valueIndex < 0) { ((TargetTranslationsValues) outputVal).targetTranslationOffsets = readOffsets(targetTranslations[ngramOrder].get((int) (-valueIndex - 1))); ((TargetTranslationsValues) outputVal).targetTranslationOrders = readOrders(targetTranslations[ngramOrder].get((int) (-valueIndex - 1))); } }
@Override public void getFromOffset(final long offset, final int ngramOrder, @OutputParameter final PhraseTableValues outputVal) { if (offset >= valueIndexes[ngramOrder].size()) return; long valueIndex = valueIndexes[ngramOrder].get(offset); if (valueIndex == EMPTY_VALUE_INDEX) return; if (outputVal instanceof FeaturePhraseTableValues && valueIndex >= 0) { final float[] fs = new float[numFeatures]; for (int i = 0; i < numFeatures; ++i) fs[i] = Float.intBitsToFloat((int) features[ngramOrder].get((int) (valueIndex + i))); ((FeaturePhraseTableValues) outputVal).features = fs; } if (outputVal instanceof TargetTranslationsValues && valueIndex < 0) { ((TargetTranslationsValues) outputVal).targetTranslationOffsets = readOffsets(targetTranslations[ngramOrder].get((int) (-valueIndex - 1))); ((TargetTranslationsValues) outputVal).targetTranslationOrders = readOrders(targetTranslations[ngramOrder].get((int) (-valueIndex - 1))); } }