TABELLA DEI VARI CONTENITORI
Lista con spiegazione dei vari contenitori (array, stringhe,
ecc.) disponibili in Symbian OS
Riportiamo di seguito una tabella con elencati i principali metodi per
memorizzare dati in C++ su Symbian. I descrittori
possono essere usati come stringhe (testuali o di byte)
da 8 o 16 bit: ognuno dei tipi elencati di seguito può
avere come suffisso 8 o 16 a seconda se i dati trattati devono essere
considerati come byte singoli o a coppie (stringhe di testo Unicode
ad esempio). Se non si specifica nulla, verrà utilizzato uno dei due
tipi di default, su Series 60 quello a 16 bit.
La tabella seguente non intende essere una spiegazione dettagliata di
tutti questi tipi, ma solo uno schema per ricordarli e per individuare
subito quale è più adatto ad una certa esigenza. Per ulteriori
informazioni consultare il progetto in allegato.
Tipologia |
Classe |
Descrittori |
TDesC
Indica un descrittore generico non-modificabile, solo riassegnabile o
modificabile tramite Des(), che restituisce un TPtr. È un tipo base, usato
nelle firme delle funzioni, non può essere instanziato direttamente.
|
TDes
Indica un descrittore generico modificabile. È un tipo base, usato
nelle firme delle funzioni, non può essere instanziato direttamente.
|
TBufC
Non modificabile (solo riassegnabile o
modificabile tramite Des(), che restituisce un TPtr), a lunghezza fissa,
allocato sullo stack.
|
HBufC
Non modificabile (solo riassegnabile o
modificabile tramite Des(), che restituisce un TPtr), a lunghezza fissa,
allocato sull'heap.
|
TPtrC
Puntatore ad un descrittore senza API modificabile, la dimensione e i
dati sono non appartengono a questo oggetto.
|
TBuf
Modificabile, con una granularity iniziale, proprietario dei dati, sullo
stack.
|
TPtr
Puntatore ad un descrittore con API modificabile, la dimensione e i dati
sono da un'altra parte.
|
Package |
TPckg
Può contenere qualunque tipo di dato e permette di accedere a tutti i
suoi byte attraverso [], e ne permette la modifica. L'operatore () fa
accedere all'oggetto.
|
TPckgC
Può contenere qualunque tipo di dato e permette di accedere a tutti i
suoi byte attraverso [], ma non ne permette la modifica. L'operatore () fa
accedere all'oggetto.
|
TPckgBuf
Crea una copia di qualunque tipo di dato, permette di accedere a tutti
i suoi byte attraverso [], e ne consente la modifica. L'operatore () fa
accedere all'oggetto.
|
Array semplici |
RArray
Array di oggetti a lunghezza fissa (classi T o R), proprietario dei
dati. È situato sullo stack e non permette di memorizzare dati oltre i 640 byte. Ha un'API di
inserimento, appending, operatore [] e At.
|
RPointerArray
Array di puntatori a oggetti di qualsiasi tipo. È situato sullo stack ma i
dati risiedono altrove. Ha un'API di inserimento, appending,
operatore [] e At.
|
Array avanzati |
CArrayFixFlat
Array con allocazione infrequente, solo oggetti a larghezza fissa (classi T o R).
|
CArrayVarFlat
Array incon allocazione infrequente, solo oggetti a larghezza variabile (classi
T o R).
|
CArrayPtrFlat
Array con allocazione infrequente, puntatori ad oggetti di qualunque tipo.
|
CArrayPakFlat
Array in un'unica cella heap, solo oggetti a larghezza variabile (classi
T o R).
|
CArrayFixSeg
Array segmentato, solo oggetti a larghezza fissa (classi T o R).
|
CArrayVarSeg
Array segmentato, solo oggetti a larghezza variabile (classi T o R).
|
CArrayPtrSeg
Array segmentato, puntatori ad oggetti di qualunque tipo.
|
Nel progetto allegato vi è una funzione che dimostra l'utilizzo di
ognuno di questi tipi (ad esempio quella che spiega il funzionamento di
RArray è chiamata RArrayEx); il progetto è basato su console.
Se si hanno dubbi sul significato di termini come granularity,
heap e stack riferirsi al
glossario.
|