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 Private Member Functions | Private Attributes
PhysicsTools::AtomicId Class Reference

Cheap generic unique keyword identifier class. More...

#include <AtomicId.h>

Public Member Functions

 AtomicId () throw ()
 
 AtomicId (const AtomicId &orig) throw ()
 
 AtomicId (const char *arg) throw ()
 constructs an AtomicId from a C string More...
 
 AtomicId (const std::string &arg) throw ()
 constructs an AtomicId from a STL string More...
 
 operator bool () const throw ()
 null value check operator More...
 
 operator const char * () const throw ()
 implicit cast to a C string More...
 
 operator std::string () const throw ()
 implicit cast to a STL string More...
 
bool operator!= (const AtomicId &second) const throw ()
 
bool operator< (const AtomicId &second) const throw ()
 
bool operator<= (const AtomicId &second) const throw ()
 
AtomicIdoperator= (const AtomicId &orig) throw ()
 
bool operator== (const AtomicId &second) const throw ()
 
bool operator> (const AtomicId &second) const throw ()
 
bool operator>= (const AtomicId &second) const throw ()
 
 ~AtomicId () throw ()
 

Static Private Member Functions

static AtomicId build (const char *arg) throw ()
 
static const char * lookup (const char *arg) throw ()
 

Private Attributes

const char * string
 

Detailed Description

Cheap generic unique keyword identifier class.

AtomicId is a lightweight class intended to be used for key values e.g. in STL maps. An atomic identifier can be transparently constructed from and converted back to a string, but an instance of AtomicId does not occupy and additional memory and the comparator operators are very cheap. An AtomicId instance requires the size of a pointer and is therefore suited for direct inlining.

Definition at line 32 of file AtomicId.h.

Constructor & Destructor Documentation

PhysicsTools::AtomicId::AtomicId ( )
throw (
)
inline

Definition at line 34 of file AtomicId.h.

34 : string(0) {}
const char * string
Definition: AtomicId.h:69
PhysicsTools::AtomicId::AtomicId ( const AtomicId orig)
throw (
)
inline

Definition at line 35 of file AtomicId.h.

35 : string(orig.string) {}
const char * string
Definition: AtomicId.h:69
PhysicsTools::AtomicId::AtomicId ( const char *  arg)
throw (
)
inline

constructs an AtomicId from a C string

Definition at line 37 of file AtomicId.h.

37 : string(lookup(arg)) {}
const char * string
Definition: AtomicId.h:69
static const char * lookup(const char *arg)
Definition: AtomicId.cc:67
A arg
Definition: Factorize.h:36
PhysicsTools::AtomicId::AtomicId ( const std::string &  arg)
throw (
)
inline

constructs an AtomicId from a STL string

Definition at line 39 of file AtomicId.h.

39  :
40  string(lookup(arg.c_str())) {}
const char * string
Definition: AtomicId.h:69
static const char * lookup(const char *arg)
Definition: AtomicId.cc:67
A arg
Definition: Factorize.h:36
PhysicsTools::AtomicId::~AtomicId ( )
throw (
)
inline

Definition at line 41 of file AtomicId.h.

41 {}

Member Function Documentation

static AtomicId PhysicsTools::AtomicId::build ( const char *  arg)
throw (
)
inlinestaticprivate

Definition at line 66 of file AtomicId.h.

References lumiQueryAPI::q, and string.

66 { AtomicId q; q.string = arg; return q; }
A arg
Definition: Factorize.h:36
const char * PhysicsTools::AtomicId::lookup ( const char *  arg)
throw (
)
staticprivate

Definition at line 67 of file AtomicId.cc.

References PhysicsTools::getAtomicIdCache().

68 {
69  if (string)
70  return getAtomicIdCache().findOrInsert(string);
71 
72  return 0;
73 }
static IdCache & getAtomicIdCache()
Definition: AtomicId.cc:61
PhysicsTools::AtomicId::operator bool ( ) const
throw (
)
inline

null value check operator

Definition at line 51 of file AtomicId.h.

52  { return string != 0; }
PhysicsTools::AtomicId::operator const char * ( ) const
throw (
)
inline

implicit cast to a C string

Definition at line 47 of file AtomicId.h.

References string.

48  { return string; }
const char * string
Definition: AtomicId.h:69
PhysicsTools::AtomicId::operator std::string ( ) const
throw (
)
inline

implicit cast to a STL string

Definition at line 55 of file AtomicId.h.

56  { return std::string(string); }
bool PhysicsTools::AtomicId::operator!= ( const AtomicId second) const
throw (
)
inline

Definition at line 59 of file AtomicId.h.

References edm::second().

59 { return string != second.string; }
U second(std::pair< T, U > const &p)
bool PhysicsTools::AtomicId::operator< ( const AtomicId second) const
throw (
)
inline

Definition at line 60 of file AtomicId.h.

References edm::second().

60 { return string < second.string; }
U second(std::pair< T, U > const &p)
bool PhysicsTools::AtomicId::operator<= ( const AtomicId second) const
throw (
)
inline

Definition at line 61 of file AtomicId.h.

References edm::second().

61 { return string <= second.string; }
U second(std::pair< T, U > const &p)
AtomicId& PhysicsTools::AtomicId::operator= ( const AtomicId orig)
throw (
)
inline

Definition at line 43 of file AtomicId.h.

References string.

44  { string = orig.string; return *this; }
bool PhysicsTools::AtomicId::operator== ( const AtomicId second) const
throw (
)
inline

Definition at line 58 of file AtomicId.h.

References edm::second().

58 { return string == second.string; }
U second(std::pair< T, U > const &p)
bool PhysicsTools::AtomicId::operator> ( const AtomicId second) const
throw (
)
inline

Definition at line 62 of file AtomicId.h.

References edm::second().

62 { return string > second.string; }
U second(std::pair< T, U > const &p)
bool PhysicsTools::AtomicId::operator>= ( const AtomicId second) const
throw (
)
inline

Definition at line 63 of file AtomicId.h.

References edm::second().

63 { return string >= second.string; }
U second(std::pair< T, U > const &p)

Member Data Documentation

const char* PhysicsTools::AtomicId::string
private

Definition at line 69 of file AtomicId.h.

Referenced by build(), operator const char *(), and operator=().