Successivo: , Precedente: , Su: Descrizione dell'estensione API   [Contenuti][Indice]


17.4.4 Funzioni per creare valori

L’API fornisce varie funzioni di costruzione per creare valori di tipo stringa e di tipo numerico, e anche varie macro di utilità. Questa sottosezione le presenta tutte come prototipi di funzione, nel modo in cui il codice sorgente di un’estensione le userebbe:

static inline awk_value_t *
make_const_string(const char *stringa, size_t lunghezza, awk_value_t *risultato);

Questa funzione mette il valore di una stringa nella variabile awk_value_t puntata da risultato. La funzione presuppone che stringa sia una costante stringa C (o altri dati che formano una stringa), e automaticamente crea una copia dei dati che sarà immagazzinata in risultato. Viene restituito il puntatore risultato.

static inline awk_value_t *
make_malloced_string(const char *stringa, size_t lunghezza, awk_value_t *risultato);

Questa funzione mette il valore di una stringa nella variabile awk_value_t puntata da risultato. Si presuppone che stringa sia un valore ‘char *’ che punta a dati ottenuti in precedenza per mezzo di gawk_malloc(), gawk_calloc() o gawk_realloc(). L’idea è che questi dati siano comunicati direttamente a gawk, che se ne assume la responsabilità. Viene restituito il puntatore risultato.

static inline awk_value_t *
make_null_string(awk_value_t *risultato);

Questa funzione specializzata crea una stringa nulla (il valore “undefined”) nella variabile awk_value_t puntata da risultato. Viene restituito il puntatore risultato.

static inline awk_value_t *
make_number(double num, awk_value_t *risultato);

Questa funzione crea semplicemente un valore numerico nella variabile awk_value_t, puntata da risultato.

static inline awk_value_t *
make_number_mpz(void *mpz, awk_value_t *result);

Questa funzione crea un valore di numero GMP in result. mpz deve provenire da una chiamata a get_mpz_ptr() (e quindi essere veramente del corrispondente tipo mpz_ptr). gawk assume la proprietà di questa memoria.

static inline awk_value_t *
make_number_mpfr(void *mpfr, awk_value_t *result);

Questa funzione crea un valore di numero MPFR in result. mpz deve provenire da una chiamata a get_mpfr_ptr() (e quindi essere veramente del corrispondente tipo mpfr_ptr). gawk assume la proprietà di questa memoria.

static inline awk_value_t *
make_const_user_input(const char *stringa, size_t lunghezza, awk_value_t *risultato);

Questa funzione è identica a make_const_string(), ma la stringa è marcata come input dell’utente, che dovrà essere trattata come strnum se il contenuto della stringa appare essere numerico.

static inline awk_value_t *
make_malloced_user_input(const char *stringa, size_t lunghezza, awk_value_t *risultato);

Questa funzione è identica a make_malloced_string(), ma la stringa è marcata come input dell’utente, che dovrà essere trattata come strnum se il contenuto della stringa appare essere numerico.

static inline awk_value_t *
make_const_regex(const char *stringa, size_t lunghezza, awk_value_t *risultato);

Questa funzione crea un valore di regexp fortemente tipizzata, allocando una copia della stringa. stringa è l’espressione regolare, di lunghezza lunghezza.

static inline awk_value_t *
make_malloced_regex(const char *stringa, size_t lunghezza, awk_value_t *risultato);

Questa funzione crea un valore di regexp fortemente tipizzata. stringa è l’espressione regolare, di lunghezza lunghezza. Si aspetta che stringa sia un valore di tipo ‘char *’ che punta a dati ottenuti in precedenza tramite una chiamata a gawk_malloc(), gawk_calloc() o gawk_realloc().


Successivo: , Precedente: , Su: Descrizione dell'estensione API   [Contenuti][Indice]