From fc7d0540fee2ac09336b562af7a421e96790cb7f Mon Sep 17 00:00:00 2001
From: Keisuke Kuroyanagi <ksk@google.com>
Date: Wed, 17 Sep 2014 20:12:14 +0900
Subject: [PATCH] Use CodePointArrayView in DictionaryUtils.

Change-Id: I9ae308e60124ea5acb4ee09847c4fdd58ff168e2
---
 native/jni/src/suggest/core/dictionary/dictionary.cpp  |  2 +-
 .../src/suggest/core/dictionary/dictionary_utils.cpp   | 10 +++++-----
 .../jni/src/suggest/core/dictionary/dictionary_utils.h |  3 ++-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/native/jni/src/suggest/core/dictionary/dictionary.cpp b/native/jni/src/suggest/core/dictionary/dictionary.cpp
index 79967c6abf..f9f36ce446 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary.cpp
+++ b/native/jni/src/suggest/core/dictionary/dictionary.cpp
@@ -109,7 +109,7 @@ int Dictionary::getProbability(const CodePointArrayView codePoints) const {
 int Dictionary::getMaxProbabilityOfExactMatches(const CodePointArrayView codePoints) const {
     TimeKeeper::setCurrentTime();
     return DictionaryUtils::getMaxProbabilityOfExactMatches(
-            mDictionaryStructureWithBufferPolicy.get(), codePoints.data(), codePoints.size());
+            mDictionaryStructureWithBufferPolicy.get(), codePoints);
 }
 
 int Dictionary::getNgramProbability(const PrevWordsInfo *const prevWordsInfo,
diff --git a/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp b/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp
index d09266e29b..b85f3622a1 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp
+++ b/native/jni/src/suggest/core/dictionary/dictionary_utils.cpp
@@ -29,7 +29,7 @@ namespace latinime {
 
 /* static */ int DictionaryUtils::getMaxProbabilityOfExactMatches(
         const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-        const int *const codePoints, const int codePointCount) {
+        const CodePointArrayView codePoints) {
     std::vector<DicNode> current;
     std::vector<DicNode> next;
 
@@ -40,16 +40,16 @@ namespace latinime {
             dictionaryStructurePolicy, &prevWordIdArray, false /* tryLowerCaseSearch */);
     current.emplace_back();
     DicNodeUtils::initAsRoot(dictionaryStructurePolicy, prevWordIds, &current.front());
-    for (int i = 0; i < codePointCount; ++i) {
+    for (const int codePoint : codePoints) {
         // The base-lower input is used to ignore case errors and accent errors.
-        const int codePoint = CharUtils::toBaseLowerCase(codePoints[i]);
+        const int baseLowerCodePoint = CharUtils::toBaseLowerCase(codePoint);
         for (const DicNode &dicNode : current) {
-            if (dicNode.isInDigraph() && dicNode.getNodeCodePoint() == codePoint) {
+            if (dicNode.isInDigraph() && dicNode.getNodeCodePoint() == baseLowerCodePoint) {
                 next.emplace_back(dicNode);
                 next.back().advanceDigraphIndex();
                 continue;
             }
-            processChildDicNodes(dictionaryStructurePolicy, codePoint, &dicNode, &next);
+            processChildDicNodes(dictionaryStructurePolicy, baseLowerCodePoint, &dicNode, &next);
         }
         current.clear();
         current.swap(next);
diff --git a/native/jni/src/suggest/core/dictionary/dictionary_utils.h b/native/jni/src/suggest/core/dictionary/dictionary_utils.h
index 358ebf674e..4dd21c9bec 100644
--- a/native/jni/src/suggest/core/dictionary/dictionary_utils.h
+++ b/native/jni/src/suggest/core/dictionary/dictionary_utils.h
@@ -20,6 +20,7 @@
 #include <vector>
 
 #include "defines.h"
+#include "utils/int_array_view.h"
 
 namespace latinime {
 
@@ -30,7 +31,7 @@ class DictionaryUtils {
  public:
     static int getMaxProbabilityOfExactMatches(
             const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
-            const int *const codePoints, const int codePointCount);
+            const CodePointArrayView codePoints);
 
  private:
     DISALLOW_IMPLICIT_CONSTRUCTORS(DictionaryUtils);
-- 
GitLab