<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) INRIA -
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 * Copyright (C) 2018 - Samuel GOUGEON
 *
 * This file is hereby licensed under the terms of the GNU GPL v2.0,
 * pursuant to article 5.3.4 of the CeCILL v.2.1.
 * This file was originally licensed under the terms of the CeCILL v2.1,
 * and continues to be available under such terms.
 * For more information, see the COPYING file which you should have received
 * along with this program.
 *
 -->
<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"
        xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML"
        xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org"
        xml:lang="ru" xml:id="listvarinfile">
    <refnamediv>
        <refname>listvarinfile</refname>
        <refpurpose>список переменных в файле сохранённых данных</refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Синтаксис</title>
        <synopsis>
            listvarinfile(filename);
            [names, typs, dims, vols] = listvarinfile(filename)
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Аргументы</title>
        <variablelist>
            <varlistentry>
                <term>filename</term>
                <listitem>
                    <para>
                        символьная строка, имя файла (и путь), который следует
                        проинспектировать.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>nams</term>
                <listitem>
                    <para>
                        матрица строк, имена переменных, сохранённых в файле <varname>filename</varname>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>dims</term>
                <listitem>
                    <para>
                        список, размерности переменных, сохранённых в файле
                        <varname>filename</varname>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>typs</term>
                <listitem>
                    <para>
                        числовая матрица, типы переменных, сохранённых в файле
                        <varname>filename</varname>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>vols</term>
                <listitem>
                    <para>
                        числовая матрица, размер (в байтах) переменных, сохранённых в файле
                        <varname>filename</varname>.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Описание</title>
        <para>
            Эта служебная функция составляет список переменных (наподобие <link linkend="whos">whos</link>),
            сохранённых в файле данных Scilab'а, созданного с помощью <link linkend="save">save</link>.
        </para>
        <para>
            <note>
                рациональные числа и пространства состояний представляются в виде
                простых типизированных списков (tlist);
            </note>
        </para>
    </refsection>
    <refsection>
        <title>Примеры</title>
        <programlisting role="example"><![CDATA[
// Подготовка данных различных типов:
b = rand(2,3) < 0.5;                    // логические значения
i = uint64(grand(3,4,2,"uin",0,100));   // гиперматрица кодированных целых чисел
c = grand(3,3,"uin",-10,10); c=c+c'*%i; // комплексые числа
p = (1-%z).^(0:3);                      // полиномы
r = p/(1+%z);                           // рациональные значения
sp = sprand(10,15,0.1);                 // разрежённая матрица чисел
spb = sp<0.5;                           // разрежённая матрица логических значений
t = ["This" "software" ; "is" "Scilab"];// текстовые строки
g = [gdf() gda()];                      // графические дескрипторы
function Test()                         // сценарий
    disp("listvarinfile() test for macros")
end
M = linspace;                           // сценарий
L = list(%f, int8(-23),, %i-%z, list("abc",%e)); // простой список
C = {"abc" %t ; %z list(1/%z, 4)};      // cell-массив
S(4,2).r = %pi;                         // массив структур
vars = list("b","i","c","p","r","sp","spb","t","g","Test","M","L","C","S");

// Архивация данных в бинарном файле:
File = TMPDIR + "\listvarinfile.sod";
save(File, vars(:))

// Распечатка содержимого файла:
[names,types,dims,vols] = listvarinfile(File);
types(find(names=="Test"))
dims(find(names=="i"))
 ]]></programlisting>
    <screen><![CDATA[
--> [names,types,dims,vols] = listvarinfile(File);
Name                     Type           Size            Bytes
-------------------------------------------------------------
C                        cell           2 by 2          76
L                        list           4               51
M                        macro          1 by 1          0
S                        struct         4 by 2          8
Test                     macro          1 by 1          0
b                        boolean        2 by 3          24
c                        double         3 by 3          144
g                        handle         1 by 2          0
i                        integer        3 by 4 by 2     192
p                        polynomial     1 by 4          80
r                        tlist          4               162
sp                       sparse         10 by 15        232
spb                      boolean sparse 10 by 15        624
t                        string         2 by 2          40

--> types(find(names=="Test"))
 ans  =
   13.

--> dims(find(names=="i"))
 ans  =
   3.   4.   2.
]]></screen>
    </refsection>
    <refsection role="see also">
        <title>Смотрите также</title>
        <simplelist type="inline">
            <member>
                <link linkend="save">save</link>
            </member>
            <member>
                <link linkend="load">load</link>
            </member>
            <member>
                <link linkend="save_format">save_format</link>
            </member>
            <member>
                <link linkend="type">type</link>
            </member>
            <member>
                <link linkend="whos">whos</link>
            </member>
            <member>
                <link linkend="who">who</link>
            </member>
        </simplelist>
    </refsection>
    <refsection role="history">
        <title>История</title>
        <revhistory>
            <revision>
                <revnumber>6.0</revnumber>
                <revdescription>
                    <itemizedlist>
                        <listitem>
                            Теперь гиперматрицы перечисляются с типом их содержимого, вместо
                            "mlist" и типа 17. Их размеры теперь являются фактическими размерами вместо 3.
                        </listitem>
                        <listitem>
                            Cell-массивы и массивы структур теперь появлются в виде "cell" и "struct"
                            вместо "mlist". Теперь их размеры являются фактичскими размерами вместо 3.
                        </listitem>
                        <listitem>
                            Массивы графических дескрипторов теперь появляются в виде "handle" и типа 9
                            вместо "tlist" и типа 16.
                            Теперь их размеры являются фактичскими размерами вместо 3.
                        </listitem>
                        <listitem>
                            Сценарии теперь появляются в виде "macro" и типа 13 вместо "tlist" и типа 16.
                        </listitem>
                        <listitem>
                            Вещественные и комплексные числа теперь появляются в виде "double" вместо "constant".
                        </listitem>
                    </itemizedlist>
                </revdescription>
            </revision>
        </revhistory>
    </refsection>
</refentry>

