38 template<
template<
class>
class Field,
class Type1,
class Type2>
41 const FieldField<Field, Type1>& f1,
42 const FieldField<Field, Type2>& f2,
46 if (f1.size() != f2.size())
50 "checkFields(const FieldField<Field, Type1>&, "
51 "const FieldField<Field, Type2>&, const char* op)"
52 ) <<
" incompatible fields"
53 <<
" FieldField<" << pTraits<Type1>::typeName
54 <<
"> f1(" << f1.size() <<
')'
55 <<
" and FieldField<" << pTraits<Type2>::typeName
56 <<
"> f2(" << f2.size() <<
')'
57 <<
endl <<
" for operation " << op
62 template<
template<
class>
class Field,
class Type1,
class Type2,
class Type3>
65 const FieldField<Field, Type1>& f1,
66 const FieldField<Field, Type2>& f2,
67 const FieldField<Field, Type3>& f3,
71 if (f1.size() != f2.size() || f1.size() != f3.size())
75 "checkFields(const FieldField<Field, Type1>&, "
76 "const FieldField<Field, Type2>&, "
77 "const FieldField<Field, Type3>&, "
79 ) <<
" incompatible fields"
80 <<
" FieldField<" << pTraits<Type1>::typeName
81 <<
"> f1(" << f1.size() <<
')'
82 <<
", FieldField<" <<pTraits<Type2>::typeName
83 <<
"> f2(" << f2.size() <<
')'
84 <<
" and FieldField<"<<pTraits<Type3>::typeName
85 <<
"> f3("<<f3.size() <<
')'
86 <<
endl <<
" for operation " << op
93 template<
template<
class>
class Field,
class Type1,
class Type2>
102 template<
template<
class>
class Field,
class Type1,
class Type2,
class Type3>
117 template<
template<
class>
class Field,
class Type>
124 template<
template<
class>
class Field,
class Type>
131 template<
template<
class>
class Field,
class Type>
147 template<
template<
class>
class Field,
class Type>
155 template<
template<
class>
class Field,
class Type>
163 template<
template<
class>
class Field,
class Type>
171 #ifdef ConstructFromTmp
172 template<
template<
class>
class Field,
class Type>
186 template<
template<
class>
class Field,
class Type>
193 template<
template<
class>
class Field,
class Type>
200 #ifndef __INTEL_COMPILER
201 template<
template<
class>
class Field,
class Type>
202 template<
class Type2>
225 template<
template<
class>
class Field,
class Type>
230 this->operator[](i).negate();
235 template<
template<
class>
class Field,
class Type>
245 NewCalculatedType(*
this)
254 template<
template<
class>
class Field,
class Type>
263 this->operator[](i).replace(d, sf[i]);
268 template<
template<
class>
class Field,
class Type>
277 this->operator[](i).replace(d, s);
282 template<
template<
class>
class Field,
class Type>
297 template<
template<
class>
class Field,
class Type>
304 "FieldField<Field, Type>::"
305 "operator=(const FieldField<Field, Type>&)"
306 ) <<
"attempted assignment to self"
312 this->operator[](i) = f[i];
317 template<
template<
class>
class Field,
class Type>
324 "FieldField<Field, Type>::operator=(const tmp<FieldField>&)"
325 ) <<
"attempted assignment to self"
330 FieldField* fieldPtr = tf.
ptr();
331 PtrList<Field<Type> >::transfer(*fieldPtr);
336 template<
template<
class>
class Field,
class Type>
341 this->operator[](i) = t;
346 #define COMPUTED_ASSIGNMENT(TYPE, op) \
348 template<template<class> class Field, class Type> \
349 void FieldField<Field, Type>::operator op(const FieldField<Field, TYPE>& f) \
353 this->operator[](i) op f[i]; \
357 template<template<class> class Field, class Type> \
358 void FieldField<Field, Type>::operator op \
360 const tmp<FieldField<Field, TYPE> >& tf \
367 template<template<class> class Field, class Type> \
368 void FieldField<Field, Type>::operator op(const TYPE& t) \
372 this->operator[](i) op t; \
381 #undef COMPUTED_ASSIGNMENT
386 template<
template<
class>
class Field,
class Type>
387 Ostream& operator<<(Ostream& os, const FieldField<Field, Type>&
f)
389 os << static_cast<const PtrList<Field<Type> >&>(
f);
394 template<
template<
class>
class Field,
class Type>
395 Ostream& operator<<(Ostream& os, const tmp<FieldField<Field, Type> >&
tf)