| The Gaudi Framework v32r1 (f65d50dc)

Classes | Public Member Functions | Private Attributes | List of all members
AIDA::Annotation Class Reference

Implementation of the AIDA IAnnotation interface class. More...

`#include <GaudiCommonSvc/Annotation.h>`

Inheritance diagram for AIDA::Annotation:
[legend]
Collaboration diagram for AIDA::Annotation:
[legend]

## Classes
struct | AnnotationItem
| Internal private annotation item class. More...

## Public Member Functions
bool | addItem (const std::string &key, const std::string &value, bool sticky=false) override
| Add a key/value pair with a given sticky. More...
bool | removeItem (const std::string &key) override
| Remove the item indicated by a given key. More...
std::string | value (const std::string &key) const override
| Retrieve the value for a given key. More...
void | setValue (const std::string &key, const std::string &value) override
| Set value for a given key. More...
void | setSticky (const std::string &key, bool sticky) override
| Set sticky for a given key. More...
int | size () const override
| Get the number of items in the Annotation. More...
std::string | key (int index) const override
| Individual access to the Annotation-items. More...
std::string | value (int index) const override
void | reset () override
| Remove all the non-sticky items. More...

## Private Attributes
std::vector< AnnotationItem > | m_annotationItems
| The vector of the annotation items. More...
std::map< std::string, unsigned int > | m_identifiers
| The map of strings to identifiers. More...
std::string | emptyString

## Detailed Description

Implementation of the AIDA IAnnotation interface class.

Definition at line 16 of file Annotation.h.

## Member Function Documentation

## ◆ addItem()

bool AIDA::Annotation::addItem | ( | const std::string & | key,
|  | const std::string & | value,
|  | bool | sticky = `false`
| ) |  |
| inline override

Add a key/value pair with a given sticky.

Definition at line 67 of file Annotation.h.

67 {
68 if ( m_identifiers.find( key ) != m_identifiers.end() ) return false;
69 m_annotationItems.emplace_back( key, value, sticky );
70 m_identifiers.emplace( key, m_annotationItems.size() - 1 );
71 return true;
72 }
AIDA::Annotation::key
std::string key(int index) const override
Individual access to the Annotation-items.
Definition: Annotation.h:119
std::map::end
T end(T... args)
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::m_identifiers
std::map< std::string, unsigned int > m_identifiers
The map of strings to identifiers.
Definition: Annotation.h:61
std::map::find
T find(T... args)
std::map::emplace
T emplace(T... args)
AIDA::Annotation::value
std::string value(const std::string &key) const override
Retrieve the value for a given key.
Definition: Annotation.h:98

## ◆ key()

std::string AIDA::Annotation::key | ( | int | index | ) | const
| inline override

Individual access to the Annotation-items.

Definition at line 119 of file Annotation.h.

119 {
120 if ( index < 0 || index >= static_cast<int>( m_annotationItems.size() ) ) return emptyString;
121 return m_annotationItems[index].m_key;
122 }
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::emptyString
std::string emptyString
Definition: Annotation.h:63

## ◆ removeItem()

bool AIDA::Annotation::removeItem | ( | const std::string & | key | ) |
| inline override

Remove the item indicated by a given key.

Definition at line 74 of file Annotation.h.

74 {
75 auto iKey = m_identifiers.find( key );
76 if ( iKey == m_identifiers.end() ) return false;
77
78 unsigned int indexToBeRemoved = iKey->second;
79 // check stickness
80
81 if ( m_annotationItems[indexToBeRemoved].m_sticky ) return false;
82
83 // why rebuilding ?
84
85 m_identifiers.clear();
86 std::vector<AnnotationItem> annotationItemsNew;
87 if ( m_annotationItems.size() > 1 ) annotationItemsNew.reserve( m_annotationItems.size() - 1 );
88 for ( unsigned int iItem = 0; iItem < m_annotationItems.size(); ++iItem ) {
89 if ( iItem == indexToBeRemoved ) continue;
90 const auto& item = m_annotationItems[iItem];
91 annotationItemsNew.emplace_back( item.m_key, item.m_value, item.m_sticky );
92 m_identifiers.emplace( item.m_key, annotationItemsNew.size() - 1 );
93 }
94 m_annotationItems = std::move( annotationItemsNew );
95 return true;
96 }
AIDA::Annotation::key
std::string key(int index) const override
Individual access to the Annotation-items.
Definition: Annotation.h:119
std::map::end
T end(T... args)
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
std::map::clear
T clear(T... args)
std::move
T move(T... args)
AIDA::Annotation::m_identifiers
std::map< std::string, unsigned int > m_identifiers
The map of strings to identifiers.
Definition: Annotation.h:61
std::map::find
T find(T... args)
std::vector::size
T size(T... args)
std::vector
STL class.
std::map::emplace
T emplace(T... args)
std::vector::reserve
T reserve(T... args)
std::vector::emplace_back
T emplace_back(T... args)

## ◆ reset()

void AIDA::Annotation::reset | ( |  | ) |
| inline override

Remove all the non-sticky items.

Definition at line 129 of file Annotation.h.

129 {
130 // Collect the non-sticky items
131 std::vector<std::string> itemsToRemove;
132 itemsToRemove.reserve( size() );
133 for ( const auto& item : m_annotationItems ) {
134 if ( !item.m_sticky ) itemsToRemove.push_back( item.m_key );
135 }
136 for ( const auto& i : itemsToRemove ) removeItem( i );
137 }
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::size
int size() const override
Get the number of items in the Annotation.
Definition: Annotation.h:117
std::vector::push_back
T push_back(T... args)
std::vector< std::string >
AIDA::Annotation::removeItem
bool removeItem(const std::string &key) override
Remove the item indicated by a given key.
Definition: Annotation.h:74
std::vector::reserve
T reserve(T... args)

## ◆ setSticky()

void AIDA::Annotation::setSticky | ( | const std::string & | key,
|  | bool | sticky
| ) |  |
| inline override

Set sticky for a given key.

Definition at line 112 of file Annotation.h.

112 {
113 auto iKey = m_identifiers.find( key );
114 if ( iKey != m_identifiers.end() ) m_annotationItems[iKey->second].m_sticky = sticky;
115 }
AIDA::Annotation::key
std::string key(int index) const override
Individual access to the Annotation-items.
Definition: Annotation.h:119
std::map::end
T end(T... args)
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::m_identifiers
std::map< std::string, unsigned int > m_identifiers
The map of strings to identifiers.
Definition: Annotation.h:61
std::map::find
T find(T... args)

## ◆ setValue()

void AIDA::Annotation::setValue | ( | const std::string & | key,
|  | const std::string & | value
| ) |  |
| inline override

Set value for a given key.

Definition at line 103 of file Annotation.h.

103 {
104 auto iKey = m_identifiers.find( key );
105 if ( iKey == m_identifiers.end() )
106 // if not found, then add it
107 addItem( key, value );
108 else
109 m_annotationItems[iKey->second].m_value = value;
110 }
AIDA::Annotation::key
std::string key(int index) const override
Individual access to the Annotation-items.
Definition: Annotation.h:119
std::map::end
T end(T... args)
AIDA::Annotation::addItem
bool addItem(const std::string &key, const std::string &value, bool sticky=false) override
Add a key/value pair with a given sticky.
Definition: Annotation.h:67
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::m_identifiers
std::map< std::string, unsigned int > m_identifiers
The map of strings to identifiers.
Definition: Annotation.h:61
std::map::find
T find(T... args)
AIDA::Annotation::value
std::string value(const std::string &key) const override
Retrieve the value for a given key.
Definition: Annotation.h:98

## ◆ size()

int AIDA::Annotation::size | ( |  | ) | const
| inline override

Get the number of items in the Annotation.

Definition at line 117 of file Annotation.h.

117 { return m_annotationItems.size(); }
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58

## ◆ value() [1/2]

std::string AIDA::Annotation::value | ( | const std::string & | key | ) | const
| inline override

Retrieve the value for a given key.

Definition at line 98 of file Annotation.h.

98 {
99 auto iKey = m_identifiers.find( key );
100 return iKey != m_identifiers.end() ? m_annotationItems[iKey->second].m_value : emptyString;
101 }
AIDA::Annotation::key
std::string key(int index) const override
Individual access to the Annotation-items.
Definition: Annotation.h:119
std::map::end
T end(T... args)
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::emptyString
std::string emptyString
Definition: Annotation.h:63
AIDA::Annotation::m_identifiers
std::map< std::string, unsigned int > m_identifiers
The map of strings to identifiers.
Definition: Annotation.h:61
std::map::find
T find(T... args)

## ◆ value() [2/2]

std::string AIDA::Annotation::value | ( | int | index | ) | const
| inline override

Definition at line 124 of file Annotation.h.

124 {
125 if ( index < 0 || index >= static_cast<int>( m_annotationItems.size() ) ) return emptyString;
126 return m_annotationItems[index].m_value;
127 }
AIDA::Annotation::m_annotationItems
std::vector< AnnotationItem > m_annotationItems
The vector of the annotation items.
Definition: Annotation.h:58
AIDA::Annotation::emptyString
std::string emptyString
Definition: Annotation.h:63

## Member Data Documentation

## ◆ emptyString

std::string AIDA::Annotation::emptyString
| private

Definition at line 63 of file Annotation.h.

## ◆ m_annotationItems

std::vector<AnnotationItem> AIDA::Annotation::m_annotationItems
| private

The vector of the annotation items.

Definition at line 58 of file Annotation.h.

## ◆ m_identifiers

std::map<std::string, unsigned int> AIDA::Annotation::m_identifiers
| private

The map of strings to identifiers.

Definition at line 61 of file Annotation.h.

The documentation for this class was generated from the following file:

- GaudiCommonSvc/GaudiCommonSvc/Annotation.h