OpenMS
Loading...
Searching...
No Matches
MetaInfo Class Reference

A Type-Name-Value tuple class. More...

#include <OpenMS/METADATA/MetaInfo.h>

Collaboration diagram for MetaInfo:
[legend]

Public Types

using MapType = boost::container::flat_map< UInt, DataValue >
 Internal map type (UInt key to DataValue)
 
using iterator = MapType::iterator
 Mutable iterator type.
 
using const_iterator = MapType::const_iterator
 Const iterator type.
 

Public Member Functions

 MetaInfo ()=default
 Constructor.
 
 MetaInfo (const MetaInfo &)=default
 Copy constructor.
 
 MetaInfo (MetaInfo &&)=default
 Move constructor.
 
 ~MetaInfo ()
 Destructor.
 
MetaInfooperator= (const MetaInfo &)=default
 Assignment operator.
 
MetaInfooperator= (MetaInfo &&) &=default
 Move assignment operator.
 
bool operator== (const MetaInfo &rhs) const
 Equality operator.
 
bool operator!= (const MetaInfo &rhs) const
 Equality operator.
 
MetaInfooperator+= (const MetaInfo &rhs)
 Merge another MetaInfo into this one.
 
const DataValuegetValue (const String &name, const DataValue &default_value=DataValue::EMPTY) const
 Returns the value corresponding to a string, or a default value (default: DataValue::EMPTY) if not found.
 
const DataValuegetValue (UInt index, const DataValue &default_value=DataValue::EMPTY) const
 Returns the value corresponding to an index, or a default value (default: DataValue::EMPTY) if not found.
 
bool exists (const String &name) const
 Returns whether an entry with the given name exists.
 
bool exists (UInt index) const
 Returns whether an entry with the given index exists.
 
void setValue (const String &name, const DataValue &value)
 Sets the DataValue corresponding to a name.
 
void setValue (UInt index, const DataValue &value)
 Sets the DataValue corresponding to an index.
 
void removeValue (const String &name)
 Removes the DataValue corresponding to name if it exists.
 
void removeValue (UInt index)
 Removes the DataValue corresponding to index if it exists.
 
void getKeys (std::vector< String > &keys) const
 Fills the given vector with a list of all keys for which a value is set.
 
void getKeys (std::vector< UInt > &keys) const
 Fills the given vector with a list of all keys for which a value is set.
 
bool empty () const
 Returns if the MetaInfo is empty.
 
void clear ()
 Removes all meta values.
 
Size size () const
 Returns the number of meta value entries.
 
Iterator access

Provides iterator access to the underlying index-to-value map. Iterators dereference to std::pair<UInt, DataValue> where the first element is the registry index and the second is the associated value. The iteration order is sorted by index (ascending).

const_iterator begin () const
 Returns a const iterator to the beginning of the meta info entries.
 
const_iterator end () const
 Returns a const iterator to the end of the meta info entries.
 
const_iterator cbegin () const
 Returns a const iterator to the beginning of the meta info entries.
 
const_iterator cend () const
 Returns a const iterator to the end of the meta info entries.
 
iterator begin ()
 Returns a mutable iterator to the beginning of the meta info entries.
 
iterator end ()
 Returns a mutable iterator to the end of the meta info entries.
 

Static Public Member Functions

static MetaInfoRegistryregistry ()
 Returns a reference to the MetaInfoRegistry.
 

Private Attributes

MapType index_to_value_
 The actual mapping of indexes to values.
 

Static Private Attributes

static MetaInfoRegistry registry_
 Static MetaInfoRegistry.
 

Friends

struct std::hash< MetaInfo >
 

Detailed Description

A Type-Name-Value tuple class.

MetaInfo maps an index (an integer corresponding to a string) to DataValue objects. The mapping of strings to the index is performed by the MetaInfoRegistry, which can be accessed by the method registry().

There are two versions of nearly all members. One which operates with a string name and another one which operates on an index. The index version is always faster, as it does not need to look up the index corresponding to the string in the MetaInfoRegistry.

If you wish to add a MetaInfo member to a class, consider deriving that class from MetaInfoInterface, instead of simply adding MetaInfo as member. MetaInfoInterface implements a full interface to a MetaInfo member and is more memory efficient if no meta info gets added.

Member Typedef Documentation

◆ const_iterator

Const iterator type.

◆ iterator

Mutable iterator type.

◆ MapType

using MapType = boost::container::flat_map<UInt, DataValue>

Internal map type (UInt key to DataValue)

Constructor & Destructor Documentation

◆ MetaInfo() [1/3]

MetaInfo ( )
default

Constructor.

◆ MetaInfo() [2/3]

MetaInfo ( const MetaInfo )
default

Copy constructor.

◆ MetaInfo() [3/3]

MetaInfo ( MetaInfo &&  )
default

Move constructor.

◆ ~MetaInfo()

~MetaInfo ( )

Destructor.

Member Function Documentation

◆ begin() [1/2]

iterator begin ( )
inline

Returns a mutable iterator to the beginning of the meta info entries.

Returns
iterator pointing to the first index-value pair, or end() if empty.
Note
Modifying the key (first element) may invalidate the sorted order invariant.

◆ begin() [2/2]

const_iterator begin ( ) const
inline

Returns a const iterator to the beginning of the meta info entries.

Returns
const_iterator pointing to the first index-value pair, or end() if empty.

◆ cbegin()

const_iterator cbegin ( ) const
inline

Returns a const iterator to the beginning of the meta info entries.

Returns
const_iterator pointing to the first index-value pair, or cend() if empty.

◆ cend()

const_iterator cend ( ) const
inline

Returns a const iterator to the end of the meta info entries.

Returns
const_iterator pointing past the last index-value pair.

◆ clear()

void clear ( )

Removes all meta values.

◆ empty()

bool empty ( ) const

Returns if the MetaInfo is empty.

◆ end() [1/2]

iterator end ( )
inline

Returns a mutable iterator to the end of the meta info entries.

Returns
iterator pointing past the last index-value pair.

◆ end() [2/2]

const_iterator end ( ) const
inline

Returns a const iterator to the end of the meta info entries.

Returns
const_iterator pointing past the last index-value pair.

◆ exists() [1/2]

bool exists ( const String name) const

Returns whether an entry with the given name exists.

◆ exists() [2/2]

bool exists ( UInt  index) const

Returns whether an entry with the given index exists.

◆ getKeys() [1/2]

void getKeys ( std::vector< String > &  keys) const

Fills the given vector with a list of all keys for which a value is set.

◆ getKeys() [2/2]

void getKeys ( std::vector< UInt > &  keys) const

Fills the given vector with a list of all keys for which a value is set.

◆ getValue() [1/2]

const DataValue & getValue ( const String name,
const DataValue default_value = DataValue::EMPTY 
) const

Returns the value corresponding to a string, or a default value (default: DataValue::EMPTY) if not found.

◆ getValue() [2/2]

const DataValue & getValue ( UInt  index,
const DataValue default_value = DataValue::EMPTY 
) const

Returns the value corresponding to an index, or a default value (default: DataValue::EMPTY) if not found.

◆ operator!=()

bool operator!= ( const MetaInfo rhs) const

Equality operator.

◆ operator+=()

MetaInfo & operator+= ( const MetaInfo rhs)

Merge another MetaInfo into this one.

All entries from rhs are added to this MetaInfo. If an entry with the same index already exists, it will be overwritten with the value from rhs.

Uses an O(n+m) two-way merge algorithm since the underlying flat_map is sorted.

Parameters
rhsThe MetaInfo to merge from.
Returns
Reference to this object.

◆ operator=() [1/2]

MetaInfo & operator= ( const MetaInfo )
default

Assignment operator.

◆ operator=() [2/2]

MetaInfo & operator= ( MetaInfo &&  ) &
default

Move assignment operator.

◆ operator==()

bool operator== ( const MetaInfo rhs) const

Equality operator.

◆ registry()

static MetaInfoRegistry & registry ( )
static

Returns a reference to the MetaInfoRegistry.

◆ removeValue() [1/2]

void removeValue ( const String name)

Removes the DataValue corresponding to name if it exists.

◆ removeValue() [2/2]

void removeValue ( UInt  index)

Removes the DataValue corresponding to index if it exists.

◆ setValue() [1/2]

void setValue ( const String name,
const DataValue value 
)

Sets the DataValue corresponding to a name.

◆ setValue() [2/2]

void setValue ( UInt  index,
const DataValue value 
)

Sets the DataValue corresponding to an index.

◆ size()

Size size ( ) const
inline

Returns the number of meta value entries.

Returns
The count of index-value pairs stored.

Friends And Related Symbol Documentation

◆ std::hash< MetaInfo >

friend struct std::hash< MetaInfo >
friend

Member Data Documentation

◆ index_to_value_

MapType index_to_value_
private

The actual mapping of indexes to values.

◆ registry_

MetaInfoRegistry registry_
staticprivate