<sect1 id="scripting-data-structure">
<title
>API de criação de scripts para todas as estruturas de dados</title>
<sect2>
<title
>Objeto abstrato de estrutura de dados</title>
<para
>A estrutura de dados abstrata define um conjunto de elementos de dados e ligações possíveis entre eles, isto é, o protótipo para todas as outras estruturas de dados. As estruturas de dados são identificadas pelos seus nomes. Assumindo que você criou uma estrutura de dados com o nome <literal
>grafoteste</literal
>, então poderá acessar a estrutura de dados simplesmente com este identificador. Por exemplo, para obter uma lista com todos os elementos de dados da estrutura indicada, você pode escrever <literal
>grafoteste.list_nodes();</literal
> no script. </para>

<sect3>
<title
>Propriedades</title>
<itemizedlist>
    <listitem>
        <para
><emphasis
>nome</emphasis
> : </para>
        <para
>O nome único desta estrutura de dados.</para>
    </listitem>
</itemizedlist>
</sect3>
</sect2>

<sect2>
<title
>Dados abstratos</title>
<para
>Um elemento de dados abstrato é uma unidade de informação que pertence a uma estrutura de dados abstrata e está possivelmente ligada a outros elementos de dados por ponteiros. </para>

<sect3>
<title
>Propriedades</title>
<itemizedlist>
    <listitem>
        <para
><emphasis
>width</emphasis
> : </para>
        <para
>O tamanho deste elemento de dados.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>x</emphasis
> : </para>
        <para
>A coordenada X deste elemento de dados.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>y</emphasis
> : </para>
        <para
>A coordenada Y deste elemento de dados.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>id</emphasis
> : </para>
        <para
>O identificador único deste elemento de dados.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>color</emphasis
> : </para>
        <para
>A cor deste elemento de dados, indicada como um valor hexadecimal.</para>
    </listitem>
</itemizedlist>
</sect3>
</sect2>


<sect2>
<title
>Ponteiro abstrato</title>
<para
>Uma aresta liga dois elementos de dados e pode ela mesma manter informações sobre as suas propriedades. </para>
<sect3>
<title
>Propriedades</title>
<itemizedlist>
    <listitem>
        <para
><emphasis
>width</emphasis
> : </para>
        <para
>Largura da ligação.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>directed</emphasis
> : </para>
        <para
>Se for verdadeiro, a ligação é direcional. Caso contrário, não é direcional.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>from</emphasis
> : </para>
        <para
>Início da ligação.</para>
    </listitem>

    <listitem>
        <para
><emphasis
>to</emphasis
> : </para>
        <para
>Fim da ligação</para>
    </listitem>

    <listitem>
        <para
><emphasis
>color</emphasis
> : </para>
        <para
>ID do tipo de ligação.</para>
    </listitem>
</itemizedlist>
</sect3>


<sect3>
<title
>Métodos</title>
<variablelist>

    <varlistentry>
    <term
>remove()</term>
    <listitem>
        <para
>Remove esta ligação.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>remove</function
></funcdef
> <paramdef
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>add_property(nome, valor)</term>
    <listitem>
        <para
>Adiciona uma nova propriedade à ligação.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>add_property</function
></funcdef
> <paramdef
>string <parameter
><replaceable
>nome</replaceable
></parameter
></paramdef
> <paramdef
>string <parameter
><replaceable
>valor</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>

    <varlistentry>
    <term
>remove_property(nome)</term>
    <listitem>
        <para
>Remove uma propriedade existente da ligação.</para>
    <funcsynopsis
><funcprototype
><funcdef
>void <function
>remove_property</function
></funcdef
> <paramdef
>string <parameter
><replaceable
>nome</replaceable
></parameter
></paramdef
> </funcprototype>
    </funcsynopsis>
    </listitem>
    </varlistentry>
</variablelist>
</sect3>

</sect2>
</sect1>
