uuid.h

Engine/source/core/util/uuid.h

More...

Classes:

class

A universally unique identifier.

Namespaces:

namespace
namespace

Detailed Description

 1
 2//-----------------------------------------------------------------------------
 3// Copyright (c) 2012 GarageGames, LLC
 4//
 5// Permission is hereby granted, free of charge, to any person obtaining a copy
 6// of this software and associated documentation files (the "Software"), to
 7// deal in the Software without restriction, including without limitation the
 8// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
 9// sell copies of the Software, and to permit persons to whom the Software is
10// furnished to do so, subject to the following conditions:
11//
12// The above copyright notice and this permission notice shall be included in
13// all copies or substantial portions of the Software.
14//
15// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
20// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
21// IN THE SOFTWARE.
22//-----------------------------------------------------------------------------
23
24#ifndef _TORQUE_UUID_H_
25#define _TORQUE_UUID_H_
26
27#ifndef _PLATFORM_H_
28   #include "platform/platform.h"
29#endif
30
31
32namespace Torque
33{
34   /// A universally unique identifier.
35   class UUID
36   {
37      public:
38      
39         typedef void Parent;
40         
41      protected:
42
43         U32   a;
44         U16   b;
45         U16   c;
46         U8    d;
47         U8    e;
48         U8    f[ 6 ];
49         
50         static UUID smNull;
51         
52      public:
53      
54         UUID()
55         {
56            dMemset( this, 0, sizeof( UUID ) );
57         }
58         
59         ///
60         bool isNull() const { return ( *this == smNull ); }
61         
62         /// Generate a new universally unique identifier (UUID).
63         void generate();
64         
65         /// Convert the given universally unique identifier to a printed string
66         /// representation.
67         String toString() const;
68         
69         /// Parse a text string generated by UUIDToString back into a
70         /// universally unique identifier (UUID).
71         bool fromString( const char* str );
72
73         /// Return a hash value for this UUID.
74         U32 getHash() const;
75
76         bool operator==( const UUID& uuid ) const
77         {
78            return ( dMemcmp( this, &uuid, sizeof( UUID ) ) == 0 );
79         }
80         bool operator!=( const UUID& uuid ) const
81         {
82            return !( *this == uuid );
83         }
84   };
85}
86
87namespace DictHash
88{
89   inline U32 hash( const Torque::UUID& uuid )
90   {
91      return uuid.getHash();
92   }
93}
94
95#endif // !_TORQUE_UUID_H_
96