40 template <
class _Iterator>
41 struct iterator_traits
45 typedef typename _Iterator::difference_type difference_type;
46 typedef typename _Iterator::pointer pointer;
47 typedef typename _Iterator::reference reference;
51 struct iterator_traits<_Tp*>
55 typedef ptrdiff_t difference_type;
57 typedef _Tp& reference;
61 struct iterator_traits<const _Tp*>
65 typedef ptrdiff_t difference_type;
66 typedef const _Tp* pointer;
67 typedef const _Tp& reference;
93 T& value =
const_cast<T&
>(cvalue);
94 value.putMessage(msg);
102 value.getMessage(msg);
116 m.
putmsg(0,
sizeof(T2), 0);
123 for (f = beg; f != end; ++d, ++f);
131 m.
putmsg((
void*) (&*beg),
sizeof(T2), d);
134 m.
putmsg((
void*) (&*beg),
sizeof(T2), d);
142 T2* cpydata =
static_cast<T2*
>( malloc(
sizeof(T2) * d) );
145 for (i = beg; i != end; ++i, ++cpy)
151 m.
putmsg( (
void*) cpydata,
sizeof(T2), d );
160 const std::vector<size_t>& indices,
T beg)
166 if (indices.begin() == indices.end())
168 m.
putmsg(0,
sizeof(T2), 0);
173 std::vector<size_t>::size_type d = indices.
size();
177 T2* cpydata =
static_cast<T2*
>( malloc(
sizeof(T2) * d) );
179 std::vector<size_t>::const_iterator i, iend = indices.end();
180 for (i = indices.begin(); i != iend; ++i, ++cpy)
181 new (cpy) T2(beg[*i]);
186 m.
putmsg( (
void*) cpydata,
sizeof(T2), d );
201 ERRORMSG(
"get_iter(): no more items in Message" <<
endl);
209 T2* data =
static_cast<T2*
>( mitem.
data() );
211 for (i = mitem.
numElems(); i > 0; i--)
227 T& ncval =
const_cast<T&
>(value);
228 return msg.
putmsg( (
void*) &ncval,
sizeof(
T) );
235 return msg.
getmsg( (
void*) &value );
248 return msg.
putmsg( (
void*) beg,
257 return msg.
getmsg( (
void*) ptr );
263 const std::vector<size_t>& indices,
T beg)
std::random_access_iterator_tag iterator_category(const SliceIterator< T > &)
Message & putmsg(void *, int, int=0)
unsigned int numElems() const
T * value_type(const SliceIterator< T > &)
Message & get(const T &cval)
Message & setDelete(const bool c)
Message & setCopy(const bool c)
Inform & endl(Inform &inf)