From 6066069f3518822a2723717cc418de1f62414beb Mon Sep 17 00:00:00 2001 From: Keisuke Kuroyanagi Date: Mon, 10 Mar 2014 18:38:29 +0900 Subject: [PATCH] Move initialization logic for from DicNode to DicNodeState. Change-Id: Ic7075349e2e9c7f4ca707efa12ad1d24b49a2c87 --- native/jni/src/suggest/core/dicnode/dic_node.h | 16 ++-------------- .../core/dicnode/internal/dic_node_state.h | 18 ++++++++++++++++++ 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);