LAMA
/home/brandes/workspace/LAMA/src/lama/solver/creator/IterativeSolverCreator.hpp
Go to the documentation of this file.
00001 
00033 #ifndef LAMA_IterativeSolverCreator_HPP_
00034 #define LAMA_IterativeSolverCreator_HPP_
00035 
00036 // for dll_import
00037 #include <lama/config.hpp>
00038 
00039 // base classes
00040 #include <lama/solver/creator/SolverCreator.hpp>
00041 
00042 //qi, phoenix, fusion
00043 #include <boost/config/warning_disable.hpp>
00044 #include <boost/spirit/include/qi.hpp>
00045 #include <boost/spirit/include/phoenix_core.hpp>
00046 #include <boost/spirit/include/phoenix_operator.hpp>
00047 #include <boost/spirit/include/phoenix_fusion.hpp>
00048 #include <boost/spirit/include/phoenix_stl.hpp>
00049 #include <boost/spirit/home/phoenix/bind/bind_member_function.hpp>
00050 #include <boost/fusion/include/adapt_struct.hpp>
00051 #include <boost/variant/recursive_variant.hpp>
00052 
00053 namespace lama
00054 {
00055 
00056 namespace phoenix = boost::phoenix;
00057 namespace qi = boost::spirit::qi;
00058 namespace ascii = boost::spirit::ascii;
00059 
00060 class LAMA_DLL_IMPORTEXPORT IterativeSolverCreator : public SolverCreator
00061 {
00062 public:
00063     using SolverCreator::RuleType;
00064 
00065     virtual ~IterativeSolverCreator();
00066 
00070     virtual RuleType& getCreatorRule() = 0;
00071 
00072 protected:
00073     using SolverCreator::InternRuleType;
00074 
00075     IterativeSolverCreator();
00076 
00077     RuleType mRPreconditioner;
00078     InternRuleType mRIterativeSolver;
00079 
00080     using SolverCreator::mRSolver;
00081 
00082 private:
00083     LAMA_LOG_DECL_STATIC_LOGGER(logger);
00084 };
00085 
00086 }  // namespace lama
00087 
00088 #endif // LAMA_IterativeSolverCreator_HPP_