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

Commit 198a47a1 authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi Committed by Android (Google) Code Review
Browse files

Merge "Add firstOrDefault and lastOrDefault to IntArrayView."

parents 0be559d9 09c15492
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -397,7 +397,7 @@ bool Ver4PatriciaTriePolicy::removeNgramEntry(const PrevWordsInfo *const prevWor
    WordIdArray<MAX_PREV_WORD_COUNT_FOR_N_GRAM> prevWordIdArray;
    const WordIdArrayView prevWordIds = prevWordsInfo->getPrevWordIds(this, &prevWordIdArray,
            false /* tryLowerCaseSerch */);
    if (prevWordIds.empty() || prevWordIds[0] == NOT_A_WORD_ID) {
    if (prevWordIds.firstOrDefault(NOT_A_WORD_ID) == NOT_A_WORD_ID) {
        return false;
    }
    const int wordPos = getTerminalPtNodePosFromWordId(getWordId(wordCodePoints,
+2 −2
Original line number Diff line number Diff line
@@ -167,7 +167,7 @@ int LanguageModelDictContent::createAndGetBitmapEntryIndex(const WordIdArrayView
    if (lastBitmapEntryIndex == TrieMap::INVALID_INDEX) {
        return TrieMap::INVALID_INDEX;
    }
    const int oldestPrevWordId = prevWordIds[prevWordIds.size() - 1];
    const int oldestPrevWordId = prevWordIds.lastOrDefault(NOT_A_WORD_ID);
    const TrieMap::Result result = mTrieMap.get(oldestPrevWordId, lastBitmapEntryIndex);
    if (!result.mIsValid) {
        if (!mTrieMap.put(oldestPrevWordId,
@@ -175,7 +175,7 @@ int LanguageModelDictContent::createAndGetBitmapEntryIndex(const WordIdArrayView
            return TrieMap::INVALID_INDEX;
        }
    }
    return mTrieMap.getNextLevelBitmapEntryIndex(prevWordIds[prevWordIds.size() - 1],
    return mTrieMap.getNextLevelBitmapEntryIndex(prevWordIds.lastOrDefault(NOT_A_WORD_ID),
            lastBitmapEntryIndex);
}

+14 −0
Original line number Diff line number Diff line
@@ -115,6 +115,20 @@ class IntArrayView {
        memmove(buffer->data() + offset, mPtr, sizeof(int) * mSize);
    }

    AK_FORCE_INLINE int firstOrDefault(const int defaultValue) const {
        if (empty()) {
            return defaultValue;
        }
        return mPtr[0];
    }

    AK_FORCE_INLINE int lastOrDefault(const int defaultValue) const {
        if (empty()) {
            return defaultValue;
        }
        return mPtr[mSize - 1];
    }

 private:
    DISALLOW_ASSIGNMENT_OPERATOR(IntArrayView);

+20 −0
Original line number Diff line number Diff line
@@ -124,5 +124,25 @@ TEST(IntArrayViewTest, TestCopyToArray) {
    EXPECT_EQ(70, buffer[6]);
}

TEST(IntArrayViewTest, TestFirstOrDefault) {
    const std::vector<int> intVector = {3, 2, 1, 0, -1, -2};
    IntArrayView intArrayView(intVector);

    EXPECT_EQ(3, intArrayView.firstOrDefault(10));
    EXPECT_EQ(10, intArrayView.limit(0).firstOrDefault(10));
    EXPECT_EQ(-10, intArrayView.limit(0).firstOrDefault(-10));
    EXPECT_EQ(10, intArrayView.skip(6).firstOrDefault(10));
}

TEST(IntArrayViewTest, TestLastOrDefault) {
    const std::vector<int> intVector = {3, 2, 1, 0, -1, -2};
    IntArrayView intArrayView(intVector);

    EXPECT_EQ(-2, intArrayView.lastOrDefault(10));
    EXPECT_EQ(10, intArrayView.limit(0).lastOrDefault(10));
    EXPECT_EQ(-10, intArrayView.limit(0).lastOrDefault(-10));
    EXPECT_EQ(10, intArrayView.skip(6).lastOrDefault(10));
}

}  // namespace
}  // namespace latinime