Attributes: Add function to retrieve span without adding attribute
Previously, the only versions of attribute access that gave a span would also add the attribute when it doesn't exist, which isn't always wanted.
This commit is contained in:
@@ -552,6 +552,11 @@ class MutableAttributeAccessor : public AttributeAccessor {
|
||||
*/
|
||||
GAttributeWriter lookup_for_write(const AttributeIDRef &attribute_id);
|
||||
|
||||
/**
|
||||
* Same as above, but returns a type that makes it easier to work with the attribute as a span.
|
||||
*/
|
||||
GSpanAttributeWriter lookup_for_write_span(const AttributeIDRef &attribute_id);
|
||||
|
||||
/**
|
||||
* Get a writable attribute or non if it does not exist.
|
||||
* Make sure to call #finish after changes are done.
|
||||
@@ -568,6 +573,19 @@ class MutableAttributeAccessor : public AttributeAccessor {
|
||||
return attribute.typed<T>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Same as above, but returns a type that makes it easier to work with the attribute as a span.
|
||||
*/
|
||||
template<typename T>
|
||||
SpanAttributeWriter<T> lookup_for_write_span(const AttributeIDRef &attribute_id)
|
||||
{
|
||||
AttributeWriter<T> attribute = this->lookup_for_write<T>(attribute_id);
|
||||
if (attribute) {
|
||||
return SpanAttributeWriter<T>{std::move(attribute), true};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new attribute.
|
||||
* \return True, when a new attribute has been created. False, when it's not possible to create
|
||||
|
@@ -875,6 +875,16 @@ GAttributeWriter MutableAttributeAccessor::lookup_for_write(const AttributeIDRef
|
||||
return attribute;
|
||||
}
|
||||
|
||||
GSpanAttributeWriter MutableAttributeAccessor::lookup_for_write_span(
|
||||
const AttributeIDRef &attribute_id)
|
||||
{
|
||||
GAttributeWriter attribute = this->lookup_for_write(attribute_id);
|
||||
if (attribute) {
|
||||
return GSpanAttributeWriter{std::move(attribute), true};
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
GAttributeWriter MutableAttributeAccessor::lookup_or_add_for_write(
|
||||
const AttributeIDRef &attribute_id,
|
||||
const eAttrDomain domain,
|
||||
|
Reference in New Issue
Block a user