<?xml version="1.0" encoding="UTF-8"?>

<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="ja" xml:id="funptr">

    <refnamediv>

        <refname>funptr</refname>

        <refpurpose>プリミティブのコーディング ( 上級者向け )  </refpurpose>

    </refnamediv>

    <refsynopsisdiv>

        <title>呼出し手順</title>

        <synopsis>[numptr] = funptr(name)</synopsis>

    </refsynopsisdiv>

    <refsection>

        <title>引数</title>

        <variablelist>

            <varlistentry>

                <term>name</term>

                <listitem>

                    <para>文字列,プリミティブの名前</para>

                </listitem>

            </varlistentry>

            <varlistentry>

                <term>numptr</term>

                <listitem>

                    <para>プリミティブの内部ルーチン番号</para>

                </listitem>

            </varlistentry>

        </variablelist>

    </refsection>

    <refsection>

        <title>説明</title>

        <para>

            プリミティブ<literal>'name'</literal>の

            内部的なルーチン番号<literal>numptr</literal>を取得するためのユーティリティ関数(上級者専用).

            <literal>numptr</literal> は,インターフェイス番号 <literal>fun</literal>および

            そのインターフェイス内のプリミティブのルーチン番号 <literal>fin</literal>により

            <literal>numptr = 1000*fun + fin</literal> (fin &lt; 1000) のように計算されます.

            <literal>numptr</literal> により, インターフェイス番号 <literal>fun = floor(numptr/1000)</literal>

            を得ることができます.

            この番号は,参照渡しの引数を有する動的インターフェイスにリンクする際に有用です

            (以下の例を参照).

        </para>

    </refsection>

    <refsection>

        <title>例</title>

        <programlisting role="example"><![CDATA[
// Suppose you want to load some codes via the dynamic
// loading facilities offers by addinter. By default
// arguments are passed by values but if you want to
// pass them by reference you can do the following
// (name being the scilab name of one of the interfaced
// routines) :
//
// addinter(files,spnames,fcts)  // args passed by values
// num_interface = floor(funptr(name)/1000)
// intppty(num_interface)  // args now passed by reference
//
// Note that if you enter the following
//
// intppty()
//
// you will see all the interfaces working by reference
 ]]></programlisting>

    </refsection>

    <refsection role="see also">

        <title>参照</title>

        <simplelist type="inline">

            <member>

                <link linkend="clearfun">clearfun</link>

            </member>

            <member>

                <link linkend="newfun">newfun</link>

            </member>

            <member>

                <link linkend="intppty">intppty</link>

            </member>

            <member>

                <link linkend="addinter">addinter</link>

            </member>

        </simplelist>

    </refsection>

</refentry>

