27 #ifndef SCRIBO_PRIMITIVE_GROUP_FROM_DOUBLE_LINK_ANY_HH
28 # define SCRIBO_PRIMITIVE_GROUP_FROM_DOUBLE_LINK_ANY_HH
37 # include <mln/core/concept/image.hh>
38 # include <mln/core/site_set/box.hh>
40 # include <mln/accu/shape/bbox.hh>
42 # include <mln/util/array.hh>
44 # include <scribo/core/macros.hh>
46 # include <scribo/core/object_links.hh>
47 # include <scribo/core/object_groups.hh>
48 # include <scribo/core/component_set.hh>
49 # include <scribo/primitive/internal/find_root.hh>
72 const object_links<L>& right_link);
76 # ifndef MLN_INCLUDE_ONLY
85 for_all_links(l, link)
86 parent(l) = scribo::internal::find_root(parent, l);
98 const object_links<L>& right_link)
100 mln_trace(
"scribo::primitive::group::from_double_link_any");
102 object_links<L> merged_link(left_link.components());
106 lparent = internal::make_parent(left_link),
107 rparent = internal::make_parent(right_link);
109 for_all_links(i, merged_link)
113 pi = scribo::internal::find_root(lparent, i),
114 pli = scribo::internal::find_root(lparent, left_link(i));
118 merged_link.update(i, left_link(i));
126 pi = scribo::internal::find_root(lparent, i);
127 unsigned pri = scribo::internal::find_root(rparent, right_link(i));
131 merged_link.update(i, right_link(i));
139 object_groups<L> output(merged_link);
145 # endif // ! MLN_INCLUDE_ONLY
154 #endif // ! SCRIBO_PRIMITIVE_GROUP_FROM_DOUBLE_LINK_ANY_HH