Enum#
Enum は候補が定義された独立した Value 型です。候補付き Integer ではありません。 ソケット自体が、ドメイン ID と全候補の固定 ID・整数コードを保持します。
fn quality() -> Enum<"Quality", "draft"=0, "preview"=7, "final"=20> {
return literal(Enum<"Quality", "draft"=0, "preview"=7, "final"=20>, "final");
}
Enum Input の Enum Definition 欄で候補を定義し、Value 欄で選択します。 Node と Code は同じ型と値を保存します。型定義の記述順やメニュー表示順は 値を変えません。表示ラベルや翻訳は接続先を決める根拠にしません。
| 接続・変換 | 規則 |
|---|---|
| 同じ Enum 定義 | 直接接続 |
| 別の Enum 定義 | 全候補の対応を指定した Enum Map |
| Enum → Integer | enum_code(value) で明示変換 |
| Enum → String | enum_id(value) で固定メンバー ID を取得 |
| Integer → Enum | enum_from_code(code, exemplar)。候補にないコードはエラー |
| String → Enum | enum_from_id(id, exemplar)。候補にない ID はエラー |
exemplar は戻り値の Enum 型を指定する値です。現在の選択は代替値ではありません。
Enum に加減算・大小比較はありません。equal と select は同じ定義を要求します。
AE の Dropdown を Alt+F で取り込むと、取得元と取得時の候補を固定した Enum に なります。別の Enum ソケット(例: Merge の Mode)へドロップすると Enum Map が 開きます。全行の対応を選んで作成してください。作成した Map は通常の CNL 関数 なので、中へ入って検査・編集でき、Code にも書き出されます。対応を省略して 位置順や似た名前で自動選択することはありません。
AE はメニュー項目ごとの安定 ID を公開しないため、項目の追加・削除・並べ替え後は 再取得し、対応を見直します。Layer Control は Enum とは別のレイヤー参照です。
1型あたり1..512候補、候補IDとドメインIDは各1KiBまでのUTF-8、コードは一意の0..2147483647です。 現在の実行経路はuniform Valueです。Enum要素のField/Gridストレージは未対応です。 AEのネイティブ制御へ公開する場合は、全候補コードが0..16777216に収まる必要があります。 上限を超える型もCNLとパネル内の選択では正確な項目IDを保ちます。 Enum Definition欄は文字編集の1MiB上限を超える定義をCNLで編集するよう案内します。