26 #ifndef MLN_TRAIT_VALUE__HH
27 # define MLN_TRAIT_VALUE__HH
36 # include <mln/metal/int.hh>
37 # include <mln/metal/math/pow.hh>
38 # include <mln/metal/if.hh>
40 # include <mln/trait/value/all.hh>
41 # include <mln/metal/math/pow.hh>
42 # include <mln/core/def/low_quant_nbits.hh>
45 # define mln_trait_value_nature(V) typename mln::trait::value_< V >::nature
46 # define mln_trait_value_nature_(V) mln::trait::value_< V >::nature
47 # define mln_trait_value_kind(V) typename mln::trait::value_< V >::kind
48 # define mln_trait_value_kind_(V) mln::trait::value_< V >::kind
49 # define mln_trait_value_quant(V) typename mln::trait::value_< V >::quant
50 # define mln_trait_value_quant_(V) mln::trait::value_< V >::quant
53 # define mln_card(V) mln::trait::value_< V >::card
54 # define mln_dim(V) mln::trait::value_< V >::dim
55 # define mln_epsilon(V) mln::trait::value_< V >::epsilon()
56 # define mln_max(V) mln::trait::value_< V >::max()
57 # define mln_min(V) mln::trait::value_< V >::min()
58 # define mln_nbits(V) mln::trait::value_< V >::nbits
62 # define mln_trait_value_sum(V) typename mln::trait::value_< V >::sum
63 # define mln_trait_value_sum_(V) mln::trait::value_< V >::sum
64 # define mln_sum(V) mln_trait_value_sum(V)
65 # define mln_sum_(V) mln_trait_value_sum_(V)
68 # define mln_trait_value_name(V) mln::trait::value_< V >::name()
71 # define mln_value_quant_from_(C) \
72 mlc_if(mln::metal::bool_<( int(C) > int(mlc_pow_int(2, mln::def::low_quant_nbits)) \
75 mln::trait::value::quant::high, \
76 mln::trait::value::quant::low)
85 # define mln_value_card_from_(N) \
86 (int(N) <= int(mln::def::low_quant_nbits) \
87 ? mlc_pow_int((N <= 16 ? 2 : 1), \
100 struct undefined_value_
102 typedef undef nature;
123 struct default_value_ : undefined_value_
131 typedef trait::value::nature::unknown nature;
132 typedef trait::value::kind::data kind;
133 typedef trait::value::quant::high quant;
143 template <
typename V>
144 struct value_ : default_value_
154 # include <mln/trait/value/print.hh>
157 #endif // ! MLN_TRAIT_VALUE__HH