Seid

Serial elements in a LSS are uniquely identified by a 64 bit Serial Element Identifier (Seid).

A null Seid contains zeros for both the low and high 32 bits. A null Seid is never used for a serial element in the LSS.


// Low 32 bits and high 32 bits of a 64 bit Serial element Id (Seid)
typedef uint32 SeidPart;
typedef SeidPart SeidHigh;
typedef SeidPart SeidLow;

class Seid
{
public:
    Seid();
    Seid(SeidLow low,SeidHigh high);
    explicit Seid(uint64 v);

    bool IsNull() const;
    void SetNull();

    SeidLow Low() const;
    void SetLow(SeidLow low);

    SeidHigh High() const;
    void SetHigh(SeidHigh high);

    uint64 Value() const;
    void SetValue(uint64 value);
private:
    [ implementation ]
};


Seid()

Default constructor initialises the Seid with the null value.


Seid(SeidLow low,SeidHigh high)

Constructor initialises the Seid with the given low and high 32 bit values.


explicit Seid(uint64 v)

Constructor initialises the Seid with the given unsigned 64 bit value.


bool IsNull()

Returns true if the Seid is null.


void SetNull()

Set the Seid to the null value.


SeidLow Low() const

Get the low 32 bit value of the Seid


void SetLow(SeidLow low)

Set the low 32 bit value of the Seid


SeidHigh High() const

Get the high 32 bit value of the Seid


void SetHigh(SeidHigh high)

Set the high 32 bit value of the Seid


uint64 Value() const

Get the value of the Seid as an unsigned 64 bit value.


void SetValue(uint64 value)

Set the Seid with the given unsigned 64 bit value.

Comparisons on Seids

The 6 comparison operations == != < <= > >= are available on Seids and are equivalent to the corresponding comparisons as unsigned 64 bit numbers.

Writing of a Seid to/from an Archive

A Seid is serialised as a sequence of 8 bytes, starting with the least significant byte (i.e. little-endian [] byte order).


Archive& operator<<(Archive& ar, Seid x);
InputArchive operator>>(InputArchive ar, Seid& x);