CheckSamePointの戻値の仕様を変更する

「端点共有束全体を移動する@20210105」オプションをフィックスしてから進むことにしよう.7箇所ある.仮修正が19箇所.

源氏物語全系譜6.1.ZELの全体図を#3 桐壷の更衣でソートしてPAIRBOX::RepairCommonEndPointの出口でCheckSamePointエラーが出る.「端点共有で始点不一致」が起きている.障害はPAIRBOX:#234599:#199072 明石の尼君(1)→#188661(0)とPAIRBOX:#234457:#198879 先帝の后宮(1)→#188559(0)で起きている.両者の区間は前者が(-207, -117),後者が(4066, 3989)のようにかけ離れているので,最初の判定が間違っていたか,ないし関係するノードのいずれかが大きく移動しているものと思われる.

このエラーはTOPOLOGY::CheckPairEndPoint→ PAIRBOX:RepairCommonEndPointで起きている.RepairCommonEndPointの目的は「対象ノード対の端点共有状態を検査し再構成する」なので,それに失敗していると考えるしかない.RepairPairBoxで修復を試みているが,変化していない模様だ.

CheckSamePointの従来の仕様では,エラーがあるかないかを示すだけのブール値を返していたが,仕様を変更して障害の詳細な要因を返すようにした.これらのビット定数はコード内から日本語でアクセスすることができる.障害をダンプするときにも,数値だけでなく名前まで表示できるようにした.

  1. 無効なノード対 disable状態のノード対
  2. 長さゼロのノード対 長さゼロのノード対は無視する
  3. ノーマルなノード対 ノーマルなノード対(端点共有束を含む)
  4. 実仮ノード不在 ノードないし仮ノードが取得できない → 不良
  5. ノード対不一致  仮ノードの参照するノード対と現物が一致しない → 不良
  6. カードリンク不一致 仮ノードと実ノードで参照する人名リンクが一致しない → 不良
  7. NOCOMMON属性不整合 実ノードとノード対でNOCOMMON属性が整合しない → 不良
  8. 直列リスト上にない非共有対 非端点共有ノード対でBundledTopが間違った値を返している → 不良
  9. 非共有対でsamepoint 直列リスト上の非端点共有ノード対がsamepointの値を持っている → 不良
  10. 最大区間ノード対の逆転 端点共有リストの先頭ノード対が最大区間ノード対でない → 順位入れ替え
  11. 危険対を端点共有 始点終点が同一座標で逆転するノード対を端点共有 → 端点共有解除
  12. NOCOMMONGOODSON NOCOMMONGOODSONで端点共有代表でない → 端点共有解除
  13. NOCOMMONで非共有代表 実ノードがgoodsonであるノード対は最大区間でなくては共有不可 → 端点共有解除
  14. samepoint不良 端点共有ノード対のsamepointが代表ノード対と一致しないかゼロ → 端点共有解除
  15. 共有端点不一致 端点共有ノード対で座標不一致 → 端点共有解除
  16. 左端点共有で種別不一致 左端点共有でsamepointが一致しない → 端点共有解除
  17. 右端点共有で種別不一致 右端点共有でsamepointが一致しない → 端点共有解除
  18. 端点共有で始点不一致 始点共有で始点が一致していない → 端点共有解除
  19. 端点共有で終点不一致 終点共有で終点が一致していない → 端点共有解除
  20. 端点一致でsamepointゼロ 端点共有可能なノード対のsamepointがゼロ → 端点共有
  21. 端点共有でsamepointゼロ 端点共有束上のノード対でsamepointがゼロ → 端点共有
  22. 直列リストノード対の衝突 直列リスト(同一チャンネル)上のノード対区間で交叉している → チャンネル移動(連結)
  23. 端点共有解除 シンメトリ婚/危険対の端点共有を解除する → チャンネル移動(単体)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA