Successivo: Futuri sviluppi delle estensioni, Precedente: Obiettivi delle estensioni, Su: Progetto delle estensioni [Contenuti][Indice]
Per una scelta progettuale arbitraria, le estensioni possono accedere ai valori
delle variabili e dei vettori predefiniti (come ARGV
e FS
), ma
non possono modificarli, con la sola eccezione di PROCINFO
.
Il motivo di questa scelta è di impedire a una funzione di estensione di
alterare il flusso di un programma awk
togliendogli il controllo.
Mentre una vera funzione di awk
può fare quel che vuole, a
discrezione del programmatore, una funzione di estensione dovrebbe fornire un
servizio, o rendere disponibile un’API C da utilizzare all’interno di
awk
, senza interferire con le variabili FS
o ARGC
e
ARGV
.
Inoltre, diverrebbe facile avviarsi su un sentiero scivoloso. Quante
funzionalità di gawk
dovrebbero essere disponibili alle estensioni?
Devono poter usare getline
? Oppure richiamare gsub()
o compilare
espressioni regolari? Oppure richiamare funzioni interne di awk
?
(Questo potrebbe creare molta confusione.)
Per evitare questi problemi, gli sviluppatori di gawk
hanno scelto di
iniziare con le funzionalità più semplici e di base, che sono comunque
veramente utili.
Sebbene gawk
consenta cose interessanti come l’MPFR,
e vettori indicizzati internamente con numeri interi,
un’altra decisione è stata quella di non rendere disponibili all’API queste
funzionalità, per amor di semplicità e per restare fedeli alla tradizionale
semantica di awk
. (In effetti, i vettori indicizzati internamente
con numeri interi sono talmente trasparenti che non sono neppure documentati!)
In più, tutte le funzioni nell’API controllano che i puntatori ai parametri
passati loro in input non siano NULL
. Se lo sono, viene emesso un
messaggio di errore. (È bene che il codice di estensione verifichi
che i puntatori ricevuti da gawk
non siano NULL
. Ciò non
dovrebbe succedere, ma gli sviluppatori di gawk
sono solo degli
esseri umani, e capita anche a loro di commettere degli errori, di tanto in
tanto.)
Col tempo, l’API si svilupperà certamente; gli sviluppatori di gawk
si aspettano che questo avvenga in base alle necessità degli utenti. Per ora,
l’API disponbile sembra fornire un insieme di funzionalità minimo, eppure
potente, per creare estensioni.
Successivo: Futuri sviluppi delle estensioni, Precedente: Obiettivi delle estensioni, Su: Progetto delle estensioni [Contenuti][Indice]