AbstractLinAlgPack_VectorApplyOpSerialBase.cpp

Go to the documentation of this file.
00001 // /////////////////////////////////////////////////////
00002 // VectorApplyOpSerialBase.cpp
00003 
00004 #include "AbstractLinAlgPack_VectorApplyOpSerialBase.hpp"
00005 #include "AbstractLinAlgPack_apply_op_helper.hpp"
00006 
00007 namespace AbstractLinAlgPack {
00008 
00009 VectorApplyOpSerialBase::VectorApplyOpSerialBase()
00010   : in_apply_op_(false)
00011 {}
00012 
00013 void VectorApplyOpSerialBase::apply_op_serial(
00014   const RTOpPack::RTOp& op
00015   ,const size_t num_vecs, const Vector* vecs[]
00016   ,const size_t num_targ_vecs, VectorMutable* targ_vecs[]
00017   ,RTOpPack::ReductTarget *reduct_obj
00018   ,const index_type first_ele, const index_type sub_dim, const index_type global_offset
00019   ) const
00020 {
00021   TEST_FOR_EXCEPTION(
00022     in_apply_op_, std::logic_error
00023     ,"VectorApplyOpSerialBase::apply_op_serial(...): Error, this function has been entered "
00024     "recursively which most likely means that the explicit sub-vector access methods Vector::get_sub_vector(...), "
00025     "Vector::free_sub_vector(...), VectorMutable::get_sub_vector(...), VectorMutable::commit_sub_vector(...) "
00026     "have not been overridden correctly on this concrete class \'" << typeName(*this) << "\' to not call "
00027     "apply_op(...) in there implemenations."
00028     );
00029   in_apply_op_ = true;
00030   AbstractLinAlgPack::apply_op_serial(
00031     op,num_vecs,vecs,num_targ_vecs,targ_vecs,reduct_obj
00032     ,first_ele,sub_dim,global_offset
00033     );
00034   in_apply_op_ = false;
00035 }
00036 
00037 } // namespace AbstractLinAlgPack

Generated on Tue Jul 13 09:30:50 2010 for MOOCHO (Single Doxygen Collection) by  doxygen 1.4.7