aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node.h16
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state.h18
2 files changed, 20 insertions, 14 deletions
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index 59eff9abb..4f69a84c3 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -130,21 +130,9 @@ class DicNode {
NOT_A_PROBABILITY /* probability */, false /* isTerminal */,
true /* hasChildren */, false /* isBlacklistedOrNotAWord */, 0 /* depth */,
0 /* terminalDepth */);
- // TODO: Move to dicNodeState?
- mDicNodeState.mDicNodeStateOutput.init(); // reset for next word
- mDicNodeState.mDicNodeStateInput.init(
- &dicNode->mDicNodeState.mDicNodeStateInput, true /* resetTerminalDiffCost */);
- mDicNodeState.mDicNodeStateScoring.init(
- &dicNode->mDicNodeState.mDicNodeStateScoring);
- mDicNodeState.mDicNodeStatePrevWord.init(
- dicNode->mDicNodeState.mDicNodeStatePrevWord.getPrevWordCount() + 1,
+ mDicNodeState.initAsRootWithPreviousWord(&dicNode->mDicNodeState,
dicNode->mDicNodeProperties.getPtNodePos(),
- dicNode->mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
- dicNode->mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(),
- dicNode->getOutputWordBuf(),
- dicNode->mDicNodeProperties.getDepth(),
- dicNode->mDicNodeState.mDicNodeStatePrevWord.getSecondWordFirstInputIndex(),
- mDicNodeState.mDicNodeStateInput.getInputIndex(0) /* lastInputIndex */);
+ dicNode->mDicNodeProperties.getDepth());
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
}
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
index f79ac7b2c..e7121a9d7 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
@@ -58,6 +58,24 @@ class DicNodeState {
mDicNodeStateScoring.init();
}
+ // Init with previous word.
+ void initAsRootWithPreviousWord(const DicNodeState *prevWordDicNodeState,
+ const int prevWordPos, const int prevWordCodePointCount) {
+ mDicNodeStateOutput.init(); // reset for next word
+ mDicNodeStateInput.init(
+ &prevWordDicNodeState->mDicNodeStateInput, true /* resetTerminalDiffCost */);
+ mDicNodeStateScoring.init(&prevWordDicNodeState->mDicNodeStateScoring);
+ mDicNodeStatePrevWord.init(
+ prevWordDicNodeState->mDicNodeStatePrevWord.getPrevWordCount() + 1,
+ prevWordPos,
+ prevWordDicNodeState->mDicNodeStatePrevWord.mPrevWord,
+ prevWordDicNodeState->mDicNodeStatePrevWord.getPrevWordLength(),
+ prevWordDicNodeState->mDicNodeStateOutput.mCodePointsBuf,
+ prevWordCodePointCount,
+ prevWordDicNodeState->mDicNodeStatePrevWord.getSecondWordFirstInputIndex(),
+ prevWordDicNodeState->mDicNodeStateInput.getInputIndex(0) /* lastInputIndex */);
+ }
+
// Init by copy
AK_FORCE_INLINE void init(const DicNodeState *const src) {
mDicNodeStateInput.init(&src->mDicNodeStateInput);