/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project .
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License , v . 2 . 0 . If a copy of the MPL was not distributed with this
* file , You can obtain one at http : //mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice :
*
* Licensed to the Apache Software Foundation ( ASF ) under one or more
* contributor license agreements . See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership . The ASF licenses this file to you under the Apache
* License , Version 2 . 0 ( the " License " ) ; you may not use this file
* except in compliance with the License . You may obtain a copy of
* the License at http : //www.apache.org/licenses/LICENSE-2.0 .
*/
/*
* This file is part of LibreOffice published API .
*/
#ifndef INCLUDED_RTL_UUID_H
#define INCLUDED_RTL_UUID_H
#include "sal/config.h"
#include "rtl/string.h"
#include "sal/saldllapi.h"
#include "sal/types.h"
/**
@ file
Specification ( from draft - leach - uuids - guids - 01 . txt )
< p >
A UUID is an identifier that is unique across both space and time ,
with respect to the space of all UUIDs . To be precise , the UUID
consists of a finite bit space . Thus , collision cannot be avoided in
principle . 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 .
< p >
The generation of UUIDs does not require that a registration
authority be contacted for each identifier . Instead , Version 4 UUIDs are
generated from ( pseudo unique ) sequences of ( pseudo ) random bits .
*/
#ifdef __cplusplus
extern "C" {
#endif
/** Generates a new Version 4 (random number based) UUID (Universally Unique
IDentifier ) .
@ param pTargetUUID pointer to at least 16 bytes of memory . After the call it contains
the newly generated uuid in network byte order .
@ param pPredecessorUUID ignored ( was used when this function returned
Version 1 instead of Version 4 UUIDs ) .
@ param bUseEthernetAddress ignored ( was used when this function returned
Version 1 instead of Version 4 UUIDs ) .
*/
SAL_DLLPUBLIC void SAL_CALL rtl_createUuid(
sal_uInt8 *pTargetUUID,
const sal_uInt8 *pPredecessorUUID,
sal_Bool bUseEthernetAddress );
/** Compare two UUID's lexically
< p >
Note : lexical ordering is not temporal ordering !
< p >
Note : For equalnesschecking , a memcmp ( pUUID1 , pUUID2 , 16 ) is more efficient
@ return
< ul >
< li > - 1 u1 is lexically before u2
< li > 0 u1 is equal to u2
< li > 1 u1 is lexically after u2
< / ul >
*/
SAL_DLLPUBLIC sal_Int32 SAL_CALL rtl_compareUuid(
const sal_uInt8 *pUUID1 , const sal_uInt8 *pUUID2 );
/** Creates named UUIDs.
< p >
The version 3 UUID is meant for generating UUIDs from < em > names < / em > that
are drawn from , and unique within , some < em > name space < / em > . Some examples
of names ( and , implicitly , name spaces ) might be DNS names , URLs , ISO
Object IDs ( OIDs ) , reserved words in a programming language , or X . 500
Distinguished Names ( DNs ) ; thus , the concept of name and name space
should be broadly construed , and not limited to textual names .
< p >
The requirements for such UUIDs are as follows :
< ul >
< li > The UUIDs generated at different times from the same name in the
same namespace MUST be equal
< li > The UUIDs generated from two different names in the same namespace
should be different ( with very high probability )
< li > The UUIDs generated from the same name in two different namespaces
should be different with ( very high probability )
< li > If two UUIDs that were generated from names are equal , then they
were generated from the same name in the same namespace ( with very
high probability ) .
< / ul >
@ param pTargetUUID pointer to at least 16 bytes of memory . After the call
it contains the newly generated uuid in network byte order .
@ param pNameSpaceUUID The namespace uuid . Below are some predefined ones ,
but any arbitrary uuid can be used as namespace .
@ param pName the name
*/
SAL_DLLPUBLIC void SAL_CALL rtl_createNamedUuid(
sal_uInt8 *pTargetUUID,
const sal_uInt8 *pNameSpaceUUID,
const rtl_String *pName
);
/*
Predefined Namespaces
( Use them the following way : sal_uInt8 aNsDNS [ 16 ] ) = RTL_UUID_NAMESPACE_DNS ;
*/
/** namespace DNS
< p >
( Use them the following way : sal_uInt8 aNsDNS [ 16 ] ) = RTL_UUID_NAMESPACE_DNS ;
< p >
6ba7b810-9dad-11d1-80b4-00c04fd430c8 */
#define RTL_UUID_NAMESPACE_DNS {\
0 x6b,0 xa7,0 xb8,0 x10,\
0 x9d,0 xad,\
0 x11,0 xd1,\
0 x80, 0 xb4, 0 x00, 0 xc0, 0 x4f, 0 xd4, 0 x30, 0 xc8\
}
/** namespace URL
< p >
6ba7b811-9dad-11d1-80b4-00c04fd430c8 */
#define RTL_UUID_NAMESPACE_URL { \
0 x6b, 0 xa7, 0 xb8, 0 x11,\
0 x9d, 0 xad,\
0 x11, 0 xd1,\
0 x80, 0 xb4, 0 x00, 0 xc0, 0 x4f, 0 xd4, 0 x30, 0 xc8\
}
/** namespace oid
< p >
6ba7b812-9dad-11d1-80b4-00c04fd430c8 */
#define RTL_UUID_NAMESPACE_OID {\
0 x6b, 0 xa7, 0 xb8, 0 x12,\
0 x9d, 0 xad,\
0 x11, 0 xd1,\
0 x80, 0 xb4, 0 x00, 0 xc0, 0 x4f, 0 xd4, 0 x30, 0 xc8\
}
/** namespace X500
< p >
6ba7b814-9dad-11d1-80b4-00c04fd430c8 */
#define RTL_UUID_NAMESPACE_X500 {\
0 x6b, 0 xa7, 0 xb8, 0 x14,\
0 x9d, 0 xad,\
0 x11, 0 xd1,\
0 x80, 0 xb4, 0 x00, 0 xc0, 0 x4f, 0 xd4, 0 x30, 0 xc8\
}
#ifdef __cplusplus
}
#endif
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Messung V0.5 in Prozent C=82 H=95 G=88
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.10Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
*Bot Zugriff