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

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

Merge "Move methods using ByteArrayUtils from .h to .cpp."

parents 7d2a0db7 9ea9c61c
Loading
Loading
Loading
Loading
+16 −0
Original line number Diff line number Diff line
@@ -38,6 +38,22 @@ const BigramListReadWriteUtils::BigramFlags
        BigramListReadWriteUtils::MASK_ATTRIBUTE_PROBABILITY = 0x0F;
const int BigramListReadWriteUtils::ATTRIBUTE_ADDRESS_SHIFT = 4;

/* static */ BigramListReadWriteUtils::BigramFlags
        BigramListReadWriteUtils::getFlagsAndForwardPointer(const uint8_t *const bigramsBuf,
                int *const pos) {
    return ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf, pos);
}

/* static */ void BigramListReadWriteUtils::skipExistingBigrams(const uint8_t *const bigramsBuf,
        int *const pos) {
    BigramFlags flags = getFlagsAndForwardPointer(bigramsBuf, pos);
    while (hasNext(flags)) {
        *pos += attributeAddressSize(flags);
        flags = getFlagsAndForwardPointer(bigramsBuf, pos);
    }
    *pos += attributeAddressSize(flags);
}

/* static */ int BigramListReadWriteUtils::getBigramAddressAndForwardPointer(
        const uint8_t *const bigramsBuf, const BigramFlags flags, int *const pos) {
    int offset = 0;
+2 −14
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
#include <stdint.h>

#include "defines.h"
#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"

namespace latinime {

@@ -29,10 +28,7 @@ class BigramListReadWriteUtils {
public:
   typedef uint8_t BigramFlags;

   static AK_FORCE_INLINE BigramFlags getFlagsAndForwardPointer(
           const uint8_t *const bigramsBuf, int *const pos) {
       return ByteArrayUtils::readUint8AndAdvancePosition(bigramsBuf, pos);
   }
   static BigramFlags getFlagsAndForwardPointer(const uint8_t *const bigramsBuf, int *const pos);

   static AK_FORCE_INLINE int getProbabilityFromFlags(const BigramFlags flags) {
       return flags & MASK_ATTRIBUTE_PROBABILITY;
@@ -43,15 +39,7 @@ public:
   }

   // Bigrams reading methods
   static AK_FORCE_INLINE void skipExistingBigrams(const uint8_t *const bigramsBuf,
           int *const pos) {
       BigramFlags flags = getFlagsAndForwardPointer(bigramsBuf, pos);
       while (hasNext(flags)) {
           *pos += attributeAddressSize(flags);
           flags = getFlagsAndForwardPointer(bigramsBuf, pos);
       }
       *pos += attributeAddressSize(flags);
   }
   static void skipExistingBigrams(const uint8_t *const bigramsBuf, int *const pos);

   static int getBigramAddressAndForwardPointer(const uint8_t *const bigramsBuf,
           const BigramFlags flags, int *const pos);
+11 −0
Original line number Diff line number Diff line
@@ -28,6 +28,17 @@ const DptReadingUtils::NodeFlags DptReadingUtils::FLAG_IS_NOT_MOVED = 0xC0;
const DptReadingUtils::NodeFlags DptReadingUtils::FLAG_IS_MOVED = 0x40;
const DptReadingUtils::NodeFlags DptReadingUtils::FLAG_IS_DELETED = 0x80;

/* static */ int DptReadingUtils::getForwardLinkPosition(const uint8_t *const buffer,
        const int pos) {
    int linkAddressPos = pos;
    return ByteArrayUtils::readSint24AndAdvancePosition(buffer, &linkAddressPos);
}

/* static */ int DptReadingUtils::getParentPosAndAdvancePosition(const uint8_t *const buffer,
        int *const pos) {
    return ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
}

/* static */ int DptReadingUtils::readChildrenPositionAndAdvancePosition(
        const uint8_t *const buffer, int *const pos) {
    const int base = *pos;
+2 −9
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@
#include <stdint.h>

#include "defines.h"
#include "suggest/policyimpl/dictionary/utils/byte_array_utils.h"

namespace latinime {

@@ -28,19 +27,13 @@ class DynamicPatriciaTrieReadingUtils {
 public:
    typedef uint8_t NodeFlags;

    static AK_FORCE_INLINE int getForwardLinkPosition(const uint8_t *const buffer, const int pos) {
        int linkAddressPos = pos;
        return ByteArrayUtils::readSint24AndAdvancePosition(buffer, &linkAddressPos);
    }
    static int getForwardLinkPosition(const uint8_t *const buffer, const int pos);

    static AK_FORCE_INLINE bool isValidForwardLinkPosition(const int forwardLinkAddress) {
        return forwardLinkAddress != 0;
    }

    static AK_FORCE_INLINE int getParentPosAndAdvancePosition(const uint8_t *const buffer,
            int *const pos) {
        return ByteArrayUtils::readSint24AndAdvancePosition(buffer, pos);
    }
    static int getParentPosAndAdvancePosition(const uint8_t *const buffer, int *const pos);

    static int readChildrenPositionAndAdvancePosition(const uint8_t *const buffer, int *const pos);

+57 −0
Original line number Diff line number Diff line
@@ -42,6 +42,63 @@ const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_NOT_A_WORD = 0x02;
// Flag for blacklist
const PtReadingUtils::NodeFlags PtReadingUtils::FLAG_IS_BLACKLISTED = 0x01;

/* static */ int PtReadingUtils::getPtNodeArraySizeAndAdvancePosition(
        const uint8_t *const buffer, int *const pos) {
    const uint8_t firstByte = ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
    if (firstByte < 0x80) {
        return firstByte;
    } else {
        return ((firstByte & 0x7F) << 8) ^ ByteArrayUtils::readUint8AndAdvancePosition(
                buffer, pos);
    }
}

/* static */ PtReadingUtils::NodeFlags PtReadingUtils::getFlagsAndAdvancePosition(
        const uint8_t *const buffer, int *const pos) {
    return ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
}

/* static */ int PtReadingUtils::getCodePointAndAdvancePosition(const uint8_t *const buffer,
        int *const pos) {
    return ByteArrayUtils::readCodePointAndAdvancePosition(buffer, pos);
}

// Returns the number of read characters.
/* static */ int PtReadingUtils::getCharsAndAdvancePosition(const uint8_t *const buffer,
        const NodeFlags flags, const int maxLength, int *const outBuffer, int *const pos) {
    int length = 0;
    if (hasMultipleChars(flags)) {
        length = ByteArrayUtils::readStringAndAdvancePosition(buffer, maxLength, outBuffer,
                pos);
    } else {
        if (maxLength > 0) {
            outBuffer[0] = getCodePointAndAdvancePosition(buffer, pos);
            length = 1;
        }
    }
    return length;
}

// Returns the number of skipped characters.
/* static */ int PtReadingUtils::skipCharacters(const uint8_t *const buffer, const NodeFlags flags,
        const int maxLength, int *const pos) {
    if (hasMultipleChars(flags)) {
        return ByteArrayUtils::advancePositionToBehindString(buffer, maxLength, pos);
    } else {
        if (maxLength > 0) {
            getCodePointAndAdvancePosition(buffer, pos);
            return 1;
        } else {
            return 0;
        }
    }
}

/* static */ int PtReadingUtils::readProbabilityAndAdvancePosition(const uint8_t *const buffer,
        int *const pos) {
    return ByteArrayUtils::readUint8AndAdvancePosition(buffer, pos);
}

/* static */ int PtReadingUtils::readChildrenPositionAndAdvancePosition(
        const uint8_t *const buffer, const NodeFlags flags, int *const pos) {
    const int base = *pos;
Loading