MLib Reference Manual | ||||
---|---|---|---|---|
Top | Description |
#include <mlib.h> struct MIdListQuark; #define M_IDLISTQUARK (data) #define M_IDLISTQUARK_quark (data) #define M_IDLISTQUARK_string (data) #define M_IDLISTQUARK_user (data) MIdListQuark * m_idlistquark_new (MIdOffSet offset
,mchars string
); MStatus m_idlistquark_free (MIdListQuark *idlistq
);
MLib offre un metodo semplice e pratico per l'ottenimento di identificativi numerici univoci utilizzabili ad esempio per l'archiviazione sicura dei dati.
Gli identificativi sono valori numerici interi del tipo MId e vengono associati a delle liste di tipo MIdList.
Questa sezione riguarda però la struttura del tipo MIdListQuark, diretta evoluzione del tipo MIdList, dal quale eredita le proprietà.
MIdListQuark aggiunge la possibilità di utilizzare 2 identificativi univoci da associare alla lista, uno di tipo GQuark, l'altro di tipo mchars .
Example 16. Using MIdListQuark
#include <mlib.h> #include <mlib/mprintf.h> int m_main ( argc, argv ) { m_main_init ( argc, argv ); MIdListQuark* idlistq = m_idlistquark_new ( 5, "text ^^" ); MId id[5] = { 0, 0, 0, 0, 0 }; cicloindex ( 5, index, { id[index] = m_idlist_insert_element ( M_IDLIST (idlistq) ); } ); cicloindex ( 5, index, { g_printf ( "\n id[%u]: %u \n", index, id[index] ); } ); m_idlist_remove_element0 ( M_IDLIST (idlistq), &(id[2]) ); m_c_idlist_remove_element0 ( idlistq, &(id[3]) ); m_c_idlist_remove_element0 ( idlistq, &(id[4]) ); id[2] = m_idlist_insert_element ( M_IDLIST (idlistq) ); id[3] = m_c_idlist_insert_element (idlistq); id[4] = m_c_idlist_insert_element (idlistq); cicloindex ( 5, index, { g_printf ( "\n id[%u]: %u \n", index, id[index] ); } ); g_printf ( "\n len: %u \n", M_IDLIST_len (idlistq) ); g_printf ( "\n string: %s, quark: %u \n", M_IDLISTQUARK_string (idlistq), M_IDLISTQUARK_quark (idlistq) ); m_idlistquark_free ( idlistq ); return MCORRECT; }
struct MIdListQuark { const GQuark quark; const mchars string; };
Questa struttura contiene le informazioni riguardo un gruppo di identificativi in relazione tra loro dall'appartenenza ad uno stesso insieme.
La MIdListQuark mantiene riservati e non visibili i dati riguardanti gli id rimossi.
Se utilizzata in una struttura non e' necessario che questa contenga una MDefine poiche' gia' presente nella MIdListQuark.
Questa è una struttura derivata ed è diretta evoluzione della struttura MIdList, della quale eredita le proprietà.
#define M_IDLISTQUARK(data) ds_CAST (MIdListQuark*,data)
stability
: Unstable
Provvede al casting di una struttura data
ritornando una struttura di tipo MIdListQuark
|
struttura derivata |
#define M_IDLISTQUARK_quark(data) ds_GET_PROPERTY(M_IDLISTQUARK(data),quark)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "quark"
|
una struttura derivata |
#define M_IDLISTQUARK_string(data) ds_GET_PROPERTY(M_IDLISTQUARK(data),string)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "string"
|
una struttura derivata |
#define M_IDLISTQUARK_user(data) ds_GET_PROPERTY(M_IDLISTQUARK(data),user)
stability
: Unstable
Provvede al casting di un dato data
ritornando la proprietà "user"
|
una struttura derivata |
MIdListQuark * m_idlistquark_new (MIdOffSet offset
,mchars string
);
stability
: Unstable
Crea una nuova MIdListQuark.
offset
non puo' essere superiore a MID_TO_MAX.
Nel caso venga passato NULL
come argomento string
, alla struttura derivata
verrà assegnata una stringa univoca di default.
|
quantita' massima di identificativi inseribili nella rispettiva MIdListQuark |
|
una stringa da associare all'identificativo della lista o NULL
|
Returns : |
un nuovo MIdListQuark o NULL in caso di errore.
|
Since 0.0.2
MStatus m_idlistquark_free (MIdListQuark *idlistq
);
stability
: Unstable
Libera la memoria allocata per una MIdListQuark.
|
indirizzo ad una struttura derivata allocata di tipo MIdListQuark |
Returns : |
MCORRECT o MERROR in caso di errore.
|
Since 0.0.2