Poco

class UUID

Library: Foundation
Package: UUID
Header: Poco/UUID.h

Description

A UUID is an identifier that is unique across both space and time, with respect to the space of all UUIDs. Since a UUID is a fixed size and contains a time field, it is possible for values to rollover (around A.D. 3400, depending on the specific algorithm used). A UUID can be used for multiple purposes, from tagging objects with an extremely short lifetime, to reliably identifying very persistent objects across a network.

This class implements a Universal Unique Identifier, as specified in Appendix A of the DCE 1.1 Remote Procedure Call Specification (http://www.opengroup.org/onlinepubs/9629399/), RFC 2518 (WebDAV), section 6.4.1 and the UUIDs and GUIDs internet draft by Leach/Salz from February, 1998 (http://www.ics.uci.edu/~ejw/authoring/uuid-guid/draft-leach-uuids-guids-01.txt) and also http://tools.ietf.org/html/draft-mealling-uuid-urn-05

Version 6 and 7 UUIDs are based on RFC 9562.

Member Summary

Member Functions: appendHex, compare, copyFrom, copyTo, dns, fromNetwork, isNull, nibble, null, oid, operator !=, operator <, operator <=, operator =, operator ==, operator >, operator >=, parse, swap, toNetwork, toString, tryParse, uri, variant, version, x500

Enumerations

Version

UUID_TIME_BASED = 0x01

UUID_DCE_UID = 0x02

UUID_NAME_BASED = 0x03

UUID_RANDOM = 0x04

UUID_NAME_BASED_SHA1 = 0x05

UUID_TIME_BASED_V6 = 0x06

UUID_TIME_BASED_V7 = 0x07

Constructors

UUID

UUID();

Creates a nil (all zero) UUID.

UUID

UUID(
    const UUID & uuid
);

Copy constructor.

UUID

explicit UUID(
    const std::string & uuid
);

Parses the UUID from a string.

UUID

explicit UUID(
    const char * uuid
);

Parses the UUID from a string.

UUID protected

UUID(
    const char * bytes,
    Version version
);

UUID protected

UUID(
    UInt32 timeLow,
    UInt32 timeMid,
    UInt32 timeHiAndVersion,
    UInt16 clockSeq,
    UInt8 node[]
);

Destructor

~UUID

~UUID();

Destroys the UUID.

Member Functions

copyFrom

void copyFrom(
    const char * buffer
);

Copies the UUID (16 bytes) from a buffer or byte array. The UUID fields are expected to be stored in network byte order. The buffer need not be aligned.

copyTo

void copyTo(
    char * buffer
) const;

Copies the UUID to the buffer. The fields are in network byte order. The buffer need not be aligned. There must have room for at least 16 bytes.

dns static

static const UUID & dns();

Returns the namespace identifier for the DNS namespace.

isNull inline

bool isNull() const;

Returns true iff the UUID is nil (in other words, consists of all zeros).

null static

static const UUID & null();

Returns a null/nil UUID.

oid static

static const UUID & oid();

Returns the namespace identifier for the OID namespace.

operator != inline

bool operator != (
    const UUID & uuid
) const;

operator < inline

bool operator < (
    const UUID & uuid
) const;

operator <= inline

bool operator <= (
    const UUID & uuid
) const;

operator =

UUID & operator = (
    const UUID & uuid
);

Assignment operator.

operator == inline

bool operator == (
    const UUID & uuid
) const;

operator > inline

bool operator > (
    const UUID & uuid
) const;

operator >= inline

bool operator >= (
    const UUID & uuid
) const;

parse

void parse(
    const std::string & uuid
);

Parses the UUID from its string representation.

swap

void swap(
    UUID & uuid
) noexcept;

Swaps the UUID with another one.

toString

std::string toString() const;

Returns a string representation of the UUID consisting of groups of hexadecimal digits separated by hyphens.

tryParse

bool tryParse(
    const std::string & uuid
);

Tries to interpret the given string as an UUID. If the UUID is syntactically valid, assigns the members and returns true. Otherwise leaves the object unchanged and returns false.

uri static

static const UUID & uri();

Returns the namespace identifier for the URI (former URL) namespace.

variant

int variant() const;

Returns the variant number of the UUID:

  • 0 reserved for NCS backward compatibility
  • 2 the Leach-Salz variant (used by this class)
  • 6 reserved, Microsoft Corporation backward compatibility
  • 7 reserved for future definition

version inline

Version version() const;

Returns the version of the UUID.

x500 static

static const UUID & x500();

Returns the namespace identifier for the X500 namespace.

appendHex protected static

static void appendHex(
    std::string & str,
    UInt8 n
);

appendHex protected static

static void appendHex(
    std::string & str,
    UInt16 n
);

appendHex protected static

static void appendHex(
    std::string & str,
    UInt32 n
);

compare protected

int compare(
    const UUID & uuid
) const;

fromNetwork protected

void fromNetwork();

nibble protected static

static Int16 nibble(
    char hex
);

toNetwork protected

void toNetwork();