Successivo: Appiattimento di vettori, Precedente: Tipi di dati per i vettori, Su: Manipolazione di vettori [Contenuti][Indice]
Le funzioni seguenti permettono di gestire singoli elementi di un vettore:
awk_bool_t get_element_count(awk_array_t a_cookie, size_t *count);
Per il vettore rappresentato da a_cookie
, restituisce in *count
il numero di elementi in esso contenuti. Ogni sottovettore è conteggiato come
se fosse un solo elemento.
Restituisce false se si verifica un errore.
awk_bool_t get_array_element(awk_array_t a_cookie,
const awk_value_t *const index,
awk_valtype_t wanted,
awk_value_t *risultato);
Per il vettore rappresentato da a_cookie
, restituisce in *risultato
il valore dell’elemento il cui indice è index
.
wanted
specifica il tipo di valore che si vuole ritrovare.
Restituisce false se wanted
non coincide con il tipo di dato o
se index
non è nel vettore (vedi Tabella 17.2).
Il valore per index
può essere numerico, nel qual caso gawk
lo converte in una stringa. Usare valori non interi è possibile, ma
richiede di comprendere il modo con cui tali valori sono convertiti in stringhe
(vedi la sezione Conversione di stringhe e numeri); per questo motivo, è meglio usare numeri interi.
Come per tutte le stringhe passate a gawk
da
un’estensione, la memoria che contiene il valore della stringa con chiave
index
deve essere stata acquisita utilizzando le funzioni
gawk_malloc()
, gawk_calloc()
o gawk_realloc()
, e
gawk
rilascerà (al momento opportuno) la relativa memoria.
awk_bool_t set_array_element(awk_array_t a_cookie,
const awk_value_t *const index,
const awk_value_t *const value);
Nel vettore rappresentato da a_cookie
, crea o modifica
l’elemento il cui indice è contenuto in index
.
I vettori ARGV
ed ENVIRON
non possono essere modificati,
mentre il vettore PROCINFO
è modificabile.
awk_bool_t set_array_element_by_elem(awk_array_t a_cookie,
awk_element_t element);
Come set_array_element()
, ma prende l’indice index
e
il valore value
da element
. Questa è una macro di utilità.
awk_bool_t del_array_element(awk_array_t a_cookie,
const awk_value_t* const index);
Elimina dal vettore, rappresentato da a_cookie
, l’elemento con
l’indice specificato.
Restituisce true se l’elemento è stato rimosso o false se
l’elemento non era presente nel vettore.
Le seguenti funzioni operano sull’intero vettore:
awk_array_t create_array(void);
Crea un nuovo vettore a cui si possono aggiungere elementi. Vedi la sezione Come creare e popolare vettori per una trattazione su come creare un nuovo vettore e aggiungervi elementi.
awk_bool_t clear_array(awk_array_t a_cookie);
Svuota il vettore rappresentato da a_cookie
.
Restituisce false in presenza di qualche tipo di problema, true
in caso contrario. Il vettore non viene eliminato ma, dopo aver chiamato
questa funzione, resta privo di elementi. Questo equivale a usare
l’istruzione delete
(vedi la sezione L’istruzione delete
).
awk_bool_t flatten_array_typed(awk_array_t a_cookie,
awk_flat_array_t **data,
awk_valtype_t index_type,
awk_valtype_t value_type);
Per il vettore rappresentato da a_cookie
, crea una struttura
awk_flat_array_t
e la riempie con indici e valori del tipo richiesto.
Imposta il puntatore il cui indirizzo è passato in data
per puntare a
questa struttura.
Restituisce true se tutto va bene o false in caso contrario.
Vedi la sezione Lavorare con tutti gli elementi di un vettore,
per una trattazione su come appiattire un vettore per poterci lavorare.
awk_bool_t flatten_array(awk_array_t a_cookie, awk_flat_array_t **data);
Per il vettore rappresentato da a_cookie
, crea una struttura
awk_flat_array_t
e la riempie con indici di tipo AWK_STRING
e
valori AWK_UNDEFINED
.
Questa funzione è resa obsoleta da flatten_array_typed()
.
È fornita come macro, e mantenuta per convenienza e per compatibilità a
livello di codice sorgente con la precedente versione dell’API.
awk_bool_t release_flattened_array(awk_array_t a_cookie,
awk_flat_array_t *data);
Quando si è finito di lavorare con un vettore appiattito, si liberi la
memoria usando questa funzione. Occorre fornire sia il cookie del vettore
originale, sia l’indirizzo della struttura da liberare,
awk_flat_array_t
.
La funzione restituisce true se tutto va bene, false in caso contrario.
Successivo: Appiattimento di vettori, Precedente: Tipi di dati per i vettori, Su: Manipolazione di vettori [Contenuti][Indice]