💨

USD list edit op のメモ

2023/11/26に公開

https://openusd.org/release/glossary.html#list-editing

op(指示子)

  • ResetToExplicit(デフォルト. qualifier なし)
  • add(要素を最後に評価)
  • delete(要素の削除を指示. 投機的に処理が行われるので, delete 要素が事前に無くともよい(e.g. composition で遅延評価で add された要素を delete したいなどに使う?)
  • prepend(要素を最初に評価)
  • order(使われない? pxrUSD の実装にはある)

それぞれ排他である. つまりリストが add であれば, delete の要素を持つことはできない
(pxrUSD C++ API 上はできるようであるが...)

つまり

def "bora" (
  add references = [</a>]
  prepend references = [</b>]
  ) {}

のような定義をしても add, prepend を混在させることはできない(USD としては, metadatum が複数定義された場合, 最後の要素が active になる)

また, list edit は上の state 以外の状態は持たない(空配列 or None は explicit になる).
explicit = authored 状態(定義がされている)といえるか?
つまり authored or not authored はより上位で扱うことになる.

empty

references = []

pxrUSD では references = None と print される. empty list の場合は explicit 状態となる.

add references = []

などは NG

Discussion