From 5520e84e16f3886548dc11cf888977a6dbbef5f1 Mon Sep 17 00:00:00 2001
From: Keisuke Kuroyanagi <ksk@google.com>
Date: Tue, 16 Sep 2014 15:46:28 +0900
Subject: [PATCH] Support removing n-gram entry in structure policy.

Bug: 14425059
Change-Id: Ifd2ac97a15dcbb936e2f068866a9d1ee68759ba2
---
 .../structure/v4/ver4_patricia_trie_node_writer.cpp    |  4 +---
 .../structure/v4/ver4_patricia_trie_policy.cpp         | 10 +---------
 2 files changed, 2 insertions(+), 12 deletions(-)

diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
index bc6e0ddab7..75ec169124 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_node_writer.cpp
@@ -232,11 +232,9 @@ bool Ver4PatriciaTrieNodeWriter::addNgramEntry(const WordIdArrayView prevWordIds
 
 bool Ver4PatriciaTrieNodeWriter::removeNgramEntry(const WordIdArrayView prevWordIds,
         const int wordId) {
-    // TODO: Support n-gram.
     LanguageModelDictContent *const languageModelDictContent =
             mBuffers->getMutableLanguageModelDictContent();
-    return languageModelDictContent->removeNgramProbabilityEntry(prevWordIds.limit(1 /* maxSize */),
-            wordId);
+    return languageModelDictContent->removeNgramProbabilityEntry(prevWordIds, wordId);
 }
 
 // TODO: Remove when we stop supporting v402 format.
diff --git a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
index a03e2a5eb8..b808c904da 100644
--- a/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
+++ b/native/jni/src/suggest/policyimpl/dictionary/structure/v4/ver4_patricia_trie_policy.cpp
@@ -375,15 +375,7 @@ bool Ver4PatriciaTriePolicy::removeNgramEntry(const PrevWordsInfo *const prevWor
     if (wordId == NOT_A_WORD_ID) {
         return false;
     }
-    std::array<int, MAX_PREV_WORD_COUNT_FOR_N_GRAM> prevWordsPtNodePos;
-    for (size_t i = 0; i < prevWordsPtNodePos.size(); ++i) {
-        prevWordsPtNodePos[i] = mBuffers->getTerminalPositionLookupTable()
-                ->getTerminalPtNodePosition(prevWordIds[i]);
-    }
-    const int wordPtNodePos = mBuffers->getTerminalPositionLookupTable()
-            ->getTerminalPtNodePosition(wordId);
-    if (mUpdatingHelper.removeNgramEntry(WordIdArrayView::fromArray(prevWordsPtNodePos),
-            wordPtNodePos)) {
+    if (mNodeWriter.removeNgramEntry(prevWordIds, wordId)) {
         mBigramCount--;
         return true;
     } else {
-- 
GitLab