| MLib Reference Manual | ||||
|---|---|---|---|---|
| Top | Description | ||||
#include <mlib.h> struct MIdList; #define M_IDLIST (data) #define M_IDLIST_id (data) #define M_IDLIST_len (data) #define M_IDLIST_user (data) #define MIDLIST_MAX #define MID_TO_MAX typedef MLId; #define MLId_new (name) MIdList * m_idlist_new (MIdOffSet offset); MStatus m_idlist_free (MIdList *idlist); MId m_idlist_insert_element (MIdList *idlist); MId m_idlist_remove_element (MIdList *idlist,MId id); MStatus m_idlist_remove_element0 (MIdList *idlist,MId *id); MId m_idlist_get_offset_element (MIdList *idlist); MLId m_lid_new (void); MId m_lidlist_insert_element (MIdList *idlist,MLId lid); MId m_lidlist_remove_element (MIdList *idlist,MLId lid); MStatus m_lidlist_remove_element0 (MIdList *idlist,MLId lid); #define m_c_idlist_insert_element (idlist) #define m_c_idlist_remove_element (idlist, id) #define m_c_idlist_remove_element0 (idlist, id) #define m_c_idlist_get_offset_element (idlist) #define m_c_lidlist_insert_element (idlist, lid) #define m_c_lidlist_remove_element (idlist, lid) #define m_c_lidlist_remove_element0 (idlist, lid) mboolean m_id_equal_id (MId id1,MId id2); mboolean m_lid_equal_list (MLId lid1,MLId lid2); mboolean m_lid_equal_id (MLId lid1,MLId lid2);
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.
Example 15. Using MIdList
#include <mlib.h>
#include <mlib/mprintf.h>
int
m_main ( argc, argv )
{
m_main_init ( argc, argv );
MIdList* idlist = m_idlist_new ( 5 );
MId id[5] = { 0, 0, 0, 0, 0 };
cicloindex ( 5, index,
{
id[index] = m_idlist_insert_element (idlist);
} );
cicloindex ( 5, index,
{
g_printf ( "\n id[%u]: %u \n", index, id[index] );
} );
m_idlist_remove_element0 ( idlist, &(id[2]) );
m_idlist_remove_element0 ( idlist, &(id[3]) );
m_idlist_remove_element0 ( idlist, &(id[4]) );
id[2] = m_idlist_insert_element (idlist);
id[3] = m_idlist_insert_element (idlist);
id[4] = m_idlist_insert_element (idlist);
cicloindex ( 5, index,
{
g_printf ( "\n id[%u]: %u \n", index, id[index] );
} );
g_printf ( "\n len: %u \n", M_IDLIST_len (idlist) );
m_idlist_free ( idlist );
return MCORRECT;
}
struct MIdList {
const MId id;
const muint len;
};
Questa struttura contiene le informazioni riguardo un gruppo di identificativi in relazione tra loro dall'appartenenza ad uno stesso insieme.
La MIdList 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 MIdList.
Questa è una struttura derivata ed è diretta evoluzione della struttura MBoxData, della quale eredita le proprietà.
#define M_IDLIST(data) ds_CAST (MIdList*,data)
stability: Unstable
Provvede al casting di una struttura data ritornando una struttura di tipo MIdList
|
struttura derivata |
#define M_IDLIST_id(data) ds_GET_PROPERTY(M_IDLIST(data),id)
stability: Unstable
Provvede al casting di un dato data ritornando la proprietà "id"
|
una struttura derivata |
#define M_IDLIST_len(data) ds_GET_PROPERTY(M_IDLIST(data),len)
stability: Unstable
Provvede al casting di un dato data ritornando la proprietà "len"
|
una struttura derivata |
#define M_IDLIST_user(data) ds_GET_PROPERTY(M_IDLIST(data),user)
stability: Unstable
Provvede al casting di un dato data ritornando la proprietà "user"
|
una struttura derivata |
#define MIDLIST_MAX INT_MAX
Quantita' massima di MIdList allocabili
tramite la funzione m_idlist_new()
#define MID_TO_MAX INT_MAX
Quantita' massima di MId inseribili in
una MIdList attraverso la funzione m_idlist_insert_element()
typedef MId* MLId;
Versione piu' avanzata del tipo MId.
Attraverso l' MLId e' possibile conoscere oltre l'identificativo, anche a quale MIdList esso sia associato.
#define MLId_new(name) MLId name = m_lid_new()
stability: Unstable
Declare and define a new MLId structure pointer.
|
name of a new MLId structure pointer |
MIdList * m_idlist_new (MIdOffSet offset);
stability: Unstable
Crea una nuova MIdList.
offset non puo' essere superiore a MID_TO_MAX.
|
quantita' massima di identificativi inseribili nella rispettiva MIdList. |
Returns : |
un nuovo MIdList o NULL in caso di errore.
|
Since 0.0.2
MStatus m_idlist_free (MIdList *idlist);
stability: Unstable
Libera la memoria allocata per una MIdList.
|
indirizzo ad una struttura derivata allocata di tipo MIdList |
Returns : |
MCORRECT o MERROR in caso di errore.
|
Since 0.0.2
MId m_idlist_insert_element (MIdList *idlist);
stability: Unstable
Inserisce un nuovo identificativo univoco in una MIdList.
|
lista dove inserire il prossimo identificativo |
Returns : |
un nuovo MId o MERROR in caso di errore.
|
Since 0.0.2
MId m_idlist_remove_element (MIdList *idlist,MId id);
stability: Unstable
Rimuove un identificativo univoco in una MIdList.
|
lista dalla quale rimuovere l' identificativo |
|
un identificativo valido |
Returns : |
il MId rimosso o MERROR in caso di errore.
|
Since 0.0.2
MStatus m_idlist_remove_element0 (MIdList *idlist,MId *id);
stability: Unstable
Rimuove un identificativo univoco in una MIdList.
Se la funzione ha successo id viene impostato a MNOID.
|
lista dalla quale rimuovere l' identificativo |
|
un puntatore ad un identificativo valido |
Returns : |
MCORRECT in caso di corretta esecuzione
MERROR in caso di errore
|
Since 0.0.2
MId m_idlist_get_offset_element (MIdList *idlist);
stability: Unstable
ritorna l' identificativo di piu' alto valore
inserito nella lista ( non necessariamente risulta
essere l'ultimo identificativo ritornato dalla
funzione m_idlist_insert_element().
Since 0.0.2
MLId m_lid_new (void);
stability: Unstable
Crea un nuovo MLId.
Returns : |
un nuovo MLId |
Since 0.0.1
MId m_lidlist_insert_element (MIdList *idlist,MLId lid);
stability: Unstable
Inserisce un nuovo identificativo univoco in una MIdList.
L'identificativo viene inserito nella variabile lid la
quale contiene inoltre l'identificativo della MIdList utilizzata.
|
lista dove inserire il prossimo identificativo |
|
una variabile MLId |
Returns : |
un nuovo MLId o MERROR in caso di errore.
|
Since 0.0.2
MId m_lidlist_remove_element (MIdList *idlist,MLId lid);
stability: Unstable
Rimuove un identificativo univoco in una MIdList.
|
lista dalla quale rimuovere l' identificativo |
|
un identificativo valido |
Returns : |
il MId rimosso o MERROR in caso di errore.
|
Since 0.0.2
MStatus m_lidlist_remove_element0 (MIdList *idlist,MLId lid);
stability: Unstable
Rimuove un identificativo univoco in una MIdList.
Se la funzione ha successo lid viene impostato a MNOID.
|
lista dalla quale rimuovere l' identificativo |
|
un identificativo valido |
Returns : |
MCORRECT in caso di corretta esecuzione
MERROR in caso di errore
|
Since 0.0.2
#define m_c_idlist_insert_element(idlist)
stability: Unstable
Come la funzione m_idlist_insert_element() , provvede a passare il dato castato.
|
lista dove inserire il prossimo identificativo |
#define m_c_idlist_remove_element(idlist,id)
stability: Unstable
Come la funzione m_idlist_remove_element() , provvede a passare il dato castato.
|
lista dalla quale rimuovere l' identificativo |
|
un identificativo valido |
#define m_c_idlist_remove_element0(idlist,id)
stability: Unstable
Come la funzione m_idlist_remove_element0() , provvede a passare il dato castato.
|
lista dalla quale rimuovere l' identificativo |
|
un puntatore ad un identificativo valido |
#define m_c_idlist_get_offset_element(idlist)
stability: Unstable
Come la funzione m_idlist_get_offset_element() , provvede a passare il dato castato.
|
una lista valida |
#define m_c_lidlist_insert_element(idlist,lid)
stability: Unstable
Come la funzione m_lidlist_insert_element() , provvede a passare il dato castato.
|
lista dove inserire il prossimo identificativo |
|
una variabile MLId |
#define m_c_lidlist_remove_element(idlist,lid)
stability: Unstable
Come la funzione m_lidlist_remove_element() , provvede a passare il dato castato.
|
lista dalla quale rimuovere l' identificativo |
|
un identificativo valido |
#define m_c_lidlist_remove_element0(idlist,lid)
stability: Unstable
Come la funzione m_lidlist_remove_element0() , provvede a passare il dato castato.
|
lista dalla quale rimuovere l' identificativo |
|
un identificativo valido |
mboolean m_id_equal_id (MId id1,MId id2);
stability: Unstable
Verifica l'uguaglianza tra due identificativi.
|
un identificativo valido |
|
un identificativo valido |
Returns : |
TRUE in caso di uguaglianza, FALSE nel caso opposto.
|
Since 0.0.1
mboolean m_lid_equal_list (MLId lid1,MLId lid2);
stability: Unstable
Verifica la stessa appartenenza ad una MIdList di due identificativi.
|
un identificativo valido |
|
un identificativo valido |
Returns : |
TRUE in caso di appartenenza, FALSE nel caso opposto.
|
Since 0.0.1