Fmt definition names are prefixed by "fmt:
". Each
Definition must be a "typedef" type. Arrays may also be define
with zero elements to define a place-holder. They are compiled
into internal symbol tables, when binary data is opened.
All typedef structures have an associated name. Derived types may be simple or compound. Simple types contain a single field. Compound types are either structures (sequence of fields) or unions (coincident fields). Compound structures may also contain gaps, which reserve storage that is not accessible by field name. Each field, within a structure, must have a unique name (subtype). Recursive structures are not allowed.
The modifier "align" may be specified. The position is a multiple of the specified integer, relative to offset zero within the parent structure. If "align" is not specified, alignment is inherited from the subtype.
When a file is opened, DDS determines the format and and then begins to compile the format at the top level base fmt specification for that format:
fmt:format= typedef FORMAT_LINE PREAMBLE; /* define line header */ typedef FORMAT_TRACE SEQUENCE; /* define trace sequence */This will define any Line Header structures and along with the Trace Sequence (Trace Headers including Samples). The compilation process continues on by searching for the various derived fmt definitions until the entire structure can be digested (defined) in terms of all the prime data types. So the next step would search further for in the Dictionaries for the following fmt Definitions such as:
fmt:FORMAT_TRACE= typedef structure { FORMAT_SHORT TVPair[200][2]; FORMAT_INT dummy_gap[0]; /* zero-lenth vector */ . . . FORMAT_INT Fold; SAMPLE_TYPE Samples[axis_size(1)]; /* trace samples */ } FORMAT_TRACE; fmt:FORMAT_SHORT= integer2 fmt:FORMAT_INT= integer fmt:SAMPLE_TYPE= float
The number of samples used in the above structure is specified using one of the DDS built-in funcitons, "axis_size()".