The Gaudi Framework  v36r9p1 (5c15b2bb)
GaudiAlg::ID Class Reference

#include <GaudiAlg/GaudiHistoID.h>

Collaboration diagram for GaudiAlg::ID:

Public Types

typedef int NumericID
 type for internal numeric ID More...
 
typedef std::string LiteralID
 type for internal literal ID More...
 

Public Member Functions

 ID (const NumericID id=-1)
 Implicit constructor from a numeric ID. More...
 
 ID (LiteralID &&id)
 Implicit 'move' constructor from a literal ID. More...
 
 ID (const LiteralID &id)
 Implicit 'copy' constructor from a literal ID. More...
 
 ID (const char *id)
 Implicit constructor from a literal ID. More...
 
 ~ID ()=default
 Destructor. More...
 
bool numeric () const noexcept
 Is this ID numeric. More...
 
bool literal () const noexcept
 Is this ID numeric. More...
 
bool undefined () const noexcept
 Is this ID undefined. More...
 
const LiteralIDliteralID () const noexcept
 Returns the ID as a LiteralID. More...
 
NumericID numericID () const noexcept
 Returns the numerical ID. More...
 
GAUDI_API LiteralID idAsString () const
 Return ID as string, for both numeric and literal IDs. More...
 
 operator std::string () const
 cast operator to std::string More...
 
bool operator== (const ID &id) const noexcept
 Implement the operator == Implementation depends on type of ID. More...
 
bool operator!= (const ID &id) const
 Implement the != operator, using the == operator. More...
 
bool operator< (const ID &id) const noexcept
 Implement the operator < Implementation depends on type of ID. More...
 
GAUDI_API std::ostreamfillStream (std::ostream &s) const
 
bool operator! () const noexcept
 good ID? More...
 
size_t hash () const noexcept
 return hash value (for python) More...
 
size_t __hash__ () const noexcept
 return hash value (for python) More...
 

Private Attributes

NumericID m_nID { -1 }
 Internal numeric ID. More...
 
LiteralID m_aID
 Internal alpha-numeric ID. More...
 
size_t m_hash { 0 }
 the hash value of ID More...
 

Detailed Description

ID class for Histogram and Ntuples. Internally handles both numeric and string like IDs

Author
Chris Jones Chris.nosp@m.toph.nosp@m.er.Ro.nosp@m.b.Jo.nosp@m.nes@c.nosp@m.ern..nosp@m.ch
Date
2005-08-12

Definition at line 53 of file GaudiHistoID.h.

Member Typedef Documentation

◆ LiteralID

type for internal literal ID

Definition at line 59 of file GaudiHistoID.h.

◆ NumericID

type for internal numeric ID

Definition at line 57 of file GaudiHistoID.h.

Constructor & Destructor Documentation

◆ ID() [1/4]

GaudiAlg::ID::ID ( const NumericID  id = -1)
inline

Implicit constructor from a numeric ID.

Definition at line 64 of file GaudiHistoID.h.

64 : m_nID( id ), m_hash( boost::hash_value( id ) ) {}

◆ ID() [2/4]

GaudiAlg::ID::ID ( LiteralID &&  id)
inline

Implicit 'move' constructor from a literal ID.

Definition at line 66 of file GaudiHistoID.h.

66 : m_aID( std::move( id ) ), m_hash( boost::hash_value( m_aID ) ) {}

◆ ID() [3/4]

GaudiAlg::ID::ID ( const LiteralID id)
inline

Implicit 'copy' constructor from a literal ID.

Definition at line 68 of file GaudiHistoID.h.

68 : m_aID( id ), m_hash( boost::hash_value( m_aID ) ) {}

◆ ID() [4/4]

GaudiAlg::ID::ID ( const char *  id)
inline

Implicit constructor from a literal ID.

Definition at line 70 of file GaudiHistoID.h.

70 : m_aID( id ), m_hash( boost::hash_value( m_aID ) ) {}

◆ ~ID()

GaudiAlg::ID::~ID ( )
default

Destructor.

Member Function Documentation

◆ __hash__()

size_t GaudiAlg::ID::__hash__ ( ) const
inlinenoexcept

return hash value (for python)

Definition at line 124 of file GaudiHistoID.h.

124 { return hash(); }

◆ fillStream()

std::ostream & GaudiAlg::ID::fillStream ( std::ostream s) const

Definition at line 38 of file GaudiHistoID.cpp.

38  {
39  if ( numeric() ) {
40  s << numericID();
41  } else if ( literal() ) {
42  s << literalID();
43  } else {
44  s << "UNDEFINED";
45  }
46  return s;
47 }

◆ hash()

size_t GaudiAlg::ID::hash ( ) const
inlinenoexcept

return hash value (for python)

Definition at line 122 of file GaudiHistoID.h.

122 { return m_hash; }

◆ idAsString()

GaudiAlg::ID::LiteralID GaudiAlg::ID::idAsString ( ) const

Return ID as string, for both numeric and literal IDs.

Definition at line 30 of file GaudiHistoID.cpp.

30  {
32  fillStream( s );
33  return s.str();
34 }

◆ literal()

bool GaudiAlg::ID::literal ( ) const
inlinenoexcept

Is this ID numeric.

Definition at line 76 of file GaudiHistoID.h.

76 { return !m_aID.empty(); }

◆ literalID()

const LiteralID& GaudiAlg::ID::literalID ( ) const
inlinenoexcept

Returns the ID as a LiteralID.

Definition at line 80 of file GaudiHistoID.h.

80 { return m_aID; }

◆ numeric()

bool GaudiAlg::ID::numeric ( ) const
inlinenoexcept

Is this ID numeric.

Definition at line 74 of file GaudiHistoID.h.

74 { return -1 != m_nID; }

◆ numericID()

NumericID GaudiAlg::ID::numericID ( ) const
inlinenoexcept

Returns the numerical ID.

Definition at line 82 of file GaudiHistoID.h.

82 { return m_nID; }

◆ operator std::string()

GaudiAlg::ID::operator std::string ( ) const
inline

cast operator to std::string

Definition at line 86 of file GaudiHistoID.h.

86 { return idAsString(); }

◆ operator!()

bool GaudiAlg::ID::operator! ( ) const
inlinenoexcept

good ID?

Definition at line 117 of file GaudiHistoID.h.

117 { return undefined(); }

◆ operator!=()

bool GaudiAlg::ID::operator!= ( const ID id) const
inline

Implement the != operator, using the == operator.

Definition at line 98 of file GaudiHistoID.h.

98 { return !( *this == id ); }

◆ operator<()

bool GaudiAlg::ID::operator< ( const ID id) const
inlinenoexcept

Implement the operator < Implementation depends on type of ID.

Returns
boolean indicating the order of the IDs

Definition at line 103 of file GaudiHistoID.h.

103  {
104  return
105  // hash () < id.hash () ? true :
106  // hash () > id.hash () ? false :
107  numeric() && id.numeric() ? numericID() < id.numericID()
108  : literal() && id.literal() ? literalID() < id.literalID()
109  : idAsString() < id.idAsString();
110  }

◆ operator==()

bool GaudiAlg::ID::operator== ( const ID id) const
inlinenoexcept

Implement the operator == Implementation depends on type of ID.

Returns
boolean indicating if the IDs are equal

Definition at line 91 of file GaudiHistoID.h.

91  {
92  return hash() != id.hash() ? false
93  : numeric() && id.numeric() ? id.numericID() == numericID()
94  : literal() && id.literal() ? id.literalID() == literalID()
95  : idAsString() == id.idAsString();
96  }

◆ undefined()

bool GaudiAlg::ID::undefined ( ) const
inlinenoexcept

Is this ID undefined.

Definition at line 78 of file GaudiHistoID.h.

78 { return !numeric() && !literal(); }

Member Data Documentation

◆ m_aID

LiteralID GaudiAlg::ID::m_aID
private

Internal alpha-numeric ID.

Definition at line 131 of file GaudiHistoID.h.

◆ m_hash

size_t GaudiAlg::ID::m_hash { 0 }
private

the hash value of ID

Definition at line 136 of file GaudiHistoID.h.

◆ m_nID

NumericID GaudiAlg::ID::m_nID { -1 }
private

Internal numeric ID.

Definition at line 129 of file GaudiHistoID.h.


The documentation for this class was generated from the following files:
std::move
T move(T... args)
gaudirun.s
string s
Definition: gaudirun.py:346
GaudiAlg::ID::hash
size_t hash() const noexcept
return hash value (for python)
Definition: GaudiHistoID.h:122
GaudiAlg::ID::numericID
NumericID numericID() const noexcept
Returns the numerical ID.
Definition: GaudiHistoID.h:82
Tuples::hash_value
std::size_t hash_value(TupleID const &b)
Definition: TupleID.h:33
GaudiAlg::ID::fillStream
GAUDI_API std::ostream & fillStream(std::ostream &s) const
Definition: GaudiHistoID.cpp:38
GaudiAlg::ID::undefined
bool undefined() const noexcept
Is this ID undefined.
Definition: GaudiHistoID.h:78
GaudiAlg::ID::m_hash
size_t m_hash
the hash value of ID
Definition: GaudiHistoID.h:136
std::ostringstream
STL class.
std::string::empty
T empty(T... args)
GaudiAlg::ID::m_nID
NumericID m_nID
Internal numeric ID.
Definition: GaudiHistoID.h:129
GaudiAlg::ID::m_aID
LiteralID m_aID
Internal alpha-numeric ID.
Definition: GaudiHistoID.h:131
GaudiAlg::ID::literalID
const LiteralID & literalID() const noexcept
Returns the ID as a LiteralID.
Definition: GaudiHistoID.h:80
GaudiAlg::ID::idAsString
GAUDI_API LiteralID idAsString() const
Return ID as string, for both numeric and literal IDs.
Definition: GaudiHistoID.cpp:30
GaudiAlg::ID::numeric
bool numeric() const noexcept
Is this ID numeric.
Definition: GaudiHistoID.h:74
GaudiAlg::ID::literal
bool literal() const noexcept
Is this ID numeric.
Definition: GaudiHistoID.h:76