46 #ifndef MUELU_FACTORY_HPP 47 #define MUELU_FACTORY_HPP 52 #include "Teuchos_ENull.hpp" 53 #include "Teuchos_FilteredIterator.hpp" 58 #include "Teuchos_StringIndexedOrderedValueObjectContainer.hpp" 76 #ifdef HAVE_MUELU_DEBUG 77 : multipleCallCheck_(FIRSTCALL), lastLevelID_(-1)
102 return Teuchos::null;
119 while (it != paramList->end()) {
120 it = paramList->begin();
122 for (; it != paramList->end(); it++)
124 paramList->remove(it->first);
136 return Teuchos::null;
145 void Input(
Level& level,
const std::string& varName,
const std::string& varParamName)
const {
150 T
Get(
Level& level,
const std::string& varName)
const {
155 T
Get(
Level& level,
const std::string& varName,
const std::string& varParamName)
const {
156 return level.
Get<T>(varName,
GetFactory(varParamName).get());
160 void Set(
Level& level,
const std::string& varName,
const T& data)
const {
161 return level.
Set<T>(varName, data,
this);
168 #ifdef HAVE_MUELU_DEBUG 170 enum multipleCallCheckEnum { ENABLED, DISABLED, FIRSTCALL };
175 if (multipleCallCheck_ == FIRSTCALL && lastLevelID_ == -1)
178 multipleCallCheck_ = FIRSTCALL;
192 if (paramList.isType<RCP<const FactoryBase> >(it->first)) {
193 RCP<const Factory> fact = rcp_dynamic_cast<
const Factory >(paramList.get<RCP<const FactoryBase> >(it->first));
195 fact->ResetDebugData();
203 mutable multipleCallCheckEnum multipleCallCheck_;
204 static multipleCallCheckEnum multipleCallCheckGlobal_;
205 mutable int lastLevelID_;
218 #define MUELU_FACTORY_SHORT 219 #endif //ifndef MUELU_FACTORY_HPP
virtual RCP< const ParameterList > GetValidParameterList() const
Return a const parameter list of valid parameters that setParameterList() will accept.
T & Get(const std::string &ename, const FactoryBase *factory=NoFactory::get())
Get data without decrementing associated storage counter (i.e., read-only access). Usage: Level->Get< RCP<Matrix> >("A", factory) if factory == NULL => use default factory.
T Get(Level &level, const std::string &varName, const std::string &varParamName) const
virtual ~Factory()
Destructor.
T & get(const std::string &name, T def_value)
static void DisableMultipleCheckGlobally()
RCP< ParameterList > RemoveFactoriesFromList(const ParameterList &list) const
Namespace for MueLu classes and methods.
bool IsAvailable(Level &level, const std::string &varName) const
Base class for factories (e.g., R, P, and A_coarse).
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Class that holds all level-specific information.
params_t::ConstIterator ConstIterator
void Input(Level &level, const std::string &varName, const std::string &varParamName) const
void DisableMultipleCallCheck() const
T Get(Level &level, const std::string &varName) const
static void EnableMultipleCheckGlobally()
void Set(const std::string &ename, const T &entry, const FactoryBase *factory=NoFactory::get())
virtual const Teuchos::ParameterList & GetParameterList() const
void SetParameter(const std::string &name, const ParameterEntry &entry)
Set a parameter directly as a ParameterEntry.
void Input(Level &level, const std::string &varName) const
const RCP< const FactoryBase > GetFactory(const std::string &varName) const
Default implementation of FactoryAcceptor::GetFactory()
virtual void SetFactory(const std::string &varName, const RCP< const FactoryBase > &factory)
Configuration.
bool IsAvailable(const std::string &ename, const FactoryBase *factory=NoFactory::get()) const
Test whether a need's value has been saved.
void Set(Level &level, const std::string &varName, const T &data) const
void EnableMultipleCallCheck() const
void ResetDebugData() const
void DeclareInput(const std::string &ename, const FactoryBase *factory, const FactoryBase *requestedBy=NoFactory::get())
Callback from FactoryBase::CallDeclareInput() and FactoryBase::DeclareInput()
static const RCP< const NoFactory > getRCP()
Static Get() functions.