26 #ifndef MLN_VALUE_VALUE_ARRAY_HH
27 # define MLN_VALUE_VALUE_ARRAY_HH
33 # include <mln/value/set.hh>
44 template <
typename T,
typename V>
81 template <
typename T,
typename V>
82 std::ostream& operator<<(std::ostream& ostr, const value_array<T, V>& a);
85 # ifndef MLN_INCLUDE_ONLY
87 template <
typename T,
typename V>
90 : s_ (mln::value::
set<T>::the())
92 typedef value::internal::iterable_set< T, set<T> > U;
93 mlc_is(
set<T>, U)::check();
96 template <
typename T,
typename V>
99 : s_(mln::value::
set<T>::the())
101 typedef value::internal::iterable_set< T, set<T> > U;
102 mlc_is(
set<T>, U)::check();
104 memset(v_, v, nvalues *
sizeof(V));
107 template <
typename T,
typename V>
112 memcpy(v_, other.v_, nvalues *
sizeof(V));
115 template <
typename T,
typename V>
118 value_array<T,V>::operator=(
const value_array<T, V>&
other)
121 memcpy(v_, other.v_, nvalues *
sizeof(V));
125 template <
typename T,
typename V>
130 return v_[s_.index_of(v)];
133 template <
typename T,
typename V>
138 return v_[s_.index_of(v)];
141 template <
typename T,
typename V>
149 template <
typename T,
typename V>
154 mln_precondition(i < nvalues);
158 template <
typename T,
typename V>
163 mln_precondition(i < nvalues);
167 template <
typename T,
typename V>
169 std::ostream& operator<<(std::ostream& ostr, const value_array<T,V>& a)
173 ostr << v << ':' << h(v) << ' ';
177 # endif // ! MLN_INCLUDE_ONLY
184 #endif // ! MLN_VALUE_VALUE_ARRAY_HH