NVIDIA Holoscan SDK v2.4.0
Holoscan v2.4.0

Class MetadataDictionary

class MetadataDictionary

Class to define a metadata dictionary object.

Public Types

using MapType = std::unordered_map<std::string, std::shared_ptr<MetadataObject>>
using Iterator = MapType::iterator
using ConstIterator = MapType::const_iterator

Public Functions

inline explicit MetadataDictionary(const MetadataPolicy &policy = MetadataPolicy::kRaise)
MetadataDictionary(const MetadataDictionary&) = default
MetadataDictionary(MetadataDictionary&&) = default
MetadataDictionary &operator=(const MetadataDictionary&)
MetadataDictionary &operator=(MetadataDictionary&&) = default
virtual ~MetadataDictionary() = default
std::vector<std::string> keys() const

Get a vector of the keys in the dictionary.

std::shared_ptr<MetadataObject> &operator[](const std::string&)

Provide indexing into the underlying dictionary.

const MetadataObject *operator[](const std::string&) const

Provide indexing into the underlying dictionary.

std::shared_ptr<MetadataObject> get(const std::string &key) const

Get a shared pointer to the MetadataObject corresponding to the provided key.

See the templated variant of get for a version of this method that extracts the std::any value from the MetadataOjbect and performs the any_cast<ValueT> operation on it.

Parameters

key – The key for the value to retrieve.

Returns

The value corresponding to the key

template<typename ValueT>
inline ValueT get(const std::string &key) const

Get the value contained in the MetadataObject corresponding to the provided key.

Calling dict-&gt;get&lt;T&gt;(key) is a convenience method for the following:

Copy
Copied!
            

auto metadata_obj = dict->get(key); auto value = std::any_cast<T>(metadata_obj->value());

This functions raises a std::runtime_error if the key does not exist.

Template Parameters

ValueT – The type of data stored in the std::any returned by MetadataObject.value()

Parameters

key – The key for the value to retrieve.

Returns

The value contained in the metadata object corresponding to the key

template<typename ValueT>
inline ValueT get(const std::string &key, const ValueT &default_value) const

Get the value contained in the MetadataObject corresponding to the provided key.

Calling dict-&gt;get&lt;T&gt;(key) is a convenience method for the following:

Copy
Copied!
            

auto metadata_obj = dict->get(key); auto value = std::any_cast<T>(metadata_obj->value());

This function returns the provided default_value if the key does not exist

Template Parameters

ValueT – The type of data stored in the std::any returned by MetadataObject.value()

Parameters
  • key – The key for the value to insert.

  • default_value – The value to return if the key does not exist in the dictionary

Returns

The value contained in the metadata object corresponding to the key

void set(const std::string &key, std::shared_ptr<MetadataObject> value)

Insert a new value at the specified key (or update an existing one)

This method inserts a new item. If the key already exists, this method will have a behavior that depends on the policy (MetadataPolicy) set for this dictionary.

For this method, kInplaceUpdate behaves the same as kUpdate.

Parameters
  • key – The key for the value to insert (or update).

  • value – The value to store.

template<typename ValueT, typename = std::enable_if_t<!std::is_same_v<std::decay_t<ValueT>, std::shared_ptr<MetadataObject>>>>
inline void set(const std::string &key, ValueT value)

Insert or update a value at the specified key.

This method inserts a new item. If the key already exists, this method will have a behavior that depends on the policy (MetadataPolicy) set for this dictionary.

Template Parameters

ValueT – The type of metadata to insert

Parameters
  • key – The key for the value to insert (or update).

  • value – The value to store.

inline MetadataPolicy policy() const

Get the metadata policy used by this MetadataDictionary.

inline void policy(const MetadataPolicy &metadata_policy)

Set the metadata policy used by this MetadataDictionary.

bool has_key(const std::string &key) const

Determine if an item already exists in the dictionary.

Parameters

key – The key for the value to insert (or update).

Returns

Returns true if the key already exists in the dictionary, false otherwise.

bool erase(const std::string &key)

Erase an item from the dictionary.

Parameters

key – The key of the item to erase.

Returns

Returns true if the key was erased and false if the key was not found.

Iterator begin()

begin() iterator of the underlying dictionary

ConstIterator begin() const

begin() constiterator of the underlying dictionary

Iterator end()

end() iterator of the underlying dictionary

ConstIterator end() const

end() constiterator of the underlying dictionary

Iterator find(const std::string &key)

find() on the underlying dictionary. Returns an iterator to the element if found, else end()

ConstIterator find(const std::string &key) const

find() on the underlying dictionary. Returns an iterator to the element if found, else end()

void clear()

clear all values from the dictionary

std::size_t size() const

return the number of items in the dictionary

void swap(MetadataDictionary &other)

swap the contents of this dictionary and other

void merge(MetadataDictionary &other)

merge (move) the contents of other dictionary into this dictionary

void insert(MetadataDictionary &other)

Insert items the other dictionary into this dictionary. Pre-existing values are not updated.

void update(MetadataDictionary &other)

Update the dictionary with items present in other.

This method will update the dictionary with values from other. If a key already exists in this dictionary, the behavior is determined by the policy (MetadataPolicy) set for this dictionary.

For this method, kInplaceUpdate behaves the same as kUpdate.

Parameters

other – metadata dictionary to copy items from

Previous Class MessageLabel
Next Template Class MetaParameter
© Copyright 2022-2024, NVIDIA. Last updated on Oct 1, 2024.