aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/research/FixedLogBuffer.java
diff options
context:
space:
mode:
authorKurt Partridge <kep@google.com>2013-05-15 10:46:51 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2013-05-15 10:46:51 -0700
commit1efcbd67cd445d8c9218ed50d5ef8d5b9e3a273a (patch)
tree12d1a0782bd0c7ea90cfaf172da830c0d7836b7e /java/src/com/android/inputmethod/research/FixedLogBuffer.java
parentbec53aa09f89b4aecb276e98e8c1efe0d6857fd0 (diff)
parent8acab80a8680956038b45912d3e00a1d6a5e3cdb (diff)
downloadlatinime-1efcbd67cd445d8c9218ed50d5ef8d5b9e3a273a.tar.gz
latinime-1efcbd67cd445d8c9218ed50d5ef8d5b9e3a273a.tar.xz
latinime-1efcbd67cd445d8c9218ed50d5ef8d5b9e3a273a.zip
am 8acab80a: am 56f35a10: Merge "Fix bug in counting words between samples"
* commit '8acab80a8680956038b45912d3e00a1d6a5e3cdb': Fix bug in counting words between samples
Diffstat (limited to 'java/src/com/android/inputmethod/research/FixedLogBuffer.java')
-rw-r--r--java/src/com/android/inputmethod/research/FixedLogBuffer.java26
1 files changed, 17 insertions, 9 deletions
diff --git a/java/src/com/android/inputmethod/research/FixedLogBuffer.java b/java/src/com/android/inputmethod/research/FixedLogBuffer.java
index 78dc59562..641bf7eae 100644
--- a/java/src/com/android/inputmethod/research/FixedLogBuffer.java
+++ b/java/src/com/android/inputmethod/research/FixedLogBuffer.java
@@ -51,10 +51,6 @@ public class FixedLogBuffer extends LogBuffer {
mNumActualWords = 0;
}
- protected int getNumActualWords() {
- return mNumActualWords;
- }
-
/**
* Adds a new LogUnit to the front of the LIFO queue, evicting existing LogUnit's
* (oldest first) if word capacity is reached.
@@ -119,12 +115,24 @@ public class FixedLogBuffer extends LogBuffer {
return logUnit;
}
- protected void shiftOutWords(final int numWords) {
- final int targetNumWords = mNumActualWords - numWords;
- final LinkedList<LogUnit> logUnits = getLogUnits();
- while (mNumActualWords > targetNumWords && !logUnits.isEmpty()) {
- shiftOut();
+ /**
+ * Remove LogUnits from the front of the LogBuffer until {@code numWords} have been removed.
+ *
+ * If there are less than {@code numWords} word-containing {@link LogUnit}s, shifts out
+ * all {@code LogUnit}s in the buffer.
+ *
+ * @param numWords the number of word-containing {@link LogUnit}s to shift out
+ * @return the number of actual {@code LogUnit}s shifted out
+ */
+ protected int shiftOutWords(final int numWords) {
+ int numWordContainingLogUnitsShiftedOut = 0;
+ for (LogUnit logUnit = shiftOut(); logUnit != null
+ && numWordContainingLogUnitsShiftedOut < numWords; logUnit = shiftOut()) {
+ if (logUnit.hasWord()) {
+ numWordContainingLogUnitsShiftedOut++;
+ }
}
+ return numWordContainingLogUnitsShiftedOut;
}
public void shiftOutAll() {