Specifications of representations of structured values, such as those of the {@linkplain tv.amwa.maj.meta.TypeDefinitionRecord AAF record data types}. {@linkplain tv.amwa.maj.industry.PropertyValue Property values} of the record type consist of values for an ordered set of fields, where each field has a name and type.

Included in this package are:

- Interfaces to the unique identifiers used in AAF, {@linkplain tv.amwa.maj.record.AUID AUID} and {@linkplain tv.amwa.maj.record.PackageID PackageID}.
- Interfaces for date and time representations used to make up the Coordinated Universal Time {@linkplain tv.amwa.maj.record.TimeStamp time stamp}.
- Interfaces for {@linkplain tv.amwa.maj.record.TimecodeValue tape timecodes} and {@linkplain tv.amwa.maj.record.EdgeCodeValue film edge codes}.
- Interfaces for structured numerical {@linkplain tv.amwa.maj.record.Rational rational numbers}.

A generic means of mapping the public fields of any Java class to an AAF record type definition is provided by the {@link tv.amwa.maj.meta.TypeDefinitionRecord#createValueFromObject(Object) createValueFromObject()} and {@link tv.amwa.maj.meta.TypeDefinitionRecord#getObject(tv.amwa.maj.industry.PropertyValue) getObject()} methods of a {@linkplain tv.amwa.maj.meta.TypeDefinitionRecord record type definition}.

## Heritage

The interfaces defined in this package are derived from structures defined for the C-based AAF SDK in file "`AAFTypes.h`". The structure has been converted to a Java interface with every element of the C `struct` represented by a pair of `get` and `set` methods.

For example, the AAF rational data type is defined in the AAF SDK by the following structure:

        typedef struct _aafRational_t
        {
            aafInt32           numerator;
            aafInt32           denominator;
        } aafRational_t;

This has been translated to the Java interface called {@link tv.amwa.maj.record.Rational Rational} as follows:

        public interface Rational {
            @Int32 getNumerator();
            void setNumerator(@Int32 int numerator);
            @Int32 getDenominator();
            void setDenominator(@Int32 int denominator);
        }

@see tv.amwa.maj.meta.TypeDefinitionRecord