]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Restructure Factory class into internal namespace
authorMatthias Maier <tamiko@43-1.org>
Thu, 9 Apr 2015 22:50:12 +0000 (00:50 +0200)
committerMatthias Maier <tamiko@43-1.org>
Sun, 19 Apr 2015 20:55:06 +0000 (22:55 +0200)
include/deal.II/lac/block_vector.h
include/deal.II/lac/linear_operator.h
include/deal.II/lac/trilinos_block_vector.h
include/deal.II/lac/trilinos_parallel_block_vector.h
include/deal.II/lac/trilinos_vector.h

index d8cad92014c1f406505a7bd6b700cbd168c7c8a9..387645e4b93d457687f818b3d3907afee416f49e 100644 (file)
@@ -36,10 +36,6 @@ namespace TrilinosWrappers
 }
 #endif
 
-// forward declaration
-template <typename> class ReinitRangeFactory;
-template <typename> class ReinitDomainFactory;
-
 
 /*! @addtogroup Vectors
  *@{
@@ -464,44 +460,49 @@ void swap (BlockVector<Number> &u,
 }
 
 
-/**
- * Specialization for BlockVector<number>.
- */
-template<typename number>
-class ReinitRangeFactory<BlockVector<number> >
+namespace internal
 {
-public:
+  template <typename> class ReinitRangeFactory;
+  template <typename> class ReinitDomainFactory;
 
-  template <typename Matrix>
-  std::function<void(BlockVector<number> &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for BlockVector<number>.
+   */
+  template<typename number>
+  class ReinitRangeFactory<BlockVector<number> >
   {
-    return [&matrix](BlockVector<number> &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(BlockVector<number> &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.get_row_indices(), fast);
-    };
-  }
-};
-
-
-/**
- * Specialization for BlockVector<number>.
- */
-template<typename number>
-class ReinitDomainFactory<BlockVector<number> >
-{
-public:
-
-  template <typename Matrix>
-  std::function<void(BlockVector<number> &, bool)>
-  operator()(const Matrix &matrix)
+      return [&matrix](BlockVector<number> &v, bool fast)
+      {
+        v.reinit(matrix.get_row_indices(), fast);
+      };
+    }
+  };
+
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for BlockVector<number>.
+   */
+  template<typename number>
+  class ReinitDomainFactory<BlockVector<number> >
   {
-    return [&matrix](BlockVector<number> &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(BlockVector<number> &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.get_column_indices(), fast);
-    };
-  }
-};
+      return [&matrix](BlockVector<number> &v, bool fast)
+      {
+        v.reinit(matrix.get_column_indices(), fast);
+      };
+    }
+  };
+}
 
 DEAL_II_NAMESPACE_CLOSE
 
index e25adfde109c7da55a6af58c03f31460e2d4aa6a..f0a517fc33c74a3b3fc704169ed3bdd7430380a1 100644 (file)
@@ -718,62 +718,59 @@ block_linop(const std::array<std::array<LinearOperator<typename Range::BlockType
 
 
 
-/**
- * \relates LinearOperator
- *
- * A factory class that is responsible for the creation of a
- * reinit_range_vector object for a given pair of vector type Range and matrix
- * type Matrix.
- *
- * The generic version of this class just calls
- * <code>Range::reinit()</code> with the result of
- * <code>Matrix::m()</code>. This class is specialized for more complicated
- * data structures, such as TrilinosWrappers::MPI::Vector, etc.
- */
-template<typename Range>
-class ReinitRangeFactory
+namespace internal
 {
-public:
-
-  template <typename Matrix>
-  std::function<void(Range &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class that is responsible for the creation of a
+   * reinit_range_vector object for a given pair of vector type Range and matrix
+   * type Matrix.
+   *
+   * The generic version of this class just calls
+   * <code>Range::reinit()</code> with the result of
+   * <code>Matrix::m()</code>. This class is specialized for more complicated
+   * data structures, such as TrilinosWrappers::MPI::Vector, etc.
+   */
+  template<typename Range>
+  class ReinitRangeFactory
   {
-    return [&matrix](Range &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(Range &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.m(), fast);
-    };
-  }
-};
+      return [&matrix](Range &v, bool fast)
+      {
+        v.reinit(matrix.m(), fast);
+      };
+    }
+  };
 
 
-/**
- * \relates LinearOperator
- *
- * A factory class that is responsible for the creation of a
- * reinit_domain_vector object for a given pair of vector type Domain and
- * matrix type Matrix.
- *
- * The generic version of this class just calls
- * <code>Domain::reinit()</code> with the result of
- * <code>Matrix::n()</code>. This class is specialized for more complicated
- * data structures, such as TrilinosWrappers::MPI::Vector, etc.
- */
-template<typename Domain>
-class ReinitDomainFactory
-{
-public:
-
-  template <typename Matrix>
-  std::function<void(Domain &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class that is responsible for the creation of a
+   * reinit_domain_vector object for a given pair of vector type Domain and
+   * matrix type Matrix.
+   *
+   * The generic version of this class just calls
+   * <code>Domain::reinit()</code> with the result of
+   * <code>Matrix::n()</code>. This class is specialized for more complicated
+   * data structures, such as TrilinosWrappers::MPI::Vector, etc.
+   */
+  template<typename Domain>
+  class ReinitDomainFactory
   {
-    return [&matrix](Domain &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(Domain &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.n(), fast);
-    };
-  }
-};
+      return [&matrix](Domain &v, bool fast)
+      {
+        v.reinit(matrix.n(), fast);
+      };
+    }
+  };
+} /* namespace internal */
 
 
 namespace
@@ -813,7 +810,6 @@ namespace
   class MatrixInterfaceWithVmultAdd
   {
   public:
-
     template <typename Matrix>
     void operator()(LinearOperator<Range, Domain> &op, const Matrix &matrix)
     {
@@ -847,7 +843,6 @@ namespace
   class MatrixInterfaceWithoutVmultAdd
   {
   public:
-
     template <typename Matrix>
     void operator()(LinearOperator<Range, Domain> &op, const Matrix &matrix)
     {
@@ -985,10 +980,10 @@ LinearOperator<Range, Domain> linop(const Exemplar &exemplar,
   // or an exemplar cannot usually be copied...
 
   return_op.reinit_range_vector =
-    ReinitRangeFactory<Range>().operator()(exemplar);
+    internal::ReinitRangeFactory<Range>().operator()(exemplar);
 
   return_op.reinit_domain_vector =
-    ReinitDomainFactory<Domain>().operator()(exemplar);
+    internal::ReinitDomainFactory<Domain>().operator()(exemplar);
 
   typename std::conditional<
   has_vmult_add<Range, Domain, Matrix>::type::value,
index 4b3e2d610bf87f32f0072dbd65b78a5b22d77101..be7f29cc35b1bc3d4af890703ff9b3cd17b36b78 100644 (file)
@@ -449,87 +449,52 @@ namespace TrilinosWrappers
 
 } /* namespace TrilinosWrappers */
 
-
-/**
- * Specialization for TrilinosWrappers::MPI::BlockVector.
- */
-template<>
-class ReinitRangeFactory<TrilinosWrappers::MPI::BlockVector>
-{
-public:
-
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::MPI::BlockVector &, bool)>
-  operator()(const Matrix &matrix)
-  {
-    return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast)
-    {
-      v.reinit(matrix.range_partitioner(), fast);
-    };
-  }
-};
-
-
-/**
- * Specialization for TrilinosWrappers::MPI::BlockVector.
- */
-template<>
-class ReinitDomainFactory<TrilinosWrappers::MPI::BlockVector>
-{
-public:
-
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::MPI::BlockVector &, bool)>
-  operator()(const Matrix &matrix)
-  {
-    return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast)
-    {
-      v.reinit(matrix.domain_partitioner(), fast);
-    };
-  }
-};
+/*@}*/
 
 
-/**
- * Specialization for TrilinosWrappers::BlockVector.
- */
-template<>
-class ReinitRangeFactory<TrilinosWrappers::BlockVector>
+namespace internal
 {
-public:
+  template <typename> class ReinitRangeFactory;
+  template <typename> class ReinitDomainFactory;
 
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::BlockVector &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::BlockVector.
+   */
+  template<>
+  class ReinitRangeFactory<TrilinosWrappers::BlockVector>
   {
-    return [&matrix](TrilinosWrappers::BlockVector &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::BlockVector &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.range_partitioner(), fast);
-    };
-  }
-};
-
-
-/**
- * Specialization for TrilinosWrappers::BlockVector.
- */
-template<>
-class ReinitDomainFactory<TrilinosWrappers::BlockVector>
-{
-public:
+      return [&matrix](TrilinosWrappers::BlockVector &v, bool fast)
+      {
+        v.reinit(matrix.range_partitioner(), fast);
+      };
+    }
+  };
 
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::BlockVector &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::BlockVector.
+   */
+  template<>
+  class ReinitDomainFactory<TrilinosWrappers::BlockVector>
   {
-    return [&matrix](TrilinosWrappers::BlockVector &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::BlockVector &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.domain_partitioner(), fast);
-    };
-  }
-};
-
-/*@}*/
+      return [&matrix](TrilinosWrappers::BlockVector &v, bool fast)
+      {
+        v.reinit(matrix.domain_partitioner(), fast);
+      };
+    }
+  };
+} /* namespace internal */
 
 DEAL_II_NAMESPACE_CLOSE
 
index dc3ac1ca75401ba0552bc418542eeb7fb1707af5..b2fe52a8f95c29569dfb5f03b30ca66f80e1f31f 100644 (file)
@@ -460,12 +460,58 @@ namespace TrilinosWrappers
       u.swap (v);
     }
 
-  } /* end of namespace MPI */
+  } /* namespace MPI */
 
-}
+} /* namespace TrilinosWrappers */
 
 /*@}*/
 
+namespace internal
+{
+  template <typename> class ReinitRangeFactory;
+  template <typename> class ReinitDomainFactory;
+
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::MPI::BlockVector.
+   */
+  template<>
+  class ReinitRangeFactory<TrilinosWrappers::MPI::BlockVector>
+  {
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::MPI::BlockVector &, bool)>
+    operator()(const Matrix &matrix)
+    {
+      return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast)
+      {
+        v.reinit(matrix.range_partitioner(), fast);
+      };
+    }
+  };
+
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::MPI::BlockVector.
+   */
+  template<>
+  class ReinitDomainFactory<TrilinosWrappers::MPI::BlockVector>
+  {
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::MPI::BlockVector &, bool)>
+    operator()(const Matrix &matrix)
+    {
+      return [&matrix](TrilinosWrappers::MPI::BlockVector &v, bool fast)
+      {
+        v.reinit(matrix.domain_partitioner(), fast);
+      };
+    }
+  };
+} /* namespace internal */
+
+
+
 DEAL_II_NAMESPACE_CLOSE
 
 #endif  // DEAL_II_WITH_TRILINOS
index f4d252ed4172f6fc08a85b7ab7704ee052937782..8868c1df11f29928279d241de06ca04ecd2a1a80 100644 (file)
@@ -40,9 +40,6 @@ DEAL_II_NAMESPACE_OPEN
 // forward declaration
 template <typename> class Vector;
 
-template <typename> class ReinitRangeFactory;
-template <typename> class ReinitDomainFactory;
-
 /**
  * @addtogroup TrilinosWrappers
  * @{
@@ -938,91 +935,93 @@ namespace TrilinosWrappers
 
 #endif
 
-
 } /* namespace TrilinosWrappers */
 
+/*@}*/
 
-/**
- * Specialization for TrilinosWrappers::MPI::Vector.
- */
-template<>
-class ReinitRangeFactory<TrilinosWrappers::MPI::Vector>
+
+namespace internal
 {
-public:
+  template <typename> class ReinitRangeFactory;
+  template <typename> class ReinitDomainFactory;
 
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::MPI::Vector &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::MPI::Vector.
+   */
+  template<>
+  class ReinitRangeFactory<TrilinosWrappers::MPI::Vector>
   {
-    return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::MPI::Vector &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.range_partitioner(), fast);
-    };
-  }
-};
-
-
-/**
- * Specialization for TrilinosWrappers::MPI::Vector.
- */
-template<>
-class ReinitDomainFactory<TrilinosWrappers::MPI::Vector>
-{
-public:
+      return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast)
+      {
+        v.reinit(matrix.range_partitioner(), fast);
+      };
+    }
+  };
 
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::MPI::Vector &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::MPI::Vector.
+   */
+  template<>
+  class ReinitDomainFactory<TrilinosWrappers::MPI::Vector>
   {
-    return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::MPI::Vector &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.domain_partitioner(), fast);
-    };
-  }
-};
-
-
-/**
- * Specialization for TrilinosWrappers::MPI::Vector.
- */
-template<>
-class ReinitRangeFactory<TrilinosWrappers::Vector>
-{
-public:
+      return [&matrix](TrilinosWrappers::MPI::Vector &v, bool fast)
+      {
+        v.reinit(matrix.domain_partitioner(), fast);
+      };
+    }
+  };
 
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::Vector &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::MPI::Vector.
+   */
+  template<>
+  class ReinitRangeFactory<TrilinosWrappers::Vector>
   {
-    return [&matrix](TrilinosWrappers::Vector &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::Vector &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.range_partitioner(), fast);
-    };
-  }
-};
-
-
-/**
- * Specialization for TrilinosWrappers::MPI::Vector.
- */
-template<>
-class ReinitDomainFactory<TrilinosWrappers::Vector>
-{
-public:
+      return [&matrix](TrilinosWrappers::Vector &v, bool fast)
+      {
+        v.reinit(matrix.range_partitioner(), fast);
+      };
+    }
+  };
 
-  template <typename Matrix>
-  std::function<void(TrilinosWrappers::Vector &, bool)>
-  operator()(const Matrix &matrix)
+  /*
+   * A factory class internally used in linear_operator.h.
+   * Specialization for TrilinosWrappers::MPI::Vector.
+   */
+  template<>
+  class ReinitDomainFactory<TrilinosWrappers::Vector>
   {
-    return [&matrix](TrilinosWrappers::Vector &v, bool fast)
+  public:
+    template <typename Matrix>
+    std::function<void(TrilinosWrappers::Vector &, bool)>
+    operator()(const Matrix &matrix)
     {
-      v.reinit(matrix.domain_partitioner(), fast);
-    };
-  }
-};
-
+      return [&matrix](TrilinosWrappers::Vector &v, bool fast)
+      {
+        v.reinit(matrix.domain_partitioner(), fast);
+      };
+    }
+  };
+} /* namespace internal */
 
-/*@}*/
 
 DEAL_II_NAMESPACE_CLOSE
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.