The Gaudi Framework  master (37c0b60a)
InterfaceID Class Referencefinal

#include <GaudiKernel/Kernel.h>

Public Member Functions

constexpr InterfaceID (unsigned long id, unsigned long major, unsigned long minor=0)
 constructor from components More...
 
 InterfaceID (const char *name, unsigned long major, unsigned long minor=0)
 constructor from components More...
 
constexpr unsigned long id () const
 get the interface identifier More...
 
constexpr unsigned long majorVersion () const
 get the major version of the interface More...
 
constexpr unsigned long minorVersion () const
 get the minor version of the interface More...
 
constexpr bool versionMatch (const InterfaceID &iid) const
 check compatibility. More...
 
constexpr bool fullMatch (const InterfaceID &iid) const
 check full compatibility. More...
 
constexpr bool operator== (const InterfaceID &iid) const
 compare operator More...
 

Static Public Member Functions

static unsigned int hash32 (const char *key)
 Jenkins one-at-time hash function – see https://en.wikipedia.org/wiki/Jenkins_hash_function. More...
 

Private Attributes

unsigned long m_id
 
unsigned long m_major_ver
 
unsigned long m_minor_ver
 

Friends

std::ostreamoperator<< (std::ostream &s, const InterfaceID &id)
 ostream operator for InterfaceID. Needed by PluginSvc More...
 

Detailed Description

Interface ID class. It consists of several fields: interface number, major version number and minor version number. Interface number should be allocated globally. The major and minor version numbers are used for checking compatibility between interface versions.

Author
Pere Mato
Sebastien Ponce

Definition at line 39 of file IInterface.h.

Constructor & Destructor Documentation

◆ InterfaceID() [1/2]

constexpr InterfaceID::InterfaceID ( unsigned long  id,
unsigned long  major,
unsigned long  minor = 0 
)
inlineconstexpr

constructor from components

Definition at line 47 of file IInterface.h.

48  : m_id( id ), m_major_ver( major ), m_minor_ver( minor ) {}

◆ InterfaceID() [2/2]

InterfaceID::InterfaceID ( const char *  name,
unsigned long  major,
unsigned long  minor = 0 
)
inline

constructor from components

Definition at line 50 of file IInterface.h.

51  : m_id( hash32( name ) ), m_major_ver( major ), m_minor_ver( minor ) {}

Member Function Documentation

◆ fullMatch()

constexpr bool InterfaceID::fullMatch ( const InterfaceID iid) const
inlineconstexpr

check full compatibility.

Definition at line 71 of file IInterface.h.

71  {
72  return ( id() == iid.id() && majorVersion() == iid.majorVersion() && minorVersion() == iid.minorVersion() );
73  }

◆ hash32()

static unsigned int InterfaceID::hash32 ( const char *  key)
inlinestatic

Jenkins one-at-time hash function – see https://en.wikipedia.org/wiki/Jenkins_hash_function.

Definition at line 77 of file IInterface.h.

77  {
78  unsigned int hash = 0;
79  for ( const char* k = key; *k; ++k ) {
80  hash += *k;
81  hash += ( hash << 10 );
82  hash ^= ( hash >> 6 );
83  }
84  hash += ( hash << 3 );
85  hash ^= ( hash >> 11 );
86  hash += ( hash << 15 );
87  return hash;
88  }

◆ id()

constexpr unsigned long InterfaceID::id ( ) const
inlineconstexpr

get the interface identifier

Definition at line 59 of file IInterface.h.

59 { return m_id; }

◆ majorVersion()

constexpr unsigned long InterfaceID::majorVersion ( ) const
inlineconstexpr

get the major version of the interface

Definition at line 61 of file IInterface.h.

61 { return m_major_ver; }

◆ minorVersion()

constexpr unsigned long InterfaceID::minorVersion ( ) const
inlineconstexpr

get the minor version of the interface

Definition at line 63 of file IInterface.h.

63 { return m_minor_ver; }

◆ operator==()

constexpr bool InterfaceID::operator== ( const InterfaceID iid) const
inlineconstexpr

compare operator

Definition at line 75 of file IInterface.h.

75 { return fullMatch( iid ); }

◆ versionMatch()

constexpr bool InterfaceID::versionMatch ( const InterfaceID iid) const
inlineconstexpr

check compatibility.

The major version is check and the minor one should be bigger or equal

Definition at line 67 of file IInterface.h.

67  {
68  return ( id() == iid.id() && majorVersion() == iid.majorVersion() && minorVersion() >= iid.minorVersion() );
69  }

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream s,
const InterfaceID id 
)
friend

ostream operator for InterfaceID. Needed by PluginSvc

Definition at line 92 of file IInterface.h.

92  {
93  s << "IID_" << id.id();
94  return s;
95  }

Member Data Documentation

◆ m_id

unsigned long InterfaceID::m_id
private

Definition at line 99 of file IInterface.h.

◆ m_major_ver

unsigned long InterfaceID::m_major_ver
private

Definition at line 100 of file IInterface.h.

◆ m_minor_ver

unsigned long InterfaceID::m_minor_ver
private

Definition at line 101 of file IInterface.h.


The documentation for this class was generated from the following file:
InterfaceID::fullMatch
constexpr bool fullMatch(const InterfaceID &iid) const
check full compatibility.
Definition: IInterface.h:71
gaudirun.s
string s
Definition: gaudirun.py:346
InterfaceID::m_id
unsigned long m_id
Definition: IInterface.h:99
InterfaceID::id
constexpr unsigned long id() const
get the interface identifier
Definition: IInterface.h:59
InterfaceID::m_minor_ver
unsigned long m_minor_ver
Definition: IInterface.h:101
InterfaceID::majorVersion
constexpr unsigned long majorVersion() const
get the major version of the interface
Definition: IInterface.h:61
InterfaceID::m_major_ver
unsigned long m_major_ver
Definition: IInterface.h:100
InterfaceID::minorVersion
constexpr unsigned long minorVersion() const
get the minor version of the interface
Definition: IInterface.h:63
ConditionsStallTest.name
name
Definition: ConditionsStallTest.py:77
InterfaceID::hash32
static unsigned int hash32(const char *key)
Jenkins one-at-time hash function – see https://en.wikipedia.org/wiki/Jenkins_hash_function.
Definition: IInterface.h:77
ProduceConsume.key
key
Definition: ProduceConsume.py:84