tlist Scilab object and typed list definition.

## Syntax

    tlist(typ, a1, ..., an)

## Arguments

typ

  a character string or vector of character strings.

ai

  any Scilab object (`matrix`, `list`, `string`, ...).

## Description

`tlist(typ, a1, ..., an)` creates a `typed-list` with elements `ai`'s. The `typ` argument specifies the list type. Such `typed-list` allows the user to define new operations working on these object through Scilab functions. The only difference between `typed-list` and `list` is the value of the type (16 instead of 15).

`typ(1)` specifies the list type (character string used to define soft coded operations).

If specified `typ(i)` may give the `(i+1)`-th element formal name.

Standard Operations on `list` work similarly for `typed-list`:

extraction:

`[x, y, z, ...]=l(v)` where `v` is a vector of indices; `[x, y, z]=l(:)` extracts all the elements.

insertion:

`l(i)=a`

deletion:

`l(i)=null()` removes the `i`-th element of the `tlist` `l`.

Note that the semantics of `l.x=null()` is undefined, but a definition can be given through the overloading mechanism.

display.

Moreover if `typ(2:n+1)` are specified, user may point elements by their names.

We give below examples where `tlist` are used.

Linear systems are represented by specific `typed-list` e.g. a linear system `[A,B,C,D]` is represented by the `tlist` `Sys=tlist(['lss';'A';'B';'C';'D';'X0';'dt'],A,B,C,D,x0,'c')` and this specific list may be created by the function `syslin`.

`Sys(2)`, `Sys('A')` or `Sys.A` is the state-matrix and `Sys('dt')` or `Sys.dt` is the time domain.

A rational matrix `H` is represented by the `typed-list` `H=rlist(Num,Den,[])` where `Num` and `Den` are two polynomial matrices and a continuous time linear system with transfer matrix `H` may be created by `syslin('c',H)`.

`H(2)`, `H('num')` or `H.num` is the transfer matrix numerator.

## Examples

    // tlist creation
    t = tlist(["listtype","field1","field2"], [], []);
    t.field1(1) = 10;
    t.field1(2) = 20;
    t.field2(1) = "Scilab";
    t.field2(2) = "tlist";
    t.field2(3) = "example";

    // Fields contents display
    disp(t.field1)
    disp(t.field2)

    // Generic tlist display
    disp(t)

    // Overloading display for this type of tlist
    function %listtype_p(mytlist)
      f = fieldnames(mytlist);

      // typeof(mytlist) <=> f(1)
      mprintf("Displaying a tlist of type: %s\n", typeof(mytlist));

      mprintf("\n");

      mprintf("-- Field ''%s'' --\n", f(1));
      mprintf("Contents: %s\n", sci2exp(mytlist(f(1))));

      mprintf("\n");

      mprintf("-- Field ''%s'' --\n", f(2));
      mprintf("Contents: %s\n", sci2exp(mytlist(f(2))));
    endfunction

    // Display using overloading function
    disp(t)

## See also

- percent
- syslin
- list
- mlist