<sect1>
<title
>La API per a la creació d'scripts pel dorsal de grafs</title>

<para
>El diàleg de propietats de l'estructura de dades permet accedir als ajustaments de configuració específics per al dorsal del graf. Allà, amb <guilabel
>Tipus de graf</guilabel
> podreu seleccionar el tipus del graf. El significat d'aquests tipus és el següent: </para>
<itemizedlist>
    <listitem
><para
><guilabel
>Graf</guilabel
>: Graf en el que és possible que no existeixin varies vegades les mateixes arestes (pel que fa als punts d'inici i final). </para
></listitem>
    <listitem
><para
><guilabel
>Multigraf</guilabel
>: Graf en el que és possible que existeixin varies vegades les mateixes arestes (pel que fa als punts d'inici i final). </para
></listitem>
</itemizedlist>

<sect2>
<title
>Estructura de dades del graf</title>
<para
>Un objecte de graf encapsula la informació d'una estructura de dades de tipus <quote
>Graf</quote
>. </para>

<sect3>
<title
>Propietats</title>
<itemizedlist>

    <listitem>
        <para
><emphasis
>nom</emphasis
> : </para>
        <para
>El nom únic d'aquesta estructura de dades.</para>
    </listitem>

</itemizedlist>
</sect3>

<sect3>
<title
>Mètodes</title>
<variablelist>

    <varlistentry>
    <term
>nodes()</term>
    <listitem>
        <para
>Retorna una llista de tots els nodes del graf.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>nodes</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>nodes(tipus)</term>
    <listitem>
        <para
>Retorna una llista de tots els nodes del graf del tipus especificat.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>nodes</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges()</term>
    <listitem>
        <para
>Retorna una llista de totes les arestes del graf.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges(tipus)</term>
    <listitem>
        <para
>Retorna una llista de totes les arestes del graf del tipus especificat.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createNode(tipus)</term>
    <listitem>
        <para
>Crea un nou node del tipus especificat i retorna el node creat. Si el tipus no està registrat, no es crea cap node.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphNode <function
>createNode</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createNode()</term>
    <listitem>
        <para
>Crea un nou node del tipus predeterminat i retorna el node creat.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphNode <function
>createNode</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createEdge(des_de, a, tipus)</term>
    <listitem>
        <para
>Crea una aresta del tipus especificat que va del node «de» al node «a», i retorna l'aresta creada. Si el tipus no està registrat, no es crea cap aresta.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphEdge <function
>createEdge</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>des_de</replaceable
></parameter
></paramdef
> <paramdef
>GraphNode <parameter
><replaceable
>a</replaceable
></parameter
></paramdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>createEdge(des_de, a)</term>
    <listitem>
        <para
>Crea una aresta del tipus per defecte que va del node «de» al node «a», i retorna l'aresta creada.</para>
    <funcsynopsis
><funcprototype
><funcdef
>GraphEdge <function
>createEdge</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>des_de</replaceable
></parameter
></paramdef
> <paramdef
>GraphNode <parameter
><replaceable
>a</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>distances(des_de)</term>
    <listitem>
        <para
>Retorna una matriu amb les longituds dels camins més curts des d'aquest node a la resta de nodes del graf.</para>
    <funcsynopsis
><funcprototype
><funcdef
>Array <function
>distances</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>des_de</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

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

<sect2>
<title
>Node del graf</title>
<para
>Un node és l'element de dades d'un graf. </para>

<sect3>
<title
>Propietats</title>
<itemizedlist>

    <listitem>
        <para
><emphasis
>amplada</emphasis
> : </para>
        <para
>La mida d'aquest element de dades.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>x</emphasis
> : </para>
        <para
>La coordenada x d'aquest element de dades.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>y</emphasis
> : </para>
        <para
>La coordenada y d'aquest element de dades.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>id</emphasis
> : </para>
        <para
>L'identificador únic d'aquest element de dades.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>color</emphasis
> : </para>
        <para
>El color d'aquest element de dades, expressat com a valor hexadecimal.</para>
    </listitem>
</itemizedlist>
</sect3>

<sect3>
<title
>Mètodes</title>
<variablelist>

    <varlistentry>
    <term
>neighbors()</term>
    <listitem>
        <para
>Retorna una llista de tots els nodes connectats a aquest node. Aquest mètode té en compte si les arestes són dirigides.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>neighbors</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges()</term>
    <listitem>
        <para
>Retorna una llista de totes les arestes (entrants i sortints) d'aquest node.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edges(tipus)</term>
    <listitem>
        <para
>Retorna una llista de totes les arestes (entrants i sortints) d'aquest node del tipus especificat.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>inEdges()</term>
    <listitem>
        <para
>Retorna una llista de les arestes entrants a aquest node.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>inEdges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>inEdges(tipus)</term>
    <listitem>
        <para
>Retorna una llista de les arestes del tipus especificat entrants a aquest node.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>inEdges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>outEdges()</term>
    <listitem>
        <para
>Retorna una llista de totes les arestes sortints d'aquest node.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>outEdges</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>outEdges(tipus)</term>
    <listitem>
        <para
>Retorna una llista de les arestes del tipus especificat sortints d'aquest node.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>outEdges</function
></funcdef
> <paramdef
>int <parameter
><replaceable
>tipus</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>edgesTo(objectiu)</term>
    <listitem>
        <para
>Retorna una llista de les arestes d'aquest node cap al node especificat.</para>
    <funcsynopsis
><funcprototype
><funcdef
>array <function
>edgesTo</function
></funcdef
> <paramdef
>GraphNode <parameter
><replaceable
>objectiu</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>
</variablelist>
</sect3>
</sect2>


<sect2>
<title
>Aresta del graf</title>
<para
>Una aresta és la connexió entre dos Nodes del graf. Les arestes poden ser dirigides o no dirigides, en funció del seu tipus. </para>

<sect3>
<title
>Propietats</title>
<itemizedlist>
    <listitem>
        <para
><emphasis
>amplada</emphasis
> : </para>
        <para
>El gruix de la connexió.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>dirigit</emphasis
> : </para>
        <para
>Si és cert, la connexió és dirigida. Altrament la connexió és no dirigida.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>des_de</emphasis
> : </para>
        <para
>Inici de la connexió</para>
    </listitem>

    <listitem>
        <para
><emphasis
>a</emphasis
> : </para>
        <para
>Final de la connexió</para>
    </listitem>

    <listitem>
        <para
><emphasis
>color</emphasis
> : </para>
        <para
>ID del tipus de connexió.</para>
    </listitem>
</itemizedlist>
</sect3>


<sect3>
<title
>Mètodes</title>
<variablelist>

    <varlistentry>
    <term
>remove()</term>
    <listitem>
        <para
>Elimina aquesta connexió.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>remove</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>add_property(nom, valor)</term>
    <listitem>
        <para
>Afegeix una nova propietat a la connexió.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>add_property</function
></funcdef
> <paramdef
>string <parameter
><replaceable
>nom</replaceable
></parameter
></paramdef
> <paramdef
>string <parameter
><replaceable
>valor</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>remove_property(nom)</term>
    <listitem>
        <para
>Elimina una propietat existent de la connexió.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>remove_property</function
></funcdef
> <paramdef
>string <parameter
><replaceable
>nom</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

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

</sect1>
