Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: third_party/android_prediction/suggest/core/dicnode/internal/dic_node_properties.h

Issue 1247903003: Add spellcheck and word suggestion to the prediction service (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: format README and CHROMIUM.diff Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/android_prediction/suggest/core/dicnode/internal/dic_node_properties.h
diff --git a/third_party/android_prediction/suggest/core/dicnode/internal/dic_node_properties.h b/third_party/android_prediction/suggest/core/dicnode/internal/dic_node_properties.h
new file mode 100644
index 0000000000000000000000000000000000000000..132643176c1170c6577f7e67e6efb881efded432
--- /dev/null
+++ b/third_party/android_prediction/suggest/core/dicnode/internal/dic_node_properties.h
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LATINIME_DIC_NODE_PROPERTIES_H
+#define LATINIME_DIC_NODE_PROPERTIES_H
+
+#include <cstdint>
+
+#include "third_party/android_prediction/defines.h"
+
+namespace latinime {
+
+/**
+ * PtNode information related to the DicNode from the lexicon trie.
+ */
+class DicNodeProperties {
+ public:
+ AK_FORCE_INLINE DicNodeProperties()
+ : mPtNodePos(NOT_A_DICT_POS), mChildrenPtNodeArrayPos(NOT_A_DICT_POS),
+ mProbability(NOT_A_PROBABILITY), mDicNodeCodePoint(NOT_A_CODE_POINT),
+ mIsTerminal(false), mHasChildrenPtNodes(false),
+ mIsBlacklistedOrNotAWord(false), mDepth(0), mLeavingDepth(0) {}
+
+ ~DicNodeProperties() {}
+
+ // Should be called only once per DicNode is initialized.
+ void init(const int pos, const int childrenPos, const int nodeCodePoint, const int probability,
+ const bool isTerminal, const bool hasChildren, const bool isBlacklistedOrNotAWord,
+ const uint16_t depth, const uint16_t leavingDepth, const int *const prevWordsNodePos) {
+ mPtNodePos = pos;
+ mChildrenPtNodeArrayPos = childrenPos;
+ mDicNodeCodePoint = nodeCodePoint;
+ mProbability = probability;
+ mIsTerminal = isTerminal;
+ mHasChildrenPtNodes = hasChildren;
+ mIsBlacklistedOrNotAWord = isBlacklistedOrNotAWord;
+ mDepth = depth;
+ mLeavingDepth = leavingDepth;
+ memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
+ }
+
+ // Init for root with prevWordsPtNodePos which is used for n-gram
+ void init(const int rootPtNodeArrayPos, const int *const prevWordsNodePos) {
+ mPtNodePos = NOT_A_DICT_POS;
+ mChildrenPtNodeArrayPos = rootPtNodeArrayPos;
+ mDicNodeCodePoint = NOT_A_CODE_POINT;
+ mProbability = NOT_A_PROBABILITY;
+ mIsTerminal = false;
+ mHasChildrenPtNodes = true;
+ mIsBlacklistedOrNotAWord = false;
+ mDepth = 0;
+ mLeavingDepth = 0;
+ memmove(mPrevWordsTerminalPtNodePos, prevWordsNodePos, sizeof(mPrevWordsTerminalPtNodePos));
+ }
+
+ void initByCopy(const DicNodeProperties *const dicNodeProp) {
+ mPtNodePos = dicNodeProp->mPtNodePos;
+ mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
+ mDicNodeCodePoint = dicNodeProp->mDicNodeCodePoint;
+ mProbability = dicNodeProp->mProbability;
+ mIsTerminal = dicNodeProp->mIsTerminal;
+ mHasChildrenPtNodes = dicNodeProp->mHasChildrenPtNodes;
+ mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
+ mDepth = dicNodeProp->mDepth;
+ mLeavingDepth = dicNodeProp->mLeavingDepth;
+ memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+ sizeof(mPrevWordsTerminalPtNodePos));
+ }
+
+ // Init as passing child
+ void init(const DicNodeProperties *const dicNodeProp, const int codePoint) {
+ mPtNodePos = dicNodeProp->mPtNodePos;
+ mChildrenPtNodeArrayPos = dicNodeProp->mChildrenPtNodeArrayPos;
+ mDicNodeCodePoint = codePoint; // Overwrite the node char of a passing child
+ mProbability = dicNodeProp->mProbability;
+ mIsTerminal = dicNodeProp->mIsTerminal;
+ mHasChildrenPtNodes = dicNodeProp->mHasChildrenPtNodes;
+ mIsBlacklistedOrNotAWord = dicNodeProp->mIsBlacklistedOrNotAWord;
+ mDepth = dicNodeProp->mDepth + 1; // Increment the depth of a passing child
+ mLeavingDepth = dicNodeProp->mLeavingDepth;
+ memmove(mPrevWordsTerminalPtNodePos, dicNodeProp->mPrevWordsTerminalPtNodePos,
+ sizeof(mPrevWordsTerminalPtNodePos));
+ }
+
+ int getPtNodePos() const {
+ return mPtNodePos;
+ }
+
+ int getChildrenPtNodeArrayPos() const {
+ return mChildrenPtNodeArrayPos;
+ }
+
+ int getProbability() const {
+ return mProbability;
+ }
+
+ int getDicNodeCodePoint() const {
+ return mDicNodeCodePoint;
+ }
+
+ uint16_t getDepth() const {
+ return mDepth;
+ }
+
+ // TODO: Move to output?
+ uint16_t getLeavingDepth() const {
+ return mLeavingDepth;
+ }
+
+ bool isTerminal() const {
+ return mIsTerminal;
+ }
+
+ bool hasChildren() const {
+ return mHasChildrenPtNodes || mDepth != mLeavingDepth;
+ }
+
+ bool isBlacklistedOrNotAWord() const {
+ return mIsBlacklistedOrNotAWord;
+ }
+
+ const int *getPrevWordsTerminalPtNodePos() const {
+ return mPrevWordsTerminalPtNodePos;
+ }
+
+ private:
+ // Caution!!!
+ // Use a default copy constructor and an assign operator because shallow copies are ok
+ // for this class
+ int mPtNodePos;
+ int mChildrenPtNodeArrayPos;
+ int mProbability;
+ int mDicNodeCodePoint;
+ bool mIsTerminal;
+ bool mHasChildrenPtNodes;
+ bool mIsBlacklistedOrNotAWord;
+ uint16_t mDepth;
+ uint16_t mLeavingDepth;
+ int mPrevWordsTerminalPtNodePos[MAX_PREV_WORD_COUNT_FOR_N_GRAM];
+};
+} // namespace latinime
+#endif // LATINIME_DIC_NODE_PROPERTIES_H

Powered by Google App Engine
This is Rietveld 408576698