Skip to content
Snippets Groups Projects
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
No related branches found
No related tags found
No related merge requests found
......@@ -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,
......
......@@ -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);
}
......
......@@ -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);
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment