# API di scripting per il motore dei grafi

La finestra delle proprietà delle strutture di dati permette di accedere alle impostazioni di configurazione proprie del motore dei grafi. Lì puoi selezionare il Tipo del grafo. Il significato di questi tipi è come segue:

- Grafo: grafo in cui non possono esistere più archi con gli stessi archi punti iniziale e finale.

- Multigrafo: grafo in cui possono esistere più archi con gli stessi archi punti iniziale e finale.

## Struttura di dati dei grafi

Un oggetto grafo contiene le informazioni di una struttura di dati del tipo Grafo.

### Proprietà

- name:

  Il nome univoco di questa struttura di dati.

### Metodi

nodes()

  Restituisci un elenco di tutti i nodi nel grafo.

      array nodes

nodes(tipo)

  Restituisci un elenco di tutti i nodi nel grafo del tipo specificato.

      array nodes int tipo

edges()

  Restituisci un elenco di tutti gli archi nel grafo.

      array edges

edges(tipo)

  Restituisci un elenco di tutti gli archi nel grafo del tipo specificato.

      array edges int tipo

createNode(tipo)

  Crea un nuovo nodo del tipo specificato e restituiscilo. Se il tipo non è registrato, non viene creato nessun nodo.

      GraphNode createNode int tipo

createNode()

  Crea un nuovo nodo di tipo predefinito e restituiscilo.

      GraphNode createNode

createEdge(da, a, tipo)

  Crea un arco dal nodo da al nodo a del tipo specificato e restituiscilo. Se il tipo non è registrato, non viene creato nessun arco.

      GraphEdge createEdge GraphNode da GraphNode a int tipo

createEdge(da, a)

  Crea un arco dal nodo da al nodo a di tipo predefinito e restituiscilo.

      GraphEdge createEdge GraphNode da GraphNode a

distances(da)

  Restituisce un elenco delle lunghezza minime di percorso da questo nodo a ogni altro nodo del grafo.

      Array distances GraphNode da

## Nodo del grafo

Un nodo è l'elemento di dati di un grafo.

### Proprietà

- width:

  La dimensione di questo elemento di dati.

- x:

  La coordinata X di questo elemento di dati.

- y:

  La coordinata Y di questo elemento di dati.

- id:

  L'identificativo univoco di questo elemento di dati.

- color:

  Il colore di questo elemento di dati, indicato come valore esadecimale.

### Metodi

neighbors()

  Restituisci un elenco di tutti i nodi collegati a questo. Questo metodo rispetta l'eventuale direzionalità degli archi.

      array neighbors

edges()

  Restituisci un elenco di tutti gli archi (entranti e uscenti) di questo nodo.

      array edges

edges(tipo)

  Restituisci un elenco di tutti gli archi (entranti e uscenti) di questo nodo del tipo specificato.

      array edges int tipo

inEdges()

  Restituisci un elenco degli archi entranti in questo nodo.

      array inEdges

inEdges(tipo)

  Restituisci un elenco di tutti gli archi entranti in questo nodo del tipo specificato.

      array inEdges int tipo

outEdges()

  Restituisci un elenco di tutti gli archi uscenti da questo nodo.

      array outEdges

outEdges(tipo)

  Restituisci un elenco di tutti gli archi uscenti da questo nodo del tipo specificato.

      array outEdges int tipo

edgesTo(destinazione)

  Restituisci un elenco di tutti gli archi di questo nodo al nodo specificato.

      array edgesTo GraphNode destinazione

## Arco del grafo

Un arco è la connessione di due nodi del grafo. Gli archi possono essere direzionali o meno, a seconda del loro stile.

### Proprietà

- width:

  Lo spessore della connessione.

- directed:

  Se vero, la connessione è direzionale, altrimenti non lo è.

- from:

  Inizio della connessione.

- to:

  Fine della connessione.

- color:

  Identificativo del tipo di connessione.

### Metodi

remove()

  Rimuovi questa connessione.

      void remove

add_property(nome, valore)

  Aggiungi una nuova proprietà alla connessione.

      void add_property string nome string valore

remove_property(nome)

  Rimuovi una proprietà presente dalla connessione.

      void remove_property string nome