type new_type_name [packed] [generic_level level] field type1 field_name1 field_name2 ... ... field type_n field_name_n ...
'packed' means that Pliant must not reorder the fields or insert holes between fields in order to improve alignment.For 'generic_level' meaning, read the end of the document describing Pliant generic functions. (if not defined, the generic level is 1)
type new_type_name later
The new type content will be defined later. It is used when several types have pointers to each other in their fields. You must provide the real definition before using the new type in any function or as a true field (not a pointer)
type Complex field Float real field Float imaginary
function build x arg_w new_type_name x
function destroy x arg_w new_type_name x
function copy src dest arg new_type_name src ; arg_w new_type_name dest
function compare a b -> c arg new_type_name a b ; arg Int c