26 #ifndef MLN_SET_CARD_HH
27 # define MLN_SET_CARD_HH
33 # include <mln/core/concept/site_set.hh>
44 unsigned card(
const Site_Set<S>& s);
47 # ifndef MLN_INCLUDE_ONLY
61 unsigned card(
const Site_Set<S>& s_)
63 mln_trace(
"set::impl::generic::card");
64 const S& s =
exact(s_);
65 mln_precondition(s.is_valid());
82 unsigned card_from_method(const Site_Set<S>& s)
84 mln_trace(
"set::impl::card_from_method");
85 unsigned n =
exact(s).nsites();
100 unsigned card_dispatch(mln::trait::site_set::nsites::any,
101 const Site_Set<S>& s)
106 template <
typename S>
108 unsigned card_dispatch(mln::trait::site_set::nsites::known,
109 const Site_Set<S>& s)
111 return impl::card_from_method(s);
116 template <
typename S>
118 unsigned card_dispatch(
const Site_Set<S>& s)
120 return card_dispatch(mln_trait_site_set_nsites(S)(),
130 template <
typename S>
132 unsigned card(
const Site_Set<S>& s)
134 mln_trace(
"set::card");
135 mln_precondition(
exact(s).is_valid());
137 unsigned n = internal::card_dispatch(s);
142 # endif // ! MLN_INCLUDE_ONLY
149 #endif // ! MLN_SET_CARD_HH