/** * Gets the number of literal words for the current running length word. * * @return the number of literal words */ @Override public int getNumberOfLiteralWords() { return this.iteratingBrlw.getNumberOfLiteralWords(); }
/** * Gets the number of literal words for the current running length word. * * @return the number of literal words */ @Override public int getNumberOfLiteralWords() { return this.iteratingBrlw.getNumberOfLiteralWords(); }
/** * @return the beginning of the current run */ public int beginOfRun() { if (this.isLiteral) return this.endrun - this.iterator.getNumberOfLiteralWords(); return (this.endrun - this.iterator.getRunningLength()); }
/** * @return the beginning of the current run */ public int beginOfRun() { if (this.isLiteral) return this.endrun - this.iterator.getNumberOfLiteralWords(); return (this.endrun - this.iterator.getRunningLength()); }
@Override public void discardLiteralWords(int x) { this.iteratingBrlw.discardLiteralWords(x); if (this.iteratingBrlw.getNumberOfLiteralWords() == 0) this.next(); }
@Override public void discardRunningWords() { this.iteratingBrlw.discardRunningWords(); if (this.iteratingBrlw.getNumberOfLiteralWords() == 0) this.next(); }
/** * Process the next run */ public void parseNextRun() { if ((this.isLiteral) || (this.iterator.getNumberOfLiteralWords() == 0)) { // no choice, must load next runs this.iterator.discardFirstWords(this.iterator.size()); if (this.iterator.getRunningLength() > 0) { this.endrun += this.iterator .getRunningLength(); this.isLiteral = false; this.value = this.iterator.getRunningBit(); } else if (this.iterator.getNumberOfLiteralWords() > 0) { this.isLiteral = true; this.endrun += this.iterator .getNumberOfLiteralWords(); } else { this.dead = true; } } else { this.isLiteral = true; this.endrun += this.iterator.getNumberOfLiteralWords(); } }
/** * Process the next run */ public void parseNextRun() { if ((this.isLiteral) || (this.iterator.getNumberOfLiteralWords() == 0)) { // no choice, must load next runs this.iterator.discardFirstWords(this.iterator.size()); if (this.iterator.getRunningLength() > 0) { this.endrun += this.iterator .getRunningLength(); this.isLiteral = false; this.value = this.iterator.getRunningBit(); } else if (this.iterator.getNumberOfLiteralWords() > 0) { this.isLiteral = true; this.endrun += this.iterator .getNumberOfLiteralWords(); } else { this.dead = true; } } else { this.isLiteral = true; this.endrun += this.iterator.getNumberOfLiteralWords(); } }
@Override public void discardRunningWords() { this.iteratingBrlw.discardRunningWords(); if (this.iteratingBrlw.getNumberOfLiteralWords() == 0) this.next(); }
/** * Construct a pointer over an IteratingBufferedRunningLengthWord. * * @param previousEndRun word where the previous run ended * @param rw the iterator * @param pos current position (in word) */ public EWAHPointer32(final int previousEndRun, final IteratingBufferedRunningLengthWord32 rw, final int pos) { this.pos = pos; this.iterator = rw; if (this.iterator.getRunningLength() > 0) { this.endrun = previousEndRun + this.iterator.getRunningLength(); this.isLiteral = false; this.value = this.iterator.getRunningBit(); } else if (this.iterator.getNumberOfLiteralWords() > 0) { this.isLiteral = true; this.endrun = previousEndRun + this.iterator.getNumberOfLiteralWords(); } else { this.endrun = previousEndRun; this.dead = true; } }
/** * Construct a pointer over an IteratingBufferedRunningLengthWord. * * @param previousEndRun word where the previous run ended * @param rw the iterator * @param pos current position (in word) */ public EWAHPointer32(final int previousEndRun, final IteratingBufferedRunningLengthWord32 rw, final int pos) { this.pos = pos; this.iterator = rw; if (this.iterator.getRunningLength() > 0) { this.endrun = previousEndRun + this.iterator.getRunningLength(); this.isLiteral = false; this.value = this.iterator.getRunningBit(); } else if (this.iterator.getNumberOfLiteralWords() > 0) { this.isLiteral = true; this.endrun = previousEndRun + this.iterator.getNumberOfLiteralWords(); } else { this.endrun = previousEndRun; this.dead = true; } }
if (getNumberOfLiteralWords() + index > max) { final int offset = max - index; writeLiteralWords(offset, container); return max; writeLiteralWords(getNumberOfLiteralWords(), container); index += getNumberOfLiteralWords(); if(!next()) break;
/** * Discard first words, iterating to the next running length word if * needed. * * @param x the number of words to be discarded */ @Override public void discardFirstWords(int x) { while (x > 0) { if (this.iteratingBrlw.getRunningLength() > x) { this.iteratingBrlw.discardFirstWords(x); return; } this.iteratingBrlw.discardFirstWords(this.iteratingBrlw.getRunningLength()); x -= this.iteratingBrlw.getRunningLength(); int toDiscard = x > this.iteratingBrlw.getNumberOfLiteralWords() ? this.iteratingBrlw.getNumberOfLiteralWords() : x; this.iteratingBrlw.discardFirstWords(toDiscard); x -= toDiscard; if ((x > 0) || (this.iteratingBrlw.size() == 0)) { if (!this.next()) { break; } } } }
/** * Discard first words, iterating to the next running length word if * needed. * * @param x the number of words to be discarded */ @Override public void discardFirstWords(int x) { while (x > 0) { if (this.iteratingBrlw.getRunningLength() > x) { this.iteratingBrlw.discardFirstWords(x); return; } this.iteratingBrlw.discardFirstWords(this.iteratingBrlw.getRunningLength()); x -= this.iteratingBrlw.getRunningLength(); int toDiscard = x > this.iteratingBrlw.getNumberOfLiteralWords() ? this.iteratingBrlw.getNumberOfLiteralWords() : x; this.iteratingBrlw.discardFirstWords(toDiscard); x -= toDiscard; if ((x > 0) || (this.iteratingBrlw.size() == 0)) { if (!this.next()) { break; } } } }
/** * Write out up to max words (negated), returns how many were written * * @param container target for writes * @param max maximal number of writes * @return how many written */ public int dischargeNegated(BitmapStorage32 container, int max) { int index = 0; while ((index < max) && (size() > 0)) { // first run int pl = getRunningLength(); if (index + pl > max) { pl = max - index; } container.addStreamOfEmptyWords(!getRunningBit(), pl); index += pl; int pd = getNumberOfLiteralWords(); if (pd + index > max) { pd = max - index; } writeNegatedLiteralWords(pd, container); discardFirstWords(pl + pd); index += pd; } return index; }
/** * Write out up to max words, returns how many were written * * @param container target for writes * @param max maximal number of writes * @return how many written */ public int discharge(BitmapStorage32 container, int max) { int index = 0; while ((index < max) && (size() > 0)) { // first run int pl = getRunningLength(); if (index + pl > max) { pl = max - index; } container.addStreamOfEmptyWords(getRunningBit(), pl); index += pl; int pd = getNumberOfLiteralWords(); if (pd + index > max) { pd = max - index; } writeLiteralWords(pd, container); discardFirstWords(pl + pd); index += pd; } return index; }
/** * Write out up to max words (negated), returns how many were written * * @param container target for writes * @param max maximal number of writes * @return how many written */ public int dischargeNegated(BitmapStorage32 container, int max) { int index = 0; while ((index < max) && (size() > 0)) { // first run int pl = getRunningLength(); if (index + pl > max) { pl = max - index; } container.addStreamOfEmptyWords(!getRunningBit(), pl); index += pl; int pd = getNumberOfLiteralWords(); if (pd + index > max) { pd = max - index; } writeNegatedLiteralWords(pd, container); discardFirstWords(pl + pd); index += pd; } return index; }
rlwi.getNumberOfLiteralWords(), rlwj.getNumberOfLiteralWords()); if (nbre_literal > 0) { for (int k = 0; k < nbre_literal; ++k)
rlwi.getNumberOfLiteralWords(), rlwj.getNumberOfLiteralWords()); if (nbre_literal > 0) { for (int k = 0; k < nbre_literal; ++k)
rlwi.getNumberOfLiteralWords(), rlwj.getNumberOfLiteralWords()); if (nbre_literal > 0) { for (int k = 0; k < nbre_literal; ++k)