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

To generate a UUID, see UUIDGenerator.

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

UUID(
const char * bytes,
Version version
);

### UUID

UUID(
UInt32 timeLow,
UInt16 timeMid,
UInt16 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 const UUID & dns();

Returns the namespace identifier for the DNS namespace.

### isNull

bool isNull() const;

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

### null

static const UUID & null();

Returns a null/nil UUID.

### oid

static const UUID & oid();

Returns the namespace identifier for the OID namespace.

### operator !=

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

### operator <

bool operator < (
const UUID & uuid
) const;

### operator <=

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

### operator =

UUID & operator = (
const UUID & uuid
);

Assignment operator.

### operator ==

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

### operator >

bool operator > (
const UUID & uuid
) const;

### operator >=

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

Version version() const;

Returns the version of the UUID.

### x500

static const UUID & x500();

Returns the namespace identifier for the X500 namespace.

### appendHex

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

### appendHex

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

### appendHex

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

### compare

int compare(
const UUID & uuid
) const;

### fromNetwork

void fromNetwork();

### nibble

static Int16 nibble(
char hex
);

### toNetwork

void toNetwork();