SModel言語の機能強化
場合によっては、生のポインタ(SNodeReferenceやSModelReferenceなど)を処理しなければならないことがあります。 このような生のポインタを作成や操作は困難であり、処理には苦労するかもしれません。 ポインタを簡単に処理できるよう、SModel言語に新しい型と操作を導入しました。
ノードポインタ
新しい "node-ptr<>" 型を導入することで、ノードポインタを簡単に処理できるようにしました。 これらのポインタは "resolve" 操作で実際のノードに解決できます。 "node-ptr/ ... /" 式は既に使用すべきではないとされている古い "nodePointer/ ... /" 構文を置き換えるものです。 移行スクリプトは、式の変換を処理するために作成されています。
ポインタによる参照の設定
ターゲットを参照リンクに設定する際、ターゲットノードにアクセスする必要はありません。 そのターゲットへのポインタで十分です。 参照リンクのアクセス式に適用可能な "set ptr" 操作を使用すると、参照ターゲットを指定のポインタに設定できます。 ノードがノードポインタで指定されたものであることを確認するには、新しい "is" 操作をしてください。
SModel型の厳格な型付け規則
SModel型の型付け規則が厳格化されました。 SNodeReferenceインターフェースメソッドはもう、“node-ptr" 値では使用できません。 SNodeReferenceを明示的に取得するには、ダウンキャスト演算子を使用する必要があります。 また、ノードインスタンスでの "pointer" 操作で、通常のSNodeReferenceではなく "node-ptr" を返すようになりました。
新しい移行スクリプト
node/.../` 式、望ましくない引用、ダウンキャストなどの古いSModel言語構文の移行に役立つ移行スクリプトをいくつか導入しました。 これらを実行するには、Tools -> Scripts -> Enhancements... と移動し、"SModel Language Enhancements (node-ptr<> and model-ptr)" を選択します。 また、同じウィンドウ内では、ジェネレータマクロで古い構造を処理する「Use node pointers in reference macro queries」オプションを使用できます。
SModelクエリのスコープ選択を改善
SModelクエリが、操作対象スコープに対して直感的に動作するようになりました。 スコープが特定のクエリに対するパラメータとして宣言されている場合、以前のように編集可能なモデルだけではなく、読み取り専用モデルを含むスコープ全体でクエリが実行されます。
エディタ
サブツリーにReflective Editorを表示
サブツリー全体にReflective Editorを表示できるようになりました。 そのためには、ノードを選択して Cmd/Ctrl+Shift+[ を押すか、コンテキストメニューから「Show reflective editor for subtree」を選択してください。 通常のエディタに戻るには、Cmd/Ctrl+]、Cmd/Ctrl+Shift+] を押すか、「Show regular editor for the Subtree」オプションを右クリックしてください。 Cmd/Ctrl+[ を押すか、コンテキストメニューを開くことで、引き続き現在のノードのみにReflective Editorを表示することもできます。