43 #ifndef RTOPPACK_RTOP_T_HELPERS_DEF_HPP 
   44 #define RTOPPACK_RTOP_T_HELPERS_DEF_HPP 
   58 template<
class ConcreteReductObj>
 
   61   std::ostringstream oss;
 
   63     << 
"RTOpPack::DefaultReductTarget<" 
   65     << 
"{concreteReductObj="<<concreteReductObj_<<
"}";
 
   73 template<
class Scalar>
 
   76   const int allowed_num_sub_vecs,
 
   77   const int allowed_num_targ_sub_vecs,
 
   78   const bool expect_reduct_obj,
 
   87   const int num_sub_vecs = sub_vecs.size();
 
   88   const int num_targ_sub_vecs = targ_sub_vecs.size();
 
   90   const std::string op_name_str = 
"op.name() = " + op.
op_name();
 
   92   if (allowed_num_sub_vecs >= 0) {
 
   95       op_name_str<<
": Error, sub_vecs.size()="<<sub_vecs.size()
 
   96       <<
" != allowed_num_sub_vecs="<<allowed_num_sub_vecs<<
"!" );
 
   99   if (allowed_num_targ_sub_vecs >= 0) {
 
  102       op_name_str<<
": Error, targ_sub_vecs.size()="<<targ_sub_vecs.size()
 
  103       <<
" != allowed_num_targ_sub_vecs="<<allowed_num_targ_sub_vecs<<
"!" );
 
  108     op_name_str<<
": Error, apply_op(...) must be passed some vectors!" 
  112     (sub_vecs.size() ? sub_vecs[0].subDim() : targ_sub_vecs[0].subDim());
 
  115     (sub_vecs.size() ? sub_vecs[0].globalOffset() : targ_sub_vecs[0].globalOffset());
 
  117   for (
int k = 0; k < num_sub_vecs; ++k ) {
 
  119       sub_vecs[k].subDim() != subDim || sub_vecs[k].globalOffset() != globalOffset,
 
  121       op_name_str<<
": Error, sub_vec["<<k<<
"] " 
  122       "(subDim="<<sub_vecs[k].subDim()<<
",globalOffset="<<sub_vecs[k].globalOffset()<<
")" 
  123       " is not compatible with (subDim="<<subDim<<
",globalOffset="<<globalOffset<<
")!" 
  127   for (
int k = 0; k < num_targ_sub_vecs; ++k ) {
 
  129       targ_sub_vecs[k].subDim() != subDim || targ_sub_vecs[k].globalOffset() != globalOffset,
 
  131       op_name_str<<
": Error, sub_vec["<<k<<
"] " 
  132       "(subDim="<<targ_sub_vecs[k].subDim()<<
",globalOffset="<<targ_sub_vecs[k].globalOffset()<<
")" 
  133       " is not compatible with (subDim="<<subDim<<
",globalOffset="<<globalOffset<<
")!" 
  137   if (expect_reduct_obj) {
 
  141       op_name_str<<
": Error, expected a reduction target object!" 
  155     const std::type_info& reduct_obj_type = 
typeid (reduct_obj_thing);
 
  156     ReductTarget& dummy_reduct_obj_thing = *dummy_reduct_obj;
 
  157     const std::type_info& dummy_reduct_obj_type = 
typeid (dummy_reduct_obj_thing);
 
  161       op_name_str<<
": Error, the type of the input reduct_obj = " 
  178 #define RTOPPACK_RTOPT_HELPERS_DEFAULTREDUCTTARGET_INSTANT(SCALAR) \ 
  180   template std::string DefaultReductTarget<SCALAR >::description() const; 
  183 #define RTOPPACK_RTOPT_HELPERS_INSTANT_SCALAR(SCALAR) \ 
  185   RTOPPACK_RTOPT_HELPERS_DEFAULTREDUCTTARGET_INSTANT(SCALAR) \ 
  187   RTOPPACK_RTOPT_HELPERS_DEFAULTREDUCTTARGET_INSTANT(ScalarIndex<SCALAR >) \ 
  189   RTOPPACK_RTOPT_HELPERS_DEFAULTREDUCTTARGET_INSTANT(SubVectorView<SCALAR >) \ 
  191   template void validate_apply_op<SCALAR >( \ 
  192     const RTOpT<SCALAR > &op, \ 
  193     const int allowed_num_sub_vecs, \ 
  194     const int allowed_num_targ_sub_vecs, \ 
  195     const bool expect_reduct_obj, \ 
  196     const ArrayView<const ConstSubVectorView<SCALAR > > &sub_vecs, \ 
  197     const ArrayView<const SubVectorView<SCALAR > > &targ_sub_vecs, \ 
  198     const Ptr<const ReductTarget> &reduct_obj \ 
  204 #endif // RTOPPACK_RTOP_T_HELPERS_DEF_HPP 
std::string op_name() const 
Return the name (as a null-terminated C-style string) of the operator. 
 
bool is_null(const boost::shared_ptr< T > &p)
 
std::string description() const 
 
TEUCHOSCORE_LIB_DLL_EXPORT std::string demangleName(const std::string &mangledName)
 
Class for a changeable sub-vector. 
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
 
Teuchos_Ordinal index_type
 
Class for a non-changeable sub-vector. 
 
Templated interface to vector reduction/transformation operators {abstract}. 
 
Abstract base class for all reduction objects. 
 
TypeTo as(const TypeFrom &t)
 
Teuchos::RCP< ReductTarget > reduct_obj_create() const 
Creates a new reduction target object initialized and ready to be used in a reduction. 
 
void validate_apply_op(const RTOpT< Scalar > &op, const int allowed_num_sub_vecs, const int allowed_num_targ_sub_vecs, const bool expect_reduct_obj, const ArrayView< const ConstSubVectorView< Scalar > > &sub_vecs, const ArrayView< const SubVectorView< Scalar > > &targ_sub_vecs, const Ptr< const ReductTarget > &reduct_obj)
Validate the input to an apply_op(...) function. 
 
static std::string name()