The TypeKind
s of “Set”, “String”, “VariableArray” and “FixedArray” all represent “collections” of items.
The recommendation is to ignore TypeQualifiers
when reading / processing “collections” Types entries. This is because:
- the value of
TypeQualifiers
is fixed for each of theseTypeKind
s so communicates no additional information - the definitions of the possible “qualifiers” values are problematic and in some cases ambiguous
- the properties described by the “qualifiers” are often implementation dependent (so, for example, may be different between MXF implementations and AAF implementations) – therefore, the
TypeQualifiers
may be misleading
“Set”
An instance of a Type with a TypeKind
of “Set” is a collection of items where each item is identified by the item itself (or at least a part of it) – this means that each item must be unique within the collection and the order of items is not significant.
TypeSize
can be:
- Zero: this means that the collection can contain any number of items
- Greater than zero: this means that the collection must contain exactly the specified number of items
BaseType
must give the UL of a Type which has fixed size (that is, all instances of the referenced Type must be of the same size).
Some implementation notes:
- In MXF a “Set” is implemented using the compound data type called a “batch”.
- In Reg-XML it is not possible to restrict the number of items in a “Set”.
- AAF and MXF place further restrictions on the
BaseType
. Reg-XML does not have these restrictions.
“String”
An instance of a Type with a TypeKind
of “String” is an ordered collection of characters or integers.
TypeSize
can be:
- Zero: this means that the collection can contain any number of items
- Greater than zero: this means that the collection must contain exactly the specified number of items
BaseType
must give the UL of a Type which has a TypeKind
of either “Character” or “Integer”.
Some implementation notes:
- In MXF a “String” may, or may not, be zero-terminated.
“VariableArray”
An instance of a Type with a TypeKind
of “VariableArray” is an ordered collection of items.
TypeSize
must be zero: this means that the collection can contain any number of items.
BaseType
must give the UL of a Type which has fixed size (that is, all instances of the referenced Type must be of the same size).
Some implementation notes:
- In MXF a “VariableArray” is implemented using the compound data type called an “array”.
“FixedArray”
An instance of a Type with a TypeKind
of “FixedArray” is an ordered collection of items.
TypeSize
must be greater than zero: this means that the collection must contain exactly the specified number of items.
BaseType
must give the UL of a Type which has fixed size (that is, all instances of the referenced Type must be of the same size).
Some implementation notes:
- In MXF a “FixedArray” is implemented in the same way as a Type with a
TypeKind
of “Record”.