Logo ROOT   6.16/01
Reference Guide
TUUID.h
Go to the documentation of this file.
1// @(#)root/base:$Id$
2// Author: Fons Rademakers 30/9/2001
3
4/*************************************************************************
5 * Copyright (C) 1995-2001, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TUUID
13#define ROOT_TUUID
14
15//////////////////////////////////////////////////////////////////////////
16// //
17// TUUID //
18// //
19// This class defines a UUID (Universally Unique IDentifier), also //
20// known as GUIDs (Globally Unique IDentifier). A UUID is 128 bits //
21// long, and if generated according to this algorithm, is either //
22// guaranteed to be different from all other UUIDs/GUIDs generated //
23// until 3400 A.D. or extremely likely to be different. UUIDs were //
24// originally used in the Network Computing System (NCS) and //
25// later in the Open Software Foundation's (OSF) Distributed Computing //
26// Environment (DCE). //
27// //
28//////////////////////////////////////////////////////////////////////////
29
30#ifdef WIN32
31#undef GetCurrentTime
32#endif
33#include "Rtypes.h"
34
35// forward declaration
36class TBuffer;
37class TFile;
38class TDirectory;
39class TInetAddress;
40class TDatime;
41
42class TUUID {
43
44protected:
45 UInt_t fUUIDIndex; //!index in the list of UUIDs in TProcessUUID
46 UInt_t fTimeLow; // 60 bit time, lower 32 bits
47 UShort_t fTimeMid; // middle 16 time bits
48 UShort_t fTimeHiAndVersion; // high 12 time bits + 4 UUID version bits
49 UChar_t fClockSeqHiAndReserved; // high 6 clock bits + 2 bits reserved
50 UChar_t fClockSeqLow; // low 8 clock bits
51 UChar_t fNode[6]; // 6 node id bytes
52
53 struct uuid_time_t {
56 };
57
59 void Format(UShort_t clockseq, uuid_time_t ts);
60 void GetNodeIdentifier();
61 void GetCurrentTime(uuid_time_t *timestamp);
62 void GetSystemTime(uuid_time_t *timestamp);
63 void GetRandomInfo(UChar_t seed[16]);
64 void SetFromString(const char *uuid_str);
65
66public:
67 TUUID();
68 TUUID(const char *uuid_str);
69 virtual ~TUUID();
70
71 const char *AsString() const;
72 Int_t Compare(const TUUID &u) const;
73 UShort_t Hash() const;
74 void Print() const;
76 TDatime GetTime() const;
77 void GetUUID(UChar_t uuid[16]) const;
78 void SetUUID(const char *uuid_str);
79 UInt_t GetUUIDNumber() const { return fUUIDIndex; }
80 void SetUUIDNumber(UInt_t index) { fUUIDIndex = index; }
81
82 void StreamerV1(TBuffer &b);
83 void FillBuffer(char *&buffer);
84 void ReadBuffer(char *&buffer);
85 Int_t Sizeof() const { return 18; }
86
87 ClassDef(TUUID,1) // Universally Unique IDentifier
88};
89
90
91inline TBuffer &operator>>(TBuffer &buf, TUUID &uuid)
92{ uuid.Streamer(buf); return buf; }
93
94// Not inlined in order to avoid const casted away warning in user code.
95TBuffer &operator<<(TBuffer &buf, const TUUID &uuid);
96
97inline Bool_t operator==(const TUUID &u1, const TUUID &u2)
98{ return (!u1.Compare(u2)) ? kTRUE : kFALSE; }
99
100inline Bool_t operator!=(const TUUID &u1, const TUUID &u2)
101{ return !(u1 == u2); }
102
103
104#endif
#define b(i)
Definition: RSha256.hxx:100
unsigned short UShort_t
Definition: RtypesCore.h:36
int Int_t
Definition: RtypesCore.h:41
unsigned char UChar_t
Definition: RtypesCore.h:34
unsigned int UInt_t
Definition: RtypesCore.h:42
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:87
#define ClassDef(name, id)
Definition: Rtypes.h:324
TBuffer & operator>>(TBuffer &buf, TUUID &uuid)
Definition: TUUID.h:91
Bool_t operator==(const TUUID &u1, const TUUID &u2)
Definition: TUUID.h:97
Bool_t operator!=(const TUUID &u1, const TUUID &u2)
Definition: TUUID.h:100
TBuffer & operator<<(TBuffer &buf, const TUUID &uuid)
Input operator. Delegate to Streamer.
Definition: TUUID.cxx:704
Buffer base class used for serializing objects.
Definition: TBuffer.h:40
This class stores the date and time with a precision of one second in an unsigned 32 bit word (950130...
Definition: TDatime.h:37
Describe directory structure in memory.
Definition: TDirectory.h:34
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:48
This class represents an Internet Protocol (IP) address.
Definition: TInetAddress.h:36
This class defines a UUID (Universally Unique IDentifier), also known as GUIDs (Globally Unique IDent...
Definition: TUUID.h:42
UChar_t fClockSeqLow
Definition: TUUID.h:50
void SetUUIDNumber(UInt_t index)
Definition: TUUID.h:80
UChar_t fClockSeqHiAndReserved
Definition: TUUID.h:49
UInt_t GetUUIDNumber() const
Definition: TUUID.h:79
UChar_t fNode[6]
Definition: TUUID.h:51
void GetCurrentTime(uuid_time_t *timestamp)
Get current time as 60 bit 100ns ticks since whenever.
Definition: TUUID.cxx:330
Int_t CmpTime(uuid_time_t *t1, uuid_time_t *t2)
Compare two time values.
Definition: TUUID.cxx:195
void GetSystemTime(uuid_time_t *timestamp)
Get system time with 100ns precision. Time is since Oct 15, 1582.
Definition: TUUID.cxx:382
virtual ~TUUID()
delete this TUUID
Definition: TUUID.cxx:187
void ReadBuffer(char *&buffer)
Stream UUID from input buffer.
Definition: TUUID.cxx:280
void SetFromString(const char *uuid_str)
Set this UUID to the value specified in uuid ((which must be in TUUID::AsString() format).
Definition: TUUID.cxx:208
void Format(UShort_t clockseq, uuid_time_t ts)
Make a UUID from timestamp, clockseq and node id.
Definition: TUUID.cxx:313
TDatime GetTime() const
Get time from UUID.
Definition: TUUID.cxx:659
UInt_t fTimeLow
index in the list of UUIDs in TProcessUUID
Definition: TUUID.h:46
const char * AsString() const
Return UUID as string. Copy string immediately since it will be reused.
Definition: TUUID.cxx:560
Int_t Sizeof() const
Definition: TUUID.h:85
void GetUUID(UChar_t uuid[16]) const
Return uuid in specified buffer (16 byte = 128 bits).
Definition: TUUID.cxx:684
TInetAddress GetHostAddress() const
Get address of host encoded in UUID.
Definition: TUUID.cxx:646
void SetUUID(const char *uuid_str)
Set this UUID to the value specified in uuid ((which must be in TUUID::AsString() format).
Definition: TUUID.cxx:693
UShort_t Hash() const
Compute 16-bit hash value of the UUID.
Definition: TUUID.cxx:575
UShort_t fTimeHiAndVersion
Definition: TUUID.h:48
TUUID()
Create a UUID.
Definition: TUUID.cxx:142
UShort_t fTimeMid
Definition: TUUID.h:47
UInt_t fUUIDIndex
Definition: TUUID.h:45
void GetRandomInfo(UChar_t seed[16])
Get random info based on some machine parameters.
Definition: TUUID.cxx:500
void Print() const
Print UUID.
Definition: TUUID.cxx:552
Int_t Compare(const TUUID &u) const
Compare two UUIDs "lexically" and return.
Definition: TUUID.cxx:625
void FillBuffer(char *&buffer)
Stream UUID into output buffer.
Definition: TUUID.cxx:264
void GetNodeIdentifier()
Get node identifier.
Definition: TUUID.cxx:415
void StreamerV1(TBuffer &b)
Stream UUID from input buffer.
Definition: TUUID.cxx:298
UInt_t low
Definition: TUUID.h:55
UInt_t high
Definition: TUUID.h:54
auto * t1
Definition: textangle.C:20