33 auto seed_details = fetch_seed(group,
"seed", version, options);
34 const auto& seed_dims = seed_details.dimensions;
36 auto value_details = fetch_seed(group,
"value", version, options);
38 if ((value_details.type == STRING) != (seed_details.type == STRING)) {
39 throw std::runtime_error(
"both or neither of the 'seed' and 'value' arrays should contain strings");
41 if (seed_dims.size() != value_details.dimensions.size()) {
42 throw std::runtime_error(
"'seed' and 'value' arrays should have the same dimensionality");
45 auto ihandle = group.openGroup(
"index");
46 auto collected = validate_subset_index_list(ihandle, seed_dims, version);
47 auto expected_dims = seed_dims;
48 for (
auto p : collected) {
49 expected_dims[p.first] = p.second;
52 if (!are_dimensions_equal(expected_dims, value_details.dimensions)) {
53 throw std::runtime_error(
"'value' dimension extents are not consistent with lengths of indices in 'index'");
58 seed_details.type = std::max(seed_details.type, value_details.type);
ArrayDetails validate_subset_assignment(const H5::Group &group, const ritsuko::Version &version, const Options &options)
Definition subset_assignment.hpp:32