<sect1>
<title
>Програмний інтерфейс (API) скриптів для модуля роботи з графами</title>

<para
>За допомогою діалогового вікна властивостей структури даних ви можете отримати доступ до параметрів налаштовування, які є специфічними для модуля роботи з графами. Скористайтеся пунктом <guilabel
>Тип графу</guilabel
> для вибору типу графу. Призначення типів графів є таким: </para>
<itemizedlist>
    <listitem
><para
><guilabel
>Граф</guilabel
>: граф, у якому передбачено будь-які два вузли може бути з’єднано лише одним ребром. </para
></listitem>
    <listitem
><para
><guilabel
>Мультиграф</guilabel
>: граф, у якому передбачено можливість визначення декількох ребер між двома вузлами. </para
></listitem>
</itemizedlist>

<sect2>
<title
>Структура даних графу</title>
<para
>Об’єкти графу містять дані щодо структури даних типу «Граф» («Graph»). </para>

<sect3>
<title
>Властивості</title>
<itemizedlist>

    <listitem>
        <para
><emphasis
>name</emphasis
>: </para>
        <para
>Унікальна назва цієї структури даних.</para>
    </listitem>

</itemizedlist>
</sect3>

<sect3>
<title
>Методи</title>
<variablelist>

    <varlistentry>
    <term
>nodes()</term>
    <listitem>
        <para
>Повертає список всіх вузлів графу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>nodes</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>nodes(тип)</term>
    <listitem>
        <para
>Повертає список всіх вузлів графу вказаного типу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>nodes</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges()</term>
    <listitem>
        <para
>Повертає список всіх ребер графу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges(тип)</term>
    <listitem>
        <para
>Повертає список всіх ребер графу вказаного типу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createNode(тип)</term>
    <listitem>
        <para
>Створює новий вузол вказаного типу і повертає створений вузол. Якщо тип вузла не зареєстровано, вузол не створюється.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphNode <function
>createNode</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createNode()</term>
    <listitem>
        <para
>Створює новий вузол стандартного типу і повертає створений вузол.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphNode <function
>createNode</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createEdge(from, to, тип)</term>
    <listitem>
        <para
>Створює ребро від вузла «from» до вузла «to» вказаного типу і повертає створене ребро. Якщо тип ребра не зареєстровано, ребро не створюється.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphEdge <function
>createEdge</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>from</replaceable
></parameter
></paramdef
> <paramdef
>GraphNode <parameter
><replaceable
>to</replaceable
></parameter
></paramdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createEdge(from, to)</term>
    <listitem>
        <para
>Створює ребро від вузла «from» до вузла «to» стандартного типу і повертає створене ребро.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphEdge <function
>createEdge</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>from</replaceable
></parameter
></paramdef
> <paramdef
>GraphNode <parameter
><replaceable
>to</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>distances(from)</term>
    <listitem>
        <para
>Повертає масив найкоротших довжин шляхів від цього вузла до будь-якого іншого вузла графу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>Array <function
>distances</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>from</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

</variablelist>
</sect3>
</sect2>

<sect2>
<title
>Вузол графу</title>
<para
>Вузол є елементом даних графу. </para>

<sect3>
<title
>Властивості</title>
<itemizedlist>

    <listitem>
        <para
><emphasis
>width</emphasis
>: </para>
        <para
>Розмір цього елемента даних.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>x</emphasis
>: </para>
        <para
>Координата за X цього елемента даних.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>y</emphasis
>: </para>
        <para
>Координата за Y цього елемента даних.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>id</emphasis
>: </para>
        <para
>Унікальний ідентифікатор цього елемента даних.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>color</emphasis
>: </para>
        <para
>Колір цього елемента даних у форматі шістнадцяткового числа.</para>
    </listitem>
</itemizedlist>
</sect3>

<sect3>
<title
>Методи</title>
<variablelist>

    <varlistentry>
    <term
>neighbors()</term>
    <listitem>
        <para
>Повертає список всіх вузлів, з’єднаних з вказаним вузлом. Цей метод враховує спрямованість у графі.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>neighbors</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges()</term>
    <listitem>
        <para
>Повертає список всіх ребер (вхідних і вихідних) вказаного вузла.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges(тип)</term>
    <listitem>
        <para
>Повертає список всіх ребер (вхідних і вихідних) вказаного вузла і вказаного типу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>inEdges()</term>
    <listitem>
        <para
>Повертає список всіх вхідних ребер цього вузла.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>inEdges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>inEdges(тип)</term>
    <listitem>
        <para
>Повертає список всіх вхідних ребер вказаного вузла і вказаного типу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>inEdges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>outEdges()</term>
    <listitem>
        <para
>Повертає список всіх вихідних ребер цього вузла.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>outEdges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>outEdges(тип)</term>
    <listitem>
        <para
>Повертає список всіх вихідних ребер цього вузла вказаного типу.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>outEdges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>тип</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edgesTo(призначення)</term>
    <listitem>
        <para
>Повертає список всіх ребер вказаного вузла до іншого вказаного вузла.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edgesTo</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>призначення</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>
</variablelist>
</sect3>
</sect2>


<sect2>
<title
>Ребро графу</title>
<para
>Ребро є з’єднанням між двома графічними вузлами. Ребра можуть бути спрямованими або неспрямованими, залежно від типу. </para>

<sect3>
<title
>Властивості</title>
<itemizedlist>
    <listitem>
        <para
><emphasis
>width</emphasis
>: </para>
        <para
>Товщина з’єднання.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>directed</emphasis
>: </para>
        <para
>Якщо має значення true, з’єднання є спрямованим. Якщо має значення false — не спрямованим.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>from</emphasis
>: </para>
        <para
>Початок з’єднання.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>to</emphasis
>: </para>
        <para
>Кінець з’єднання.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>color</emphasis
>: </para>
        <para
>Ідентифікатор типу з’єднання.</para>
    </listitem>
</itemizedlist>
</sect3>


<sect3>
<title
>Методи</title>
<variablelist>

    <varlistentry>
    <term
>remove()</term>
    <listitem>
        <para
>Вилучити це з’єднання.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>remove</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>add_property(назва, значення)</term>
    <listitem>
        <para
>Додати до з’єднання нову властивість.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>add_property</function
></funcdef
> <paramdef
>string <parameter
><replaceable
>назва</replaceable
></parameter
></paramdef
> <paramdef
>string <parameter
><replaceable
>значення</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>remove_property(назва)</term>
    <listitem>
        <para
>Вилучити зі з’єднання наявну властивість.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>remove_property</function
></funcdef
> <paramdef
>string <parameter
><replaceable
>назва</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

</variablelist>
</sect3>
</sect2>

</sect1>
