Successivo: Sommario delle note, Precedente: Progetto delle estensioni, Su: Note [Contenuti][Indice]
Estensioni dinamiche, descrive le API supportate e i meccanismi
per scrivere estensioni per gawk
. Quest’API è stata introdotta
nella versione 4.1. Peraltro, già da molti anni gawk
metteva a disposizione un meccanismo di estensione che richiedeva una
familiarità con la struttura interna di gawk
e che non era stato
progettato altrettanto bene.
Per garantire un periodo di transizione, gawk
versione 4.1
continua a supportare il meccanismo di estensione originale.
Questo rimarrà disponibile per la durata di una sola versione principale.
Il supporto cesserà, e sarà rimosso dal codice sorgente, al rilascio
della prossima versione principale.
In breve, le estensioni in stile originale dovrebbero essere compilate includendo il file di intestazione awk.h nel codice sorgente dell’estensione. Inoltre, va definito l’identificativo ‘GAWK’ durante la preparazione (si usi ‘-DGAWK’ con compilatori in stile Unix). Se non lo si fa, le definizioni in gawkapi.h risulteranno in conflitto con quelle in awk.h e l’estensione non sarà compilabile.
Come nelle versioni precedenti, un’estensione vecchio stile sarà caricata
usando la funzione predefinita extension()
(che non viene ulteriormente
documentata). Questa funzione, a sua volta, trova e carica il file oggetto
condiviso che contiene l’estensione e chiama la sua routine C dl_load()
.
Poiché le estensioni in stile originale e quelle nello stile nuovo usano
differenti routine di inizializzazione(dl_load()
e dlload()
,
rispettivamente), esse possono tranquillamente essere installate nella stessa
directory (il cui nome deve essere contenuto nella variabile AWKLIBPATH
)
senza problemi di conflitti.
Il team di sviluppo di gawk
raccomanda caldamente di convertire
ogni estensione del vecchio tipo ancora in uso, in modo da utilizzare la nuova
API descritta
in
Estensioni dinamiche.
Successivo: Sommario delle note, Precedente: Progetto delle estensioni, Su: Note [Contenuti][Indice]