#include "tensorstore/index_space/index_domain.h"
Result<IndexDomain<>>
tensorstore::ConstrainIndexDomain(IndexDomainView<> a,
                                  
IndexDomainView<> b);

Constrains index domain a by b.

If both a and b are null, returns a null index domain.

If exactly one of a and b is non-null, returns the non-null domain.

Otherwise, a and b must be compatible:

  • a.rank() == b.rank()

  • For all dimension i for which !a.labels()[i].empty() && !b.labels()[i].empty(), a.labels[i] == b.labels[i].

In the resulting domain, if a bound in a is both implicit and infinite, then the bound from b is used, otherwise the bound of a is used.

Returns:

The intersected domain, or a null domain if a and b are both null.

Error absl::StatusCode::kInvalidArgument:

if a and b are not compatible.