Logo Search packages:      
Sourcecode: yaskkserv version File versions  Download package

bool SkkJisyo::seek ( SeekPosition  position  )  [inline]

指定位置にシークします。バッファ外をアクセスしようとした場合に偽を返します。

偽を返す条件は以下の通り

  • インデックスが -1 。つまりバッファ終端に差し掛かった。
  • バッファ先端から(インデックスが 0 で)更に前の行へシークしようとした。
なお、先端に差し掛かっただけではインデックスが 0 になるだけで、偽を 返さないことに注意が必要です。 (インデックス 0 の状態で更にシークし て初めて偽を返す)

Definition at line 2898 of file skk_jisyo.hpp.

Referenced by create_dictionary_index_and_dictionary_for_class_skk_jisyo_normal(), and open().

        {
                if (open_failure_flag_)
                {
                        return false;
                }

                bool result = true;

                switch (position)
                {
                case SEEK_POSITION_TOP:
                        index_table_[state_] = 0;
                        break;

                case SEEK_POSITION_BOTTOM:
                        index_table_[state_] = size_table_[state_] - 1;
                        break;

                case SEEK_POSITION_NEXT:
                        index_table_[state_] = SkkUtility::getNextLineIndex(buffer_table_[state_],
                                                                            index_table_[state_],
                                                                            size_table_[state_]);
                        break;

                case SEEK_POSITION_PREVIOUS:
                        if (index_table_[state_] == 0)
                        {
                                result = false;
                        }
                        else
                        {
                                index_table_[state_] = SkkUtility::getPreviousLineIndex(buffer_table_[state_],
                                                                                        index_table_[state_],
                                                                                        size_table_[state_]);
                        }
                        break;

                case SEEK_POSITION_BEGINNING_OF_LINE:
                        index_table_[state_] = SkkUtility::getBeginningOfLineIndex(buffer_table_[state_],
                                                                                   index_table_[state_],
                                                                                   size_table_[state_]);
                        break;

                default:
                        DEBUG_ASSERT(0);
                        break;
                }

                if (index_table_[state_] < 0)
                {
                        result = false;
                }

                return result;
        }


Generated by  Doxygen 1.6.0   Back to index