43#ifndef RTOPPACK_UNARY_FUNC_PTR_HPP
44#define RTOPPACK_UNARY_FUNC_PTR_HPP
46#include "RTOpPack_TOpUnaryFuncPtrDecl.hpp"
52 :
RTOpT<Scalar>(
"TOpUnaryFuncPtr")
59 unary_func_ptr_t unary_func_ptr
60 ,
const std::string &op_name
62 :
RTOpT<Scalar>(
"TOpUnaryFuncPtr")
69 unary_func_ptr_t unary_func_ptr
70 ,
const std::string &op_name
73 TEUCHOS_TEST_FOR_EXCEPTION( unary_func_ptr==NULL, std::invalid_argument,
"Error!" );
74 unary_func_ptr_ = unary_func_ptr;
80 unary_func_ptr_t *unary_func_ptr
84 if(unary_func_ptr) *unary_func_ptr = unary_func_ptr_;
85 if(op_name) *op_name = op_name_;
87 unary_func_ptr_ = NULL;
88 op_name_ =
"uninitialized()";
96 return op_name_.c_str();
106 TEUCHOS_TEST_FOR_EXCEPTION( num_vecs != 1 || sub_vecs == NULL, std::invalid_argument,
"Error!" );
107 TEUCHOS_TEST_FOR_EXCEPTION( num_targ_vecs != 1 || targ_sub_vecs == NULL, std::invalid_argument,
"Error!" );
108 TEUCHOS_TEST_FOR_EXCEPTION( reduct_obj != NULL, std::invalid_argument,
"Error!" );
109 TEUCHOS_TEST_FOR_EXCEPTION( sub_vecs[0].stride() != 1, std::invalid_argument,
"Error, can't handle non-unit strides here!" );
110 TEUCHOS_TEST_FOR_EXCEPTION( targ_sub_vecs[0].stride() != 1, std::invalid_argument,
"Error, can't handle non-unit strides here!" );
111 TEUCHOS_TEST_FOR_EXCEPTION( sub_vecs[0].subDim() != targ_sub_vecs[0].subDim(), std::invalid_argument,
"Error!" );
112 TEUCHOS_TEST_FOR_EXCEPTION( sub_vecs[0].globalOffset() != targ_sub_vecs[0].globalOffset(), std::invalid_argument,
"Error!" );
114 unary_func_ptr_( sub_vecs[0].values(), sub_vecs[0].subDim(), targ_sub_vecs[0].values() );
const char * op_name() const
TOpUnaryFuncPtr()
Construct to uninitialized.
void set_initialized(unary_func_ptr_t *unary_func_ptr=NULL, std::string *op_name=NULL)
Set uninitialized.
void initialize(unary_func_ptr_t unary_func_ptr, const std::string &op_name)
Initialize.
void apply_op(const int num_vecs, const ConstSubVectorView< Scalar > sub_vecs[], const int num_targ_vecs, const SubVectorView< Scalar > targ_sub_vecs[], ReductTarget *reduct_obj) const