12.17.1 Oggetti Packer

Le istanze di Packer hanno i seguenti metodi:

get_buffer( )
Restituisce il buffer corrente compattato sotto forma di stringa.

reset( )
Azzera il buffer compattato in una stringa vuota.

In generale è possibile impacchettare tutti i più comuni tipi di dati XDR chiamando il metodo pack_type() appropriato. Ogni metodo accetta un singolo argomento, il valore da impacchettare. Vengono supportati i seguenti metodi di impacchettamento di tipi di dati semplici: pack_uint(), pack_int(), pack_enum(), pack_bool(), pack_uhyper() e pack_hyper().

pack_float( value)
Impacchetta i valori numerici in virgola mobile presenti in value in precisione singola.

pack_double( value)
Impacchetta i valori numerici in virgola mobile presenti in value in precisione doppia.

I seguenti metodi supportano l'impacchettamento di stringhe, bytes e dati poco chiari:

pack_fstring( n, s)
Impacchetta una stringa s di lunghezza fissa. n è la lunghezza della stringa ma non viene impacchettata nel buffer dei dati. Se è necessario garantire l'allineamento a 4 byte, la stringa viene riempita da byte null.

pack_fopaque( n, data)
Impacchetta un flusso di dati poco chiari di lunghezza fissa, similmente a pack_fstring().

pack_string( s)
Impacchetta una stringa s di lunghezza variabile. La lunghezza della stringa viene prima impacchettata come intero senza segno, in seguito i dati della stringa vengono impacchettati con pack_fstring().

pack_opaque( data)
Impacchetta una stringa di dati poco chiari di lunghezza variabile, similmente a pack_string().

pack_bytes( bytes)
Impacchetta un flusso di byte di lunghezza variabile, similmente a pack_string().

I seguenti metodi supportano l'impacchettamento di array e liste:

pack_list( list, pack_item)
Impacchetta una lista, list, di elementi omogenei. Questo metodo risulta utile per liste di dimensioni indeterminate. Ad esempio la dimensione non è disponibile finché la lista non viene elaborata. Per ogni elemento della lista viene impacchettato prima un intero 1 senza segno, seguito dal valore dei dati presi dalla lista. pack_item è la funzione chiamata per impacchettare ogni elemento. Al termine della lista viene impacchettato un intero 0 senza segno.

Ad esempio per impacchettare una lista di interi il codice potrebbe apparire così:

import xdrlib
p = xdrlib.Packer()
p.pack_list([1, 2, 3], p.pack_int)

pack_farray( n, array, pack_item)
Impacchetta una lista di lunghezza fissa (array) di elementi omogenei. n è la lunghezza della lista; non viene impacchettata nel buffer ma se len(array) non è uguale a n viene sollevata un'eccezione ValueError. Come precedentemente descritto, pack_item è la funzione chiamata per impacchettare ogni elemento.

pack_array( list, pack_item)
Impacchetta una lista list di lunghezza variabile di elementi omogenei. Prima la lunghezza della lista viene impacchettata come intero senza segno, quindi ogni elemento viene impacchettato come nel metodo pack_farray() già visto.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.