DMI: struct array

4.3.1

Dynamic Memory Indexed

Con il termine di DMI (Dynamic Memory Indexed) si intende il modo cui easyhand gestisce le problematiche legate ad un array di strutture.
La DMI è un'area di "memoria suddivisa in elementi di uguali dimensioni": quindi si può definire un oggetto DMI come un array di elementi.
Perchè usare una DMI invece di un array di elementi ? per questi motivi

Controllata in scrittura e lettura
Se si richiede un elemento che non esiste, la dmi restituisce il programma/funzione/posizione/nome della struttura e altri dati che aiutano a capire cosa è successo.
Informativa
La struttura DMI ritorna in qualunque momento nome, dimensioni massime e elementi utilizzati.
La DMI può essere dinamica
Se non si ha idea di quanto grande sarà la dimensione dell' array, si possono usare funzioni che riallocano memoria in base alle dimensioni richieste.
Auto rilascio delle risorse
In caso lo sviluppatore si dimentichi, easyhand rilascia automaticamente le risorse impegnate.
Inoltre avendo la DMI un nome alfanumerico, un bug è rintracciabile velocemente nella lista delle memorie impegnate.
In una raccolta di API sono racchiuse tutte le operazione necessarie (solitamente) nella gestione di elementi.
In fase di creazione di una dmi (DMIOpen) si dichiarano un nome alfanumerico che verrà usato per battezzare la memoria impiegata, il tipo di memoria da usare, la dimensione dell'elemento da trattare e il numero di massimi elementi.

Es.
struct ESEMPIO sArray[50]; 
diventa 
DMIOpen(&dmiEsempio,RAM_AUTO,sizeof(struct ESEMPIO),50,"Esempio");

La DMI è uno dei pilastri della programmazione di easyhand.
Le funzioni DMI permettono di controllare quindi questi elementi, controllando il buon funzionamento del programma, ed evitare errori comuni, come ad esempio l'overloading o l'errata inizializzazione.
La DMI si appoggia sul modulo eh_memory, quindi usa le funzioni memo_xx per allocare memoria.
Ad ogni DMI corrisponde una memoria allocata con il nome inserito come argomento in DMIOpen(); questo fa si che se la DMI non si chiude , le risorse impegnate vengono liberate dal PRG_end().

E' comunque obbligatorio, liberare le risorse con DMIClose().
La dimensione della memoria allocata corrisponde alla semplice formula: numero degli elementi richiesti per la dimensione dell'elemento.
In caso di DMIAppendDyn()/DMIInsertDyn() la dimensione della memoria ed il numero degli elementi memorizzabili possono cambiare durante l'utilizzo del programma.

Per poter aprire una DMI è obbligatorio inizializzare la struttura di riferimento con la macro DMIRESET; in caso contrario la funzione ritorna errore.

Es. _DMI dmiEsempio=DMIRESET;
See also:
Easyhand C/C++: DMI: struct array | Last modified: 20/04/2012 08.03.16 Europe/Rome | #1.28
P.. 107
Easyhand C/C++
Una mano alle tue idee.
Privacy Policy