1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185
|
/** @file
* IPRT - Universal Unique Identifiers (UUID).
*/
/*
* Copyright (C) 2006-2010 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* you can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*
* The contents of this file may alternatively be used under the terms
* of the Common Development and Distribution License Version 1.0
* (CDDL) only, as it comes in the "COPYING.CDDL" file of the
* VirtualBox OSE distribution, in which case the provisions of the
* CDDL are applicable instead of those of the GPL.
*
* You may elect to license modified versions of this file under the
* terms and conditions of either the GPL or the CDDL or both.
*/
#ifndef ___iprt_uuid_h
#define ___iprt_uuid_h
#include <iprt/cdefs.h>
#include <iprt/types.h>
RT_C_DECLS_BEGIN
/** @defgroup grp_rt_uuid RTUuid - Universally Unique Identifiers
* @ingroup grp_rt
* @{
*/
/**
* Generates new UUID value.
*
* @note IPRT uses little endian byte ordering in the UUID integer fields. If
* you want to pass IPRT UUIDs in binary representation to other UUID libraries
* and expect to get exactly the same string representation as in IPRT, you
* need to convert the first three integer fields (one 32 bit value, two 16 bit
* values) separately to big endian (also called network byte order).
*
* @sa RTUUID::Gen
*
* @returns iprt status code.
* @param pUuid Where to store generated uuid.
*/
RTDECL(int) RTUuidCreate(PRTUUID pUuid);
/**
* Makes null UUID value.
*
* @returns iprt status code.
* @param pUuid Where to store generated null uuid.
*/
RTDECL(int) RTUuidClear(PRTUUID pUuid);
/**
* Checks if UUID is null.
*
* @returns true if UUID is null.
* @param pUuid uuid to check.
*/
RTDECL(bool) RTUuidIsNull(PCRTUUID pUuid);
/**
* Compares two UUID values.
*
* @returns 0 if eq, < 0 or > 0.
* @param pUuid1 First value to compare. NULL is treated like if
* RTUuidIsNull() return true.
* @param pUuid2 Second value to compare. NULL is treated like if
* RTUuidIsNull() return true.
*/
RTDECL(int) RTUuidCompare(PCRTUUID pUuid1, PCRTUUID pUuid2);
/**
* Compares a UUID value with a UUID string.
*
* @note IPRT uses little endian byte ordering in the UUID integer fields. If
* you want to pass IPRT UUIDs in binary representation to other UUID libraries
* and expect to get exactly the same string representation as in IPRT, you need
* to convert the first three integer fields (one 32 bit value, two 16 bit
* values) separately to big endian (also called network byte order).
* Correspondingly, if you want to get the right result with UUIDs which are in
* big endian format, you need to convert them before using this function.
*
* @sa RTUUID::Gen
*
* @returns 0 if eq, < 0 or > 0.
* @param pUuid1 First value to compare. NULL is not allowed.
* @param pszString2 The 2nd UUID in string form. NULL or malformed
* string is not permitted.
*/
RTDECL(int) RTUuidCompareStr(PCRTUUID pUuid1, const char *pszString2);
/**
* Compares two UUID strings.
*
* @returns 0 if eq, < 0 or > 0.
* @param pszString1 The 1st UUID in string from. NULL or malformed
* string is not permitted.
* @param pszString2 The 2nd UUID in string form. NULL or malformed
* string is not permitted.
*/
RTDECL(int) RTUuidCompare2Strs(const char *pszString1, const char *pszString2);
/**
* Converts binary UUID to its string representation.
*
* @note IPRT uses little endian byte ordering in the UUID integer fields. If
* you want to pass IPRT UUIDs in binary representation to other UUID libraries
* and expect to get exactly the same string representation as in IPRT, you
* need to convert the first three integer fields (one 32 bit value, two 16 bit
* values) separately to big endian (also called network byte order).
* Correspondingly, if you want to get the right result with UUIDs which are in
* big endian format, you need to convert them before using this function.
*
* @sa RTUUID::Gen
*
* @returns iprt status code.
* @param pUuid Uuid to convert.
* @param pszString Where to store result string.
* @param cchString pszString buffer length, must be >= RTUUID_STR_LENGTH.
*/
RTDECL(int) RTUuidToStr(PCRTUUID pUuid, char *pszString, size_t cchString);
/**
* Converts UUID from its string representation to binary format.
*
* @note IPRT uses little endian byte ordering in the UUID integer fields. If
* you want to pass IPRT UUIDs in binary representation to other UUID libraries
* and expect to get exactly the same string representation as in IPRT, you
* need to convert the first three integer fields (one 32 bit value, two 16 bit
* values) separately to big endian (also called network byte order).
* Correspondingly, if you want to get the right result with UUIDs which are in
* big endian format, you need to convert them before using this function.
*
* @sa RTUUID::Gen
*
* @returns iprt status code.
* @param pUuid Where to store result Uuid.
* @param pszString String with UUID text data.
*/
RTDECL(int) RTUuidFromStr(PRTUUID pUuid, const char *pszString);
/**
* Converts binary UUID to its UTF-16 string representation.
*
* @note See note in RTUuidToStr.
*
* @sa RTUUID::Gen
*
* @returns iprt status code.
* @param pUuid Uuid to convert.
* @param pwszString Where to store result string.
* @param cwcString pszString buffer length, must be >=
* RTUUID_STR_LENGTH.
*/
RTDECL(int) RTUuidToUtf16(PCRTUUID pUuid, PRTUTF16 pwszString, size_t cwcString);
/**
* Converts UUID from its UTF-16 string representation to binary format.
*
* @note See note in RTUuidFromStr.
*
* @sa RTUUID::Gen
*
* @returns iprt status code.
* @param pUuid Where to store result Uuid.
* @param pwszString String with UUID text data.
*/
RTDECL(int) RTUuidFromUtf16(PRTUUID pUuid, PCRTUTF16 pwszString);
/** @} */
RT_C_DECLS_END
#endif
|