45 #include "IterationPack_CastIQMember.hpp"
46 #include "Teuchos_Assert.hpp"
48 namespace IterationPack {
50 CastIQMemberBase::CastIQMemberBase(
const std::string iq_name )
51 : iq_name_(iq_name), iq_id_(NOT_SET_YET)
64 return iq_id_ != AlgorithmState::DOES_NOT_EXIST;
69 if(
iq_id_ == NOT_SET_YET ) {
78 ,
"CastIQMember<T>::operator()(...) : Error, the iteration quantity \""
79 <<
iq_name_ <<
"\" does not exist in this state object." );
82 ,
"CastIQMember<T>::operator()(state) : Error, the iteration quantity \""
83 <<
iq_name_ <<
"\" exists but it is not of the type IterQuantityAccess<"
const std::string iq_name_
void cache_iq_id(const AlgorithmState &s) const
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
bool exists_in(const AlgorithmState &s) const
Returns if the iteration quantity exists in the state object.
Thrown if name or id does not exist.
const std::string & iq_name() const
Name returns the name of the iteration quantity.
Abstacts a set of iteration quantities for an iterative algorithm.
virtual iq_id_type get_iter_quant_id(const std::string &iq_name) const
Return the iteration quantity id (iq_id) for the iteration quantity.
AlgorithmState::iq_id_type iq_id_
void throw_cast_error(const AlgorithmState::iq_id_type iq_id, const std::string &iqa_name) const