Differenze tra le versioni di "Configurazione, organizzazione ed impostazione dell'array secondo i sorgenti di Gambas"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
Per la creazione di un vettore (''array''), non v'è la sola e semplice allocazione di memoria per la memorizzazione dei dati contenuti negli cosiddetti ''elementi'' del vettore medesimo, ma, essendo anche il vettore un ''Oggetto'' di Gambas, si innesca una procedura più complessa che coinvolge più ''Strutture'' di dati a livello dei sorgenti di Gambas, e quindi diversi byte di memoria da occupare. <SUP>[[#Note|nota 1]]</sup>
 
Per la creazione di un vettore (''array''), non v'è la sola e semplice allocazione di memoria per la memorizzazione dei dati contenuti negli cosiddetti ''elementi'' del vettore medesimo, ma, essendo anche il vettore un ''Oggetto'' di Gambas, si innesca una procedura più complessa che coinvolge più ''Strutture'' di dati a livello dei sorgenti di Gambas, e quindi diversi byte di memoria da occupare. <SUP>[[#Note|nota 1]]</sup>
  
Tali risorse, insomma, servono sia per definire le caratteristiche generali del vettore, sia dei dati che esso contiene.
+
Tali risorse, insomma, servono per definire sia le caratteristiche generali del vettore, sia dei dati che esso contiene.
  
 
Vediamo, dunque, cosa avviene, appunto, a livello dei sorgenti di Gambas e quali loro risorse in particolare vengono richiamate e usate per creare e gestire un vettore.
 
Vediamo, dunque, cosa avviene, appunto, a livello dei sorgenti di Gambas e quali loro risorse in particolare vengono richiamate e usate per creare e gestire un vettore.

Versione delle 19:49, 20 mar 2016

Per la creazione di un vettore (array), non v'è la sola e semplice allocazione di memoria per la memorizzazione dei dati contenuti negli cosiddetti elementi del vettore medesimo, ma, essendo anche il vettore un Oggetto di Gambas, si innesca una procedura più complessa che coinvolge più Strutture di dati a livello dei sorgenti di Gambas, e quindi diversi byte di memoria da occupare. nota 1

Tali risorse, insomma, servono per definire sia le caratteristiche generali del vettore, sia dei dati che esso contiene.

Vediamo, dunque, cosa avviene, appunto, a livello dei sorgenti di Gambas e quali loro risorse in particolare vengono richiamate e usate per creare e gestire un vettore.

La memorizzazione, dunque, dei dati caratterizzanti il vettore e dei dati, e loro caratteristiche (come ad esempio il tipo di valori), contenuti dal vettore, avviene attraverso l'utilizzo di una Struttura, costituita a sua volta da due Strutture:

  • la Struttura chiamata ARRAY e contenuta nel file sorgente ".../main/share/gb_array.h";
  • la Struttura chiamata OBJECT e contenuta nel file sorgente "...main/gbx/gbx_object.h" dell'Interprete.

Questa unica Struttura, utile per la memorizzazione dei dati in genere del vettore, è chiamata CARRAY ed è contenuta nel file sorgente ".../main/gbx/gbx_c_array.h" dell'Interprete.

Essa è lì così dichiarata:

typedef
       struct {
               OBJECT object;
               int size;
               int count;
               TYPE type;
               void *data;
               int *dim;
               void *ref;
               }
       CARRAY;

Laddove, con riferimento ai membri che ci interessano, abbiamo:

  • OBJECT object, rappresenta la predetta Struttura OBJECT, contenuta nel file sorgente "...main/gbx/gbx_object.h" dell'Interprete. Il primo membro di tale Struttura OBJECT è a sua volta un Puntatore alla Struttura chiamata CLASS e definita nel file sorgente ".../main/gbx/gbx_class.h".
  • int size, è un Intero che rappresenta la quantità di memoria in byte del tipo dei valori contenuti nel vettore.
  • int count, è un Intero che rappresenta la quantità di dati/elementi contenuti dal vettore.
  • TYPE type, è un Intero Lungo (Long) che rappresenta il tipo dei dati contenuti nel vettore, secondo i valori definiti nel "Gambas datatypes identifiers" del file sorgente ".../main/share/gambas.h".
  • void *data, è un Puntatore all'area riservata ove sono memorizzati i dati contenuti dal vettore.




Note

[1] Un oggetto Gambas non è soltanto un'astrazione, un elemento generico di un Classe, né soltanto un'immagine di un aggeggio (widget) virtuale. Esso è innanzitutto memoria allocata, debitamente e coerentemente, secondo i tipi dichiarati in alcune Strutture, previste dai sorgenti di Gambas, che lo specificano come un Oggetto ben determinato appartenente ad una Classe specifica.




Pagina in costruzione !