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

Commit 6258c57c authored by Keisuke Kuroyanagi's avatar Keisuke Kuroyanagi
Browse files

Use ReadOnlyByteArrayView in Ver2ParticiaTrieNodeReader.

Change-Id: Ie3325bb9666c7ff6d519a1b72ed2fe9fc4f140a9
parent a892628f
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -46,10 +46,9 @@ class PatriciaTriePolicy : public DictionaryStructureWithBufferPolicy {
                      FormatUtils::VERSION_2),
              mBuffer(mMmappedBuffer->getReadOnlyByteArrayView().skip(mHeaderPolicy.getSize())),
              mBigramListPolicy(mBuffer), mShortcutListPolicy(mBuffer),
              mPtNodeReader(mBuffer.data(), mBuffer.size(), &mBigramListPolicy,
                      &mShortcutListPolicy),
              mPtNodeArrayReader(mBuffer),
              mTerminalPtNodePositionsForIteratingWords(), mIsCorrupted(false) {}
              mPtNodeReader(mBuffer, &mBigramListPolicy, &mShortcutListPolicy),
              mPtNodeArrayReader(mBuffer), mTerminalPtNodePositionsForIteratingWords(),
              mIsCorrupted(false) {}

    AK_FORCE_INLINE int getRootPosition() const {
        return 0;
+4 −4
Original line number Diff line number Diff line
@@ -22,10 +22,10 @@ namespace latinime {

const PtNodeParams Ver2ParticiaTrieNodeReader::fetchPtNodeParamsInBufferFromPtNodePos(
        const int ptNodePos) const {
    if (ptNodePos < 0 || ptNodePos >= mDictSize) {
    if (ptNodePos < 0 || ptNodePos >= static_cast<int>(mBuffer.size())) {
        // Reading invalid position because of bug or broken dictionary.
        AKLOGE("Fetching PtNode info from invalid dictionary position: %d, dictionary size: %d",
                ptNodePos, mDictSize);
        AKLOGE("Fetching PtNode info from invalid dictionary position: %d, dictionary size: %zd",
                ptNodePos, mBuffer.size());
        ASSERT(false);
        return PtNodeParams();
    }
@@ -37,7 +37,7 @@ const PtNodeParams Ver2ParticiaTrieNodeReader::fetchPtNodeParamsInBufferFromPtNo
    int shortcutPos = NOT_A_DICT_POS;
    int bigramPos = NOT_A_DICT_POS;
    int siblingPos = NOT_A_DICT_POS;
    PatriciaTrieReadingUtils::readPtNodeInfo(mDictBuffer, ptNodePos, mShortuctPolicy,
    PatriciaTrieReadingUtils::readPtNodeInfo(mBuffer.data(), ptNodePos, mShortuctPolicy,
            mBigramPolicy, &flags, &mergedNodeCodePointCount, mergedNodeCodePoints, &probability,
            &childrenPos, &shortcutPos, &bigramPos, &siblingPos);
    if (mergedNodeCodePointCount <= 0) {
+4 −5
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include "defines.h"
#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_params.h"
#include "suggest/policyimpl/dictionary/structure/pt_common/pt_node_reader.h"
#include "utils/byte_array_view.h"

namespace latinime {

@@ -30,19 +31,17 @@ class DictionaryShortcutsStructurePolicy;

class Ver2ParticiaTrieNodeReader : public PtNodeReader {
 public:
    Ver2ParticiaTrieNodeReader(const uint8_t *const dictBuffer, const int dictSize,
    Ver2ParticiaTrieNodeReader(const ReadOnlyByteArrayView buffer,
            const DictionaryBigramsStructurePolicy *const bigramPolicy,
            const DictionaryShortcutsStructurePolicy *const shortcutPolicy)
            : mDictBuffer(dictBuffer), mDictSize(dictSize), mBigramPolicy(bigramPolicy),
              mShortuctPolicy(shortcutPolicy) {}
            : mBuffer(buffer), mBigramPolicy(bigramPolicy), mShortuctPolicy(shortcutPolicy) {}

    virtual const PtNodeParams fetchPtNodeParamsInBufferFromPtNodePos(const int ptNodePos) const;

 private:
    DISALLOW_IMPLICIT_CONSTRUCTORS(Ver2ParticiaTrieNodeReader);

    const uint8_t *const mDictBuffer;
    const int mDictSize;
    const ReadOnlyByteArrayView mBuffer;
    const DictionaryBigramsStructurePolicy *const mBigramPolicy;
    const DictionaryShortcutsStructurePolicy *const mShortuctPolicy;
};