Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc7d0540 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Use CodePointArrayView in DictionaryUtils.

Change-Id: I9ae308e60124ea5acb4ee09847c4fdd58ff168e2
parent 3e75c591
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -109,7 +109,7 @@ int Dictionary::getProbability(const CodePointArrayView codePoints) const {
int Dictionary::getMaxProbabilityOfExactMatches(const CodePointArrayView codePoints) const {
int Dictionary::getMaxProbabilityOfExactMatches(const CodePointArrayView codePoints) const {
    TimeKeeper::setCurrentTime();
    TimeKeeper::setCurrentTime();
    return DictionaryUtils::getMaxProbabilityOfExactMatches(
    return DictionaryUtils::getMaxProbabilityOfExactMatches(
            mDictionaryStructureWithBufferPolicy.get(), codePoints.data(), codePoints.size());
            mDictionaryStructureWithBufferPolicy.get(), codePoints);
}
}


int Dictionary::getNgramProbability(const PrevWordsInfo *const prevWordsInfo,
int Dictionary::getNgramProbability(const PrevWordsInfo *const prevWordsInfo,
+5 −5
Original line number Original line Diff line number Diff line
@@ -29,7 +29,7 @@ namespace latinime {


/* static */ int DictionaryUtils::getMaxProbabilityOfExactMatches(
/* static */ int DictionaryUtils::getMaxProbabilityOfExactMatches(
        const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
        const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
        const int *const codePoints, const int codePointCount) {
        const CodePointArrayView codePoints) {
    std::vector<DicNode> current;
    std::vector<DicNode> current;
    std::vector<DicNode> next;
    std::vector<DicNode> next;


@@ -40,16 +40,16 @@ namespace latinime {
            dictionaryStructurePolicy, &prevWordIdArray, false /* tryLowerCaseSearch */);
            dictionaryStructurePolicy, &prevWordIdArray, false /* tryLowerCaseSearch */);
    current.emplace_back();
    current.emplace_back();
    DicNodeUtils::initAsRoot(dictionaryStructurePolicy, prevWordIds, &current.front());
    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.
        // 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) {
        for (const DicNode &dicNode : current) {
            if (dicNode.isInDigraph() && dicNode.getNodeCodePoint() == codePoint) {
            if (dicNode.isInDigraph() && dicNode.getNodeCodePoint() == baseLowerCodePoint) {
                next.emplace_back(dicNode);
                next.emplace_back(dicNode);
                next.back().advanceDigraphIndex();
                next.back().advanceDigraphIndex();
                continue;
                continue;
            }
            }
            processChildDicNodes(dictionaryStructurePolicy, codePoint, &dicNode, &next);
            processChildDicNodes(dictionaryStructurePolicy, baseLowerCodePoint, &dicNode, &next);
        }
        }
        current.clear();
        current.clear();
        current.swap(next);
        current.swap(next);
+2 −1
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@
#include <vector>
#include <vector>


#include "defines.h"
#include "defines.h"
#include "utils/int_array_view.h"


namespace latinime {
namespace latinime {


@@ -30,7 +31,7 @@ class DictionaryUtils {
 public:
 public:
    static int getMaxProbabilityOfExactMatches(
    static int getMaxProbabilityOfExactMatches(
            const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
            const DictionaryStructureWithBufferPolicy *const dictionaryStructurePolicy,
            const int *const codePoints, const int codePointCount);
            const CodePointArrayView codePoints);


 private:
 private:
    DISALLOW_IMPLICIT_CONSTRUCTORS(DictionaryUtils);
    DISALLOW_IMPLICIT_CONSTRUCTORS(DictionaryUtils);