<?xml version="1.0" encoding="UTF-8"?>
<!--
 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
 * Copyright (C) 2008 - INRIA
 * ...
 *
 * Copyright (C) 2012 - 2016 - Scilab Enterprises
 *
 * 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:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="mget" xml:lang="ru">
    <refnamediv>
        <refname>mget</refname>
        <refpurpose>
            считывает байт или слово в заданном двоичном формате и преобразует в
            число удвоенной точности
        </refpurpose>
    </refnamediv>
    <refnamediv xml:id="mgeti">
        <refname>mgeti</refname>
        <refpurpose>
            считывает байт или слово в заданном двоичном формате и возвращает
            целочисленное значение типа int
        </refpurpose>
    </refnamediv>
    <refsynopsisdiv>
        <title>Синтаксис</title>
        <synopsis>
            x = mget([n, type, fd])
            x = mgeti([n, type, fd])
        </synopsis>
    </refsynopsisdiv>
    <refsection>
        <title>Аргументы</title>
        <variablelist>
            <varlistentry>
                <term>n</term>
                <listitem>
                    <para>положительный скаляр: количество считываемых данных.</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>fd</term>
                <listitem>
                    <para>
                        скаляр: параметр <varname>fd</varname>, возращённый функцией <function>mopen</function>. Для последнего открытого файла ставится -1. Значение по умолчанию -1.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>type</term>
                <listitem>
                    <para>
                        строка: двоичный формат, используемый для записи всех элементов
                        <varname>x</varname>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>x</term>
                <listitem>
                    <para>
                        вектор целых чисел или чисел с плавающей запятой.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
    </refsection>
    <refsection>
        <title>Описание</title>
        <para>
            Функция <function>mget</function> считывает данные со входа, определённого параметром потока <varname>fd</varname> и возвращает вектор данных с плавающей запятой.
        </para>

        <para>
            Функция <function>mgeti</function> считывает данные со входа, определённого параметром потока <varname>fd</varname> и возвращает вектор целочисленных данных.
        </para>
        <para>
            Данные считываются в положении, на которое в данный момент указывает указатель файла и передвигает индикатор далее соответствующим образом.
        </para>
        <para>
            Параметр <varname>type</varname> является указателем преобразования, который может быть установлен в любой из следующих символов-флагов (со значением по умолчанию <literal>"l"</literal>):
        </para>
        <para>
            <note>
                В Windows, поведение по умолчанию состоит в пропуске байта 13 (<literal>0x0D</literal>).
                Функцию	<function>mopen</function> следует вызывать с опцией
                <literal>'b'</literal>, например, <code>fd1 = mopen(file1,'rb')</code>, так что все байты без исключения будут прочитаны.
            </note>
        </para>
        <para>Тип данных:</para>
        <variablelist>
            <varlistentry>
                <term>d</term>
                <listitem>
                    <para>удвоенная точность, double</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>f</term>
                <listitem>
                    <para>плавающая запятая, float</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>l</term>
                <listitem>
                    <para>длинное, long long</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>i</term>
                <listitem>
                    <para>целочисленное, int (long int)</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>s</term>
                <listitem>
                    <para>короткое, short</para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>c</term>
                <listitem>
                    <para>символ, character</para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>Необязательный флаг:</para>
        <variablelist>
            <varlistentry>
                <term>u..</term>
                <listitem>
                    <para>
                        беззнаковый (в сочетании с одним из вышеперечисленных типов)
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>..l</term>
                <listitem>
                    <para>
                        прямой порядок байтов (в сочетании с одним из вышеперечисленных
                        типов)
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term>..b</term>
                <listitem>
                    <para>
                        обратный порядок байтов (в сочетании с одним из вышеперечисленных
                        типов)
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>
            Чтение байтов автоматически переключается при необходимости (с помощью проверки статуса <literal>little=endian</literal>).
        </para>
        <para>
            Такое поведение переключения можно подавить, если добавить флаг в функцию <function>mopen</function>.
        </para>
        <para>
            Форматы <literal>"l"</literal>, <literal>"d"</literal> и
            <literal>"f"</literal> корректны только с функцией
            <function>mget</function>.
        </para>
    </refsection>
    <refsection>
        <title>Примеры</title>
        <programlisting role="example"><![CDATA[
file1 = fullfile(TMPDIR,'test1.bin');
file2 = fullfile(TMPDIR,'test2.bin');
fd1=mopen(file1,'wb');
fd2=mopen(file2,'wb');
mput(1996,'ull',fd1);
mput(1996,'ull',fd2);
mclose(fd1);
mclose(fd2);

fd1=mopen(file1,'rb');
if 1996<>mget(1,'ull',fd1)
  write(%io(2),'Bug');
end

fd2=mopen(file2,'rb');
if 1996<>mget(1,'ull',fd2)
  write(%io(2),'Bug');
end

mclose(fd1);
mclose(fd2);
 ]]></programlisting>
    </refsection>
    <refsection role="see also">
        <title>Смотрите также</title>
        <simplelist type="inline">
            <member>
                <link linkend="mclose">mclose</link>
            </member>
            <member>
                <link linkend="meof">meof</link>
            </member>
            <member>
                <link linkend="mfprintf">mfprintf</link>
            </member>
            <member>
                <link linkend="fprintfMat">fprintfMat</link>
            </member>
            <member>
                <link linkend="mfscanf">mfscanf</link>
            </member>
            <member>
                <link linkend="fscanfMat">fscanfMat</link>
            </member>
            <member>
                <link linkend="mgetl">mgetl</link>
            </member>
            <member>
                <link linkend="mgetstr">mgetstr</link>
            </member>
            <member>
                <link linkend="mopen">mopen</link>
            </member>
            <member>
                <link linkend="mprintf">mprintf</link>
            </member>
            <member>
                <link linkend="mput">mput</link>
            </member>
            <member>
                <link linkend="mputl">mputl</link>
            </member>
            <member>
                <link linkend="mputstr">mputstr</link>
            </member>
            <member>
                <link linkend="mseek">mseek</link>
            </member>
            <member>
                <link linkend="mtell">mtell</link>
            </member>
            <member>
                <link linkend="mdelete">mdelete</link>
            </member>
        </simplelist>
    </refsection>
</refentry>

