vivi-5.0-win (5.0.028 Dev) | 2011-06-07 13:06 |
TextDocument をブロック単位で参照する イテレータクラス
┌────────────────────┐ │ DocBlock │ ├────────────────────┤ │ │ ├────────────────────┤ │isValid() const : bool │ // 有効なブロック? │size() const : size_t │ // ブロックに含まれるデータサイズ │position() const : index_t │ // ブロック先頭文字位置 │index() const : index_t │ // ブロック番号(0..*) │text() const : QString │ // ブロックテキスト取得 │next() const : DocBlock │ // 次のブロック │prev() const : DocBlock │ // 前のブロック │operator==(const DocBlock&) const : bool│ │operator<(const DocBlock&) const : bool │ └────────────────────┘
TextBlock の取得は、TextDocument::firstBlock(), TextDocument::lastBlock(), TextDocument::findBlockByNumber(index_t) などにより行う。
firstBlock(), lastBlock() は処理時間が O(1) だが、findBlockByNumber(index_t) は最悪の場合 O(L) になるのでなるべく使用しないようにする。
上記の様に、ループのたびに findBlockByNumber(ix) を呼び出すのはパフォーマンス的に好ましくない。