- Contenitori di dati: descriptor, package e array -
 
COSA SERVE PER QUESTO TUTORIAL
Download | Chiedi sul FORUM | Glossario Un computer che esegue Windows
Stringhe e array con C++ su Symbian OS

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.

 

<< INDIETRO by VeNoM00