33 using IEdgeNamed::IEdgeNamed;
39 : IEdgeNamed(name, texsymbol), nvar(nvar) {}
41 inline void check_size(
45 on_distributeddata_diff(
50 "Missing link field in distributed data at id " + std::to_string(
id));
53 if (link_fields.
get(
id).link_count != graph.get(
id).get().link_count) {
55 "Wrong size for link field in distributed data at id "
56 + std::to_string(
id));
61 "Extra link field in distributed data at id " + std::to_string(
id));
65 inline void resize_according_to(
68 on_distributeddata_diff(
76 link_fields.
get(
id).resize(graph.get(
id).get());
79 link_fields.
erase(
id);
85 on_distributeddata_diff(
89 shambase::throw_with_loc<std::runtime_error>(
90 "Missing link field in distributed data at id " + std::to_string(id));
93 if (link_fields.get(id).link_count != link_counts.indexes.get(id)) {
94 shambase::throw_with_loc<std::runtime_error>(
95 "Wrong size for link field in distributed data at id "
96 + std::to_string(id));
101 "Extra link field in distributed data at id " + std::to_string(
id));
107 on_distributeddata_diff(
112 id, modules::NeighGraphLinkField<T>{link_counts.indexes.get(id), nvar});
115 link_fields.get(
id).resize(link_counts.indexes.get(
id));
118 link_fields.erase(
id);