MLib Reference Manual | ||||
---|---|---|---|---|
Top | Description |
#include <mlib.h> MStatus (*MDArraySetNoElement) (mpointer ___array___
,const msize len
); struct MDArray; #define M_DARRAY (data) #define M_DARRAY_type_string_element (data) #define M_DARRAY_type_size_element (data) #define M_DARRAY_type_size_array (data) #define M_DARRAY_len_array (data) #define M_DARRAY_len_elements (data) #define M_DARRAY_set_noelement (data) #define M_DARRAY_user (data) #define M_DARRAY_ (data) #define M_DARRAY_REF (data, type) #define M_DARRAY_INS (data, type, index) #define M_DARRAY_REM (data, type, index) MDArray * m_darray_new (const mchars type_string_element
,const msize type_size_element
,const msize len_array
,MDArraySetNoElement set_noelement
); mpointer m_darray_free (MDArray *darray
); MStatus m_darray_full_free (MDArray *darray
); MStatus m_darray_element_inserted (MDArray *darray
,msize index
); MStatus m_darray_element_removed (MDArray *darray
,msize index
); MStatus m_darray_set_noelement (MDArray *darray
); #define m_c_darray_element_inserted (darray, index) #define m_c_darray_element_removed (darray, index)
Attraverso le strutture MDArray è possibile gestire array dinamici adoperando le potenzialità delle strutture derivate.
Ogni struttura di tipo MDArray possiede l'indirizzo di un array dinamico che viene memorizzato come mpointer, per questo è necessario utilizzare le macros specifiche per adoperare i corretti casting e poter utilizzare liberamente l'array dinamico.
Example 14. Using MDArray
#include <mlib.h> #include <glib/gprintf.h> MStatus set_noelement ( mpointer ___array___, msize _len ) { mint index, len; len = (mint)_len; for ( index = 0; index <len; index++ ) { ((mchar*)___array___)[index] = 'x'; } return MCORRECT; } int m_main ( argc, argv ) { m_main_init ( argc, argv ); MDArray* array = m_darray_new ( M_STRSIZE_FROM_TYPE (mchar), 5, set_noelement ); g_printf ( "\n type_string_element: %s \n", M_DARRAY_type_string_element(array) ); g_printf ( "\n type_size_element: %lu \n", M_DARRAY_type_size_element(array) ); g_printf ( "\n type_size_array: %lu \n", M_DARRAY_type_size_array(array) ); g_printf ( "\n len_array: %lu \n", M_DARRAY_len_array(array) ); g_printf ( "\n len_elements: %lu \n", M_DARRAY_len_elements(array) ); g_printf ( "\n array: %p \n", ((mchar*)M_DARRAY_(array)) ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[0] ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[1] ); M_DARRAY_REF (array, mchar)[0] = 'a'; m_darray_element_inserted ( array, 0 ); M_DARRAY_REF (array, mchar)[1] = 'b'; m_darray_element_inserted ( array, 1 ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[0] ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[1] ); g_printf ( "\n len_elements: %lu \n", M_DARRAY_len_elements(array) ); // M_DARRAY_set_noelement(array) ( M_DARRAY_(array), M_DARRAY_len_array(array) ); m_darray_set_noelement ( array ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[0] ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[1] ); g_printf ( "\n len_elements: %lu \n", M_DARRAY_len_elements(array) ); M_DARRAY_INS (array, mchar, 0)[0] = 'c'; M_DARRAY_INS (array, mchar, 1)[1] = 'd'; g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[0] ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[1] ); g_printf ( "\n len_elements: %lu \n", M_DARRAY_len_elements(array) ); M_DARRAY_REM (array, mchar, 0)[0] = 'X'; M_DARRAY_REM (array, mchar, 1)[1] = 'X'; g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[0] ); g_printf ( "\n %c; \n", M_DARRAY_REF (array, mchar)[1] ); g_printf ( "\n len_elements: %lu \n", M_DARRAY_len_elements(array) ); mchar* dynamic_array = (mchar*)m_darray_free ( array ); g_printf ( "\n dynamic : %c; \n", dynamic_array[0] ); g_printf ( "\n dynamic : %c; \n", dynamic_array[1] ); g_free ( dynamic_array ); return MCORRECT; }
MStatus (*MDArraySetNoElement) (mpointer ___array___
,const msize len
);
Utilizzato nella inizializzazione dell' array dinamico contenuto nella struttura derivata MDArray.
struct MDArray { const mchars type_string_element; const msize type_size_element; const msize type_size_array; const msize len_array; const msize len_elements; MDArraySetNoElement set_noelement; const mpointer array; };
Contiene un array dinamico ed una serie di informazioni e strumenti utili alla sua gestione.
La proprietà len_elements
è un elemento instabile della struttura derivata.
Ciò è di peso dalla libertà di azione che l'user dispone rispetto alla gestione
degli elementi inseriti o rimossi nell'array dinamico.
Se utilizzata in una struttura non e' necessario che questa contenga una MDefine poiche' gia' presente nella MDArray.
Questa è una struttura derivata ed è diretta evoluzione della struttura MBoxData, della quale eredita le proprietà.
const mchars |
tipo, sottoforma di stringa, dell'elemento inseribile nell'array dinamico - only Read |
const msize |
dimensione in byte del tipo inseribile nell'array dinamico - only Read |
const msize |
dimensione in byte dell'intero array dinamico - only Read |
const msize |
quantità di elementi inseribili nell'array dinamico - only Read |
const msize |
quantità di elementi inseriti nell'array dinamico - only Read |
MDArraySetNoElement |
indirizzo ad una funzione di inizializzazzione dell'array dinamico - Read / Write |
const mpointer |
indirizzo ad un array dinamico - only Read |
#define M_DARRAY(data) ds_CAST (MDArray*,data)
stability
: Unstable
Provvede al casting di una struttura data
ritornando una struttura di tipo MDArray
|
struttura derivata |
#define M_DARRAY_type_string_element(data) ds_GET_PROPERTY(M_DARRAY(data),type_string_element)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "type_string_element"
|
una struttura derivata |
#define M_DARRAY_type_size_element(data) ds_GET_PROPERTY(M_DARRAY(data),type_size_element)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "type_size_element"
|
una struttura derivata |
#define M_DARRAY_type_size_array(data) ds_GET_PROPERTY(M_DARRAY(data),type_size_array)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "type_size_array"
|
una struttura derivata |
#define M_DARRAY_len_array(data) ds_GET_PROPERTY(M_DARRAY(data),len_array)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "len_array"
|
una struttura derivata |
#define M_DARRAY_len_elements(data) ds_GET_PROPERTY(M_DARRAY(data),len_elements)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "len_elements"
|
una struttura derivata |
#define M_DARRAY_set_noelement(data) ds_GET_PROPERTY(M_DARRAY(data),set_noelement)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "set_noelement"
|
una struttura derivata |
#define M_DARRAY_user(data) ds_GET_PROPERTY(M_DARRAY(data),user)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "user"
|
una struttura derivata |
#define M_DARRAY_(data) ds_GET_PROPERTY(M_DARRAY(data),array)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "array",
l'array dinamico è ancora nella forma di (void*)array[]
|
una struttura derivata |
#define M_DARRAY_REF(data,type) ((type*)M_DARRAY_(data))
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "array",
quindi effettua un ulteriore casting ritornando l'array dinamico utilizzabile.
|
una struttura derivata |
|
tipo dell'elemento inseribile nell'array dinamico |
#define M_DARRAY_INS(data,type,index)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "array",
quindi effettua un ulteriore casting ritornando l'array dinamico utilizzabile.
Prima di queste operazioni segna come "element inserted"
la posizione index
dell'array dinamico parte del MDArray.
|
una struttura derivata |
|
tipo dell'elemento inseribile nell'array dinamico |
|
un identificativo di posizione valido |
#define M_DARRAY_REM(data,type,index)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "array",
quindi effettua un ulteriore casting ritornando l'array dinamico utilizzabile.
Prima di queste operazioni segna come "element removed"
la posizione index
dell'array dinamico parte del MDArray.
|
una struttura derivata |
|
tipo dell'elemento inseribile nell'array dinamico |
|
un identificativo di posizione valido |
MDArray * m_darray_new (const mchars type_string_element
,const msize type_size_element
,const msize len_array
,MDArraySetNoElement set_noelement
);
stability
: Unstable
Crea un nuovo MDArray.
Per semplificare il codice è possibile utilizzare la macro M_STRSIZE_FROM_TYPE al posto dei primi due argomenti.
|
tipo, sottoforma di stringa, dell'elemento inseribile nell'array dinamico - only Read |
|
dimensione in byte del tipo inseribile nell'array dinamico - only Read |
|
quantità di elementi inseribili nell'array dinamico - only Read |
|
indirizzo ad una funzione di inizializzazzione dell'array dinamico - Read / Write |
Returns : |
un nuovo MDArray o NULL in caso di errore.
|
Since 0.0.2
mpointer m_darray_free (MDArray *darray
);
stability
: Unstable
Libera la memoria allocata per una MDArray. L'array dinamico parte della MDArray resta a disposizione fino al termine del programma.
|
indirizzo ad una struttura derivata allocata di tipo MDArray |
Returns : |
l'indirizzo dell'array dinamico parte della MDArray o NULL in caso di errore.
|
Since 0.0.2
MStatus m_darray_full_free (MDArray *darray
);
stability
: Unstable
Libera la memoria allocata per una MDArray. L'array dinamico parte della MDArray viene anch'esso liberato.
|
indirizzo ad una struttura derivata allocata di tipo MDArray |
Returns : |
MCORRECT o MERROR in caso di errore.
|
Since 0.0.2
MStatus m_darray_element_inserted (MDArray *darray
,msize index
);
stability
: Unstable
Segna come "element inserted" una posizione di un array dinamico parte di una MDArray.
|
indirizzo ad una struttura derivata allocata di tipo MDArray |
|
identificativo di una posizione all'interno di un array dinamico parte di un MDArray |
Returns : |
MCORRECT o MERROR in caso di errore.
|
Since 0.0.2
MStatus m_darray_element_removed (MDArray *darray
,msize index
);
stability
: Unstable
Segna come "element removed" una posizione di un array dinamico parte di una MDArray.
|
indirizzo ad una struttura derivata allocata di tipo MDArray |
|
identificativo di una posizione all'interno di un array dinamico parte di un MDArray |
Returns : |
MCORRECT o MERROR in caso di errore.
|
Since 0.0.2
MStatus m_darray_set_noelement (MDArray *darray
);
stability
: Unstable
Provvede a chiamare la funzione di risettaggio della proprietà "set_noelement" passando come argomenti l'array dinamico parte della MDArray e il valore della proprietà "len_array". Segna come "element removed" tutte le posizioni dell'array dinamico parte della MDArray.
|
indirizzo ad una struttura derivata allocata di tipo MDArray |
Returns : |
MCORRECT o MERROR in caso di errore.
|
Since 0.0.2
#define m_c_darray_element_inserted(darray,index)
stability
: Unstable
Come la funzione m_darray_element_inserted()
, provvede a passare il dato castato.
|
array dove segnare inserito un elemento |
|
un identificativo di posizione valido |
#define m_c_darray_element_removed(darray,index)
stability
: Unstable
Come la funzione m_darray_element_removed()
, provvede a passare il dato castato.
|
array dove segnare rimosso un elemento |
|
un identificativo di posizione valido |