Id List Quark

Id List Quark — Semplice via per ottenere degli identificativi univoci

Stability Level

Unstable, unless otherwise indicated

Synopsis

#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);

Description

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;
}

  


Details

struct MIdListQuark

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à.

const GQuark quark;

identificativo univoco associato ad una stringa - only Read

const mchars string;

stringa associata ad un identificativo di tipo GQuark - only Read

M_IDLISTQUARK()

    #define M_IDLISTQUARK(data)     ds_CAST (MIdListQuark*,data)

stability: Unstable

Provvede al casting di una struttura data ritornando una struttura di tipo MIdListQuark

data :

struttura derivata

M_IDLISTQUARK_quark()

    #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"

data :

una struttura derivata

M_IDLISTQUARK_string()

    #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"

data :

una struttura derivata

M_IDLISTQUARK_user()

    #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"

data :

una struttura derivata

m_idlistquark_new ()

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.

offset :

quantita' massima di identificativi inseribili nella rispettiva MIdListQuark

string :

una stringa da associare all'identificativo della lista o NULL

Returns :

un nuovo MIdListQuark o NULL in caso di errore.

Since 0.0.2


m_idlistquark_free ()

MStatus             m_idlistquark_free                  (MIdListQuark *idlistq);

stability: Unstable

Libera la memoria allocata per una MIdListQuark.

idlistq :

indirizzo ad una struttura derivata allocata di tipo MIdListQuark

Returns :

MCORRECT o MERROR in caso di errore.

Since 0.0.2

See Also

Quarks