CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Public Attributes
edm::Guid Class Reference

#include <POOLCore/Guid.h>

Public Member Functions

Guid const & fromString (std::string const &s)
 Automatic conversion to string representation. More...
 
 Guid ()
 Standard constructor (No initialization of data for performance reasons) More...
 
 Guid (bool assign)
 Standard constructor (With possible initialization) More...
 
 Guid (char const *s)
 Constructor for Guid from char*. More...
 
 Guid (std::string const &s)
 Constructor for Guid from string. More...
 
 Guid (Guid const &c)
 Copy constructor. More...
 
bool operator!= (Guid const &g) const
 Non-equality operator. More...
 
bool operator< (Guid const &g) const
 Smaller operator. More...
 
Guidoperator= (Guid const &g)
 Assignment operator. More...
 
bool operator== (Guid const &g) const
 Equality operator. More...
 
std::string const toString () const
 Automatic conversion from string reprentation. More...
 

Static Public Member Functions

static void create (Guid &guid)
 Create a new Guid. More...
 
static Guid const & null ()
 NULL-Guid: static class method. More...
 

Public Attributes

unsigned int Data1
 
unsigned short Data2
 
unsigned short Data3
 
unsigned char Data4 [8]
 

Detailed Description

Description:

Encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number). Note: This class may not have a virual destructor

Author
M.Frank Initial version using COM on WIN32
Zhen Xie Include DCE implementation for linux
Version
1.1
Date
03/09/2002

Definition at line 23 of file Guid.h.

Constructor & Destructor Documentation

edm::Guid::Guid ( )
inline

Standard constructor (No initialization of data for performance reasons)

Definition at line 31 of file Guid.h.

31 { }
edm::Guid::Guid ( bool  assign)
inlineexplicit

Standard constructor (With possible initialization)

Definition at line 33 of file Guid.h.

References create().

33 { if (assign) create(*this); }
static void create(Guid &guid)
Create a new Guid.
Definition: Guid.cc:30
#define assign
Definition: vmac.h:54
edm::Guid::Guid ( char const *  s)
inlineexplicit

Constructor for Guid from char*.

Definition at line 35 of file Guid.h.

References fromString().

35 { fromString(s); }
Guid const & fromString(std::string const &s)
Automatic conversion to string representation.
Definition: Guid.cc:53
string s
Definition: asciidump.py:422
edm::Guid::Guid ( std::string const &  s)
inlineexplicit

Constructor for Guid from string.

Definition at line 37 of file Guid.h.

References fromString().

37 { fromString(s); }
Guid const & fromString(std::string const &s)
Automatic conversion to string representation.
Definition: Guid.cc:53
string s
Definition: asciidump.py:422
edm::Guid::Guid ( Guid const &  c)
inline

Copy constructor.

Definition at line 39 of file Guid.h.

References trackerHits::c.

39 { *this = c; }

Member Function Documentation

void edm::Guid::create ( Guid guid)
static

Create a new Guid.

Definition at line 30 of file Guid.cc.

References debug_cff::d1, Data1, Data2, Data3, Data4, and i.

Referenced by edm::createGlobalIdentifier(), and Guid().

30  {
31  uuid_t me_;
32  ::uuid_generate_time(me_);
33  unsigned int *d1 = reinterpret_cast<unsigned int*>(me_);
34  unsigned short *d2 = reinterpret_cast<unsigned short*>(me_+4);
35  unsigned short *d3 = reinterpret_cast<unsigned short*>(me_+6);
36  guid.Data1 = *d1;
37  guid.Data2 = *d2;
38  guid.Data3 = *d3;
39  for (int i = 0; i < 8; ++i){
40  guid.Data4[i]=me_[i+8];
41  }
42  }
int i
Definition: DBlmapReader.cc:9
tuple d1
Definition: debug_cff.py:7
Guid const & edm::Guid::fromString ( std::string const &  s)

Automatic conversion to string representation.

Definition at line 53 of file Guid.cc.

References compareJSON::const, Data1, Data2, Data3, Data4, edm::fmt_Guid, L1TEmulatorMonitor_cff::p, and lumiQueryAPI::q.

Referenced by Guid().

53  {
54  // Note: This looks funny, but the specs for sscanf formats say
55  // that the space of a pointer in the ellipsis may only be
56  // integer or short. Hence one has to reserve a bit more space
57  // otherwise the stack gets corrupted.
58  unsigned char d[8];
59  ::sscanf( source.c_str(), fmt_Guid, &Data1, &Data2, &Data3,
60  &Data4[0], &Data4[1], &Data4[2], &Data4[3], &d[0], &d[1], &d[2], &d[3]);
61  //*(int*)&Data4[4] = *(int*)d;
62  unsigned int * p = reinterpret_cast<unsigned int *>(&Data4[4]);
63  unsigned int const* q = reinterpret_cast<unsigned int const*>(&d[0]);
64  *p = *q;
65  return *this;
66  }
static char const * fmt_Guid
Definition: Guid.cc:18
unsigned short Data2
Definition: Guid.h:26
unsigned int Data1
Definition: Guid.h:25
unsigned short Data3
Definition: Guid.h:27
unsigned char Data4[8]
Definition: Guid.h:28
string const
Definition: compareJSON.py:14
Guid const & edm::Guid::null ( )
static

NULL-Guid: static class method.

Definition at line 25 of file Guid.cc.

References edm::clid_null().

25  {
26  return clid_null;
27  }
static Guid const clid_null(std::string("00000000-0000-0000-0000-000000000000"))
bool edm::Guid::operator!= ( Guid const &  g) const
inline

Non-equality operator.

Definition at line 68 of file Guid.h.

References operator==().

68  {
69  return !(this->operator == (g));
70  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
bool operator==(Guid const &g) const
Equality operator.
Definition: Guid.h:56
bool edm::Guid::operator< ( Guid const &  g) const

Smaller operator.

Definition at line 68 of file Guid.cc.

References Data1.

68  {
69  return ::memcmp(&g.Data1, &Data1, 16) < 0;
70  }
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
unsigned int Data1
Definition: Guid.h:25
Guid& edm::Guid::operator= ( Guid const &  g)
inline

Assignment operator.

Definition at line 41 of file Guid.h.

References compareJSON::const, Data1, Data2, Data3, Data4, L1TEmulatorMonitor_cff::p, and lumiQueryAPI::q.

41  {
42  if (this != &g) {
43  Data1 = g.Data1;
44  Data2 = g.Data2;
45  Data3 = g.Data3;
46  unsigned int * p = reinterpret_cast<unsigned int *>(&Data4[0]);
47  unsigned int const* q = reinterpret_cast<unsigned int const*>(&g.Data4[0]);
48  *(p+1) = *(q+1);
49  *p = *q;
50  }
51  return *this;
52  }
unsigned short Data2
Definition: Guid.h:26
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
unsigned int Data1
Definition: Guid.h:25
unsigned short Data3
Definition: Guid.h:27
unsigned char Data4[8]
Definition: Guid.h:28
string const
Definition: compareJSON.py:14
bool edm::Guid::operator== ( Guid const &  g) const
inline

Equality operator.

Definition at line 56 of file Guid.h.

References compareJSON::const, Data1, Data2, Data3, Data4, L1TEmulatorMonitor_cff::p, and lumiQueryAPI::q.

Referenced by operator!=().

56  {
57  if (this != & g) {
58  if (Data1 != g.Data1) return false;
59  if (Data2 != g.Data2) return false;
60  if (Data3 != g.Data3) return false;
61  unsigned int const* p = reinterpret_cast<unsigned int const*>(&Data4[0]);
62  unsigned int const* q = reinterpret_cast<unsigned int const*>(&g.Data4[0]);
63  return *p == *q && *(p+1) == *(q+1);
64  }
65  return true;
66  }
unsigned short Data2
Definition: Guid.h:26
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
unsigned int Data1
Definition: Guid.h:25
unsigned short Data3
Definition: Guid.h:27
unsigned char Data4[8]
Definition: Guid.h:28
string const
Definition: compareJSON.py:14
std::string const edm::Guid::toString ( ) const

Automatic conversion from string reprentation.

Definition at line 44 of file Guid.cc.

References Data1, Data2, Data3, Data4, edm::fmt_Guid, and runonSM::text.

Referenced by edm::createGlobalIdentifier(), FUShmDQMOutputService::FUShmDQMOutputService(), and edm::FUShmOutputModule::FUShmOutputModule().

44  {
45  char text[128];
46  ::sprintf(text, fmt_Guid,
47  Data1, Data2, Data3,
48  Data4[0], Data4[1], Data4[2], Data4[3],
49  Data4[4], Data4[5], Data4[6], Data4[7]);
50  return text;
51  }
static char const * fmt_Guid
Definition: Guid.cc:18
unsigned short Data2
Definition: Guid.h:26
unsigned int Data1
Definition: Guid.h:25
unsigned short Data3
Definition: Guid.h:27
tuple text
Definition: runonSM.py:42
unsigned char Data4[8]
Definition: Guid.h:28

Member Data Documentation

unsigned int edm::Guid::Data1

Definition at line 25 of file Guid.h.

Referenced by create(), fromString(), operator<(), operator=(), operator==(), and toString().

unsigned short edm::Guid::Data2

Definition at line 26 of file Guid.h.

Referenced by create(), fromString(), operator=(), operator==(), and toString().

unsigned short edm::Guid::Data3

Definition at line 27 of file Guid.h.

Referenced by create(), fromString(), operator=(), operator==(), and toString().

unsigned char edm::Guid::Data4[8]

Definition at line 28 of file Guid.h.

Referenced by create(), fromString(), operator=(), operator==(), and toString().