-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathguid.h
130 lines (110 loc) · 3.54 KB
/
guid.h
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
/*
* guid.h
*
* Globally Unique Identifier
*
* Open H323 Library
*
* Copyright (c) 1998-2001 Equivalence Pty. Ltd.
*
* The contents of this file are subject to the Mozilla Public License
* Version 1.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.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
* the License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is Open H323 Library.
*
* The Initial Developer of the Original Code is Equivalence Pty. Ltd.
*
* Contributor(s): ______________________________________.
*
* $Id$
*
*/
#ifndef __OPAL_GUID_H
#define __OPAL_GUID_H
#ifdef P_USE_PRAGMA
#pragma interface
#endif
class PASN_OctetString;
///////////////////////////////////////////////////////////////////////////////
/**Globally unique ID definition.
This implements a 128 bit globally unique ID as required by many protocols
and software systems. The value is constructed in such a way as to make a
duplicate anywhere in the world highly unlikely.
*/
class OpalGloballyUniqueID : public PBYTEArray
{
PCLASSINFO(OpalGloballyUniqueID, PBYTEArray);
public:
/**@name Construction */
//@{
/**Create a new ID.
The ID created with this will be initialised to a globally unique ID
as per specification.
*/
OpalGloballyUniqueID();
/**Create an ID from a C string of hex (as produced by AsString()).
A useful construct is to construct a OpalGloballyUniqueID() with
NULL which produces an all zero GUID, etectable with the isNULL()
function.
*/
OpalGloballyUniqueID(
const char * cstr ///< C string to convert
);
/**Create an ID from a PString of hex (as produced by AsString()).
*/
OpalGloballyUniqueID(
const PString & str ///< String of hex to convert
);
/**Create an ID from an octet string in an ASN PDU.
*/
OpalGloballyUniqueID(
const PASN_OctetString & ostr ///< Octet string from ASN to convert
);
//@}
/**@name Overrides from PObject */
//@{
/**Standard stream print function.
The PObject class has a << operator defined that calls this function
polymorphically.
*/
virtual void PrintOn(
ostream & strm ///< Stream to output text representation
) const;
/**Standard stream read function.
The PObject class has a >> operator defined that calls this function
polymorphically.
*/
virtual void ReadFrom(
istream & strm ///< Stream to output text representation
);
/**Create a clone of the ID.
The duplicate ID has the same value as the source. Required for having
this object as a key in dictionaries.
*/
virtual PObject * Clone() const;
/**Get the hash value for the ID.
Creates a number based on the ID value for use in the hash table of
a dictionary. Required for having this object as a key in dictionaries.
*/
virtual PINDEX HashFunction() const;
//@}
/**@name Operations */
//@{
/**Convert the ID to human readable string.
*/
PString AsString() const;
/**Test if the GUID is null, ie consists of all zeros.
*/
PBoolean IsNULL() const;
bool operator!() const { return !IsNULL(); }
//@}
};
#endif // __OPAL_GUID_H
/////////////////////////////////////////////////////////////////////////////