]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Unify the way we declare iterator types. Move things into internal namespaces
authorWolfgang Bangerth <bangerth@math.tamu.edu>
Sat, 6 May 2006 03:28:30 +0000 (03:28 +0000)
committerWolfgang Bangerth <bangerth@math.tamu.edu>
Sat, 6 May 2006 03:28:30 +0000 (03:28 +0000)
git-svn-id: https://svn.dealii.org/trunk@13075 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/deal.II/include/dofs/dof_handler.h
deal.II/deal.II/include/dofs/dof_iterator_selector.h
deal.II/deal.II/include/dofs/hp_dof_handler.h
deal.II/deal.II/include/grid/tria.h
deal.II/deal.II/include/grid/tria_iterator_selector.h
deal.II/deal.II/include/multigrid/mg_dof_handler.h
deal.II/deal.II/source/multigrid/mg_dof_handler.cc

index 8034d0171f4f0b7916ed23b9aee69dc9d81ed4d5..8bed1d2e59ba3ebc67aeaaabc25aa50c3a0e5502 100644 (file)
@@ -104,7 +104,7 @@ namespace internal
 template <int dim>
 class DoFHandler  :  public Subscriptor
 {
-    typedef internal::DoFIterators<DoFHandler<dim> > IteratorSelector;
+    typedef internal::DoFHandler::Iterators<DoFHandler<dim> > IteratorSelector;
   public:
     typedef typename IteratorSelector::raw_line_iterator    raw_line_iterator;
     typedef typename IteratorSelector::line_iterator        line_iterator;
index 2d6e47b96411897cff208684da562347c0fda74f..33321988a096a32e4fea0f24f25cc3a4fc418b09 100644 (file)
@@ -34,6 +34,8 @@ template <int dim> class DoFHandler;
 
 namespace internal
 {
+  namespace DoFHandler
+  {
 /**
  * A pseudo class defining the iterator types used by DoFHandler and
  * hp::DoFHandler.  The typedefs in this class are synonymous with
@@ -54,45 +56,45 @@ namespace internal
  * @ingroup Accessors
  * @author W. Bangerth, G. Kanschat,  O. Kayser-Herold, 1998, 2003, 2006
  */
-  template <class DH>
-  struct DoFIterators
-  {
-                                      /// The dof handler class.
-      typedef DH DoFHandler_type;
-                                      /// The topological dimension of the dof handler.
-      static const unsigned int dim = DH::dimension;
+    template <class DH>
+    struct Iterators
+    {
+                                         /// The dof handler class.
+        typedef DH DoFHandler_type;
+                                         /// The topological dimension of the dof handler.
+        static const unsigned int dim = DH::dimension;
     
-                                      /// Iterator for raw lines.
-      typedef TriaRawIterator<dim, DoFObjectAccessor<1, DH> > raw_line_iterator;
-                                      /// Iterator for usual lines.
-      typedef TriaIterator<dim, DoFObjectAccessor<1, DH> > line_iterator;
-                                      /// Iterator for active lines.
-      typedef TriaActiveIterator<dim, DoFObjectAccessor<1, DH> > active_line_iterator;
-                                      /// Iterator for raw quadrilaterals
-      typedef TriaRawIterator<dim, DoFObjectAccessor<2, DH> > raw_quad_iterator;
-                                      /// Iterator for quadrilaterals
-      typedef TriaIterator<dim ,DoFObjectAccessor<2, DH> > quad_iterator;
-                                      /// Iterator for active quadrilaterals
-      typedef TriaActiveIterator<dim ,DoFObjectAccessor<2, DH> > active_quad_iterator;
-                                      /// Iterator for raw hexahedra
-      typedef TriaRawIterator<dim ,DoFObjectAccessor<3, DH> > raw_hex_iterator;
-                                      /// Iterator for hexahedra
-      typedef TriaIterator<dim ,DoFObjectAccessor<3, DH> > hex_iterator;
-                                      /// Iterator for active hexahedra
-      typedef TriaActiveIterator<dim ,DoFObjectAccessor<3, DH> > active_hex_iterator;
-                                      /// Iterator for raw cells
-      typedef TriaRawIterator<dim, DoFCellAccessor<DH> > raw_cell_iterator;
-                                      /// Iterator for cells
-      typedef TriaIterator<dim, DoFCellAccessor<DH> > cell_iterator;
-                                      /// Iterator for active cells
-      typedef TriaActiveIterator<dim, DoFCellAccessor<DH> > active_cell_iterator;
-                                      /// Iterator for raw faces
-      typedef TriaRawIterator<dim ,DoFObjectAccessor<dim-1, DH> > raw_face_iterator;
-                                      /// Iterator for faces
-      typedef TriaIterator<dim ,DoFObjectAccessor<dim-1, DH> > face_iterator;
-                                      /// Iterator for active faces
-      typedef TriaActiveIterator<dim ,DoFObjectAccessor<dim-1, DH> > active_face_iterator;
-  };
+                                         /// Iterator for raw lines.
+        typedef TriaRawIterator<dim, DoFObjectAccessor<1, DH> > raw_line_iterator;
+                                         /// Iterator for usual lines.
+        typedef TriaIterator<dim, DoFObjectAccessor<1, DH> > line_iterator;
+                                         /// Iterator for active lines.
+        typedef TriaActiveIterator<dim, DoFObjectAccessor<1, DH> > active_line_iterator;
+                                         /// Iterator for raw quadrilaterals
+        typedef TriaRawIterator<dim, DoFObjectAccessor<2, DH> > raw_quad_iterator;
+                                         /// Iterator for quadrilaterals
+        typedef TriaIterator<dim ,DoFObjectAccessor<2, DH> > quad_iterator;
+                                         /// Iterator for active quadrilaterals
+        typedef TriaActiveIterator<dim ,DoFObjectAccessor<2, DH> > active_quad_iterator;
+                                         /// Iterator for raw hexahedra
+        typedef TriaRawIterator<dim ,DoFObjectAccessor<3, DH> > raw_hex_iterator;
+                                         /// Iterator for hexahedra
+        typedef TriaIterator<dim ,DoFObjectAccessor<3, DH> > hex_iterator;
+                                         /// Iterator for active hexahedra
+        typedef TriaActiveIterator<dim ,DoFObjectAccessor<3, DH> > active_hex_iterator;
+                                         /// Iterator for raw cells
+        typedef TriaRawIterator<dim, DoFCellAccessor<DH> > raw_cell_iterator;
+                                         /// Iterator for cells
+        typedef TriaIterator<dim, DoFCellAccessor<DH> > cell_iterator;
+                                         /// Iterator for active cells
+        typedef TriaActiveIterator<dim, DoFCellAccessor<DH> > active_cell_iterator;
+                                         /// Iterator for raw faces
+        typedef TriaRawIterator<dim ,DoFObjectAccessor<dim-1, DH> > raw_face_iterator;
+                                         /// Iterator for faces
+        typedef TriaIterator<dim ,DoFObjectAccessor<dim-1, DH> > face_iterator;
+                                         /// Iterator for active faces
+        typedef TriaActiveIterator<dim ,DoFObjectAccessor<dim-1, DH> > active_face_iterator;
+    };
 
 
 
@@ -100,37 +102,37 @@ namespace internal
  * Define some types for the DoF handling in one dimension.
  *
  * The types have the same meaning as those declared in
- * TriaDimensionInfo<2>, only the treatment of templates is a
+ * internal::Triangulation::Iterators<2>, only the treatment of templates is a
  * little more complicated since the @p DoFAccessor classes want a
  * template template argument.
  *
  * @author Wolfgang Bangerth, Oliver Kayser-Herold, 1998, 2003
  */
-  template <template <int> class DH>
-  struct DoFIterators<DH<1> >
-  {
-      typedef DH<1> DoFHandler_type;
+    template <template <int> class DH>
+    struct Iterators<DH<1> >
+    {
+        typedef DH<1> DoFHandler_type;
     
-      typedef TriaRawIterator<1,DoFCellAccessor<DoFHandler_type> >    raw_line_iterator;
-      typedef TriaIterator<1,DoFCellAccessor<DoFHandler_type> >       line_iterator;
-      typedef TriaActiveIterator<1,DoFCellAccessor<DoFHandler_type> > active_line_iterator;
+        typedef TriaRawIterator<1,DoFCellAccessor<DoFHandler_type> >    raw_line_iterator;
+        typedef TriaIterator<1,DoFCellAccessor<DoFHandler_type> >       line_iterator;
+        typedef TriaActiveIterator<1,DoFCellAccessor<DoFHandler_type> > active_line_iterator;
     
-      typedef void * raw_quad_iterator;
-      typedef void * quad_iterator;
-      typedef void * active_quad_iterator;
+        typedef void * raw_quad_iterator;
+        typedef void * quad_iterator;
+        typedef void * active_quad_iterator;
     
-      typedef void * raw_hex_iterator;
-      typedef void * hex_iterator;
-      typedef void * active_hex_iterator;
+        typedef void * raw_hex_iterator;
+        typedef void * hex_iterator;
+        typedef void * active_hex_iterator;
     
-      typedef raw_line_iterator    raw_cell_iterator;
-      typedef line_iterator        cell_iterator;
-      typedef active_line_iterator active_cell_iterator;
+        typedef raw_line_iterator    raw_cell_iterator;
+        typedef line_iterator        cell_iterator;
+        typedef active_line_iterator active_cell_iterator;
     
-      typedef void * raw_face_iterator;
-      typedef void * face_iterator;
-      typedef void * active_face_iterator;
-  };
+        typedef void * raw_face_iterator;
+        typedef void * face_iterator;
+        typedef void * active_face_iterator;
+    };
 
 
 
@@ -138,37 +140,37 @@ namespace internal
  * Define some types for the DoF handling in two dimensions.
  *
  * The types have the same meaning as those declared in
- * TriaDimensionInfo<2>, only the treatment of templates is a
+ * internal::Triangulation::Iterators<2>, only the treatment of templates is a
  * little more complicated since the @p DoFAccessor classes want a
  * template template argument.
  *
  * @author Wolfgang Bangerth, Oliver Kayser-Herold, 1998, 2003
  */
-  template <template <int> class DH>
-  struct DoFIterators<DH<2> >
-  {
-      typedef DH<2> DoFHandler_type;
+    template <template <int> class DH>
+    struct Iterators<DH<2> >
+    {
+        typedef DH<2> DoFHandler_type;
     
-      typedef TriaRawIterator<2,DoFObjectAccessor<1, DoFHandler_type> >    raw_line_iterator;
-      typedef TriaIterator<2,DoFObjectAccessor<1, DoFHandler_type> >       line_iterator;
-      typedef TriaActiveIterator<2,DoFObjectAccessor<1, DoFHandler_type> > active_line_iterator;
+        typedef TriaRawIterator<2,DoFObjectAccessor<1, DoFHandler_type> >    raw_line_iterator;
+        typedef TriaIterator<2,DoFObjectAccessor<1, DoFHandler_type> >       line_iterator;
+        typedef TriaActiveIterator<2,DoFObjectAccessor<1, DoFHandler_type> > active_line_iterator;
     
-      typedef TriaRawIterator<2,DoFCellAccessor<DoFHandler_type> >         raw_quad_iterator;
-      typedef TriaIterator<2,DoFCellAccessor<DoFHandler_type> >            quad_iterator;
-      typedef TriaActiveIterator<2,DoFCellAccessor<DoFHandler_type> >      active_quad_iterator;
+        typedef TriaRawIterator<2,DoFCellAccessor<DoFHandler_type> >         raw_quad_iterator;
+        typedef TriaIterator<2,DoFCellAccessor<DoFHandler_type> >            quad_iterator;
+        typedef TriaActiveIterator<2,DoFCellAccessor<DoFHandler_type> >      active_quad_iterator;
     
-      typedef void * raw_hex_iterator;
-      typedef void * hex_iterator;
-      typedef void * active_hex_iterator;
+        typedef void * raw_hex_iterator;
+        typedef void * hex_iterator;
+        typedef void * active_hex_iterator;
     
-      typedef raw_quad_iterator    raw_cell_iterator;
-      typedef quad_iterator        cell_iterator;
-      typedef active_quad_iterator active_cell_iterator;
+        typedef raw_quad_iterator    raw_cell_iterator;
+        typedef quad_iterator        cell_iterator;
+        typedef active_quad_iterator active_cell_iterator;
     
-      typedef raw_line_iterator    raw_face_iterator;
-      typedef line_iterator        face_iterator;
-      typedef active_line_iterator active_face_iterator;    
-  };
+        typedef raw_line_iterator    raw_face_iterator;
+        typedef line_iterator        face_iterator;
+        typedef active_line_iterator active_face_iterator;    
+    };
 
 
 
@@ -176,37 +178,38 @@ namespace internal
  * Define some types for the DoF handling in two dimensions.
  *
  * The types have the same meaning as those declared in
- * TriaDimensionInfo<3>, only the treatment of templates is a
+ * internal::Triangulation::Iterators<3>, only the treatment of templates is a
  * little more complicated since the @p DoFAccessor classes want a
  * template template argument.
  *
  * @author Wolfgang Bangerth, Oliver Kayser-Herold, 1998, 2003
  */
-  template <template <int> class DH>
-  struct DoFIterators<DH<3> >
-  {
-      typedef DH<3> DoFHandler_type;
+    template <template <int> class DH>
+    struct Iterators<DH<3> >
+    {
+        typedef DH<3> DoFHandler_type;
       
-      typedef TriaRawIterator<3,DoFObjectAccessor<1, DoFHandler_type> >    raw_line_iterator;
-      typedef TriaIterator<3,DoFObjectAccessor<1, DoFHandler_type> >       line_iterator;
-      typedef TriaActiveIterator<3,DoFObjectAccessor<1, DoFHandler_type> > active_line_iterator;
+        typedef TriaRawIterator<3,DoFObjectAccessor<1, DoFHandler_type> >    raw_line_iterator;
+        typedef TriaIterator<3,DoFObjectAccessor<1, DoFHandler_type> >       line_iterator;
+        typedef TriaActiveIterator<3,DoFObjectAccessor<1, DoFHandler_type> > active_line_iterator;
       
-      typedef TriaRawIterator<3,DoFObjectAccessor<2, DoFHandler_type> >    raw_quad_iterator;
-      typedef TriaIterator<3,DoFObjectAccessor<2, DoFHandler_type> >       quad_iterator;
-      typedef TriaActiveIterator<3,DoFObjectAccessor<2, DoFHandler_type> > active_quad_iterator;
+        typedef TriaRawIterator<3,DoFObjectAccessor<2, DoFHandler_type> >    raw_quad_iterator;
+        typedef TriaIterator<3,DoFObjectAccessor<2, DoFHandler_type> >       quad_iterator;
+        typedef TriaActiveIterator<3,DoFObjectAccessor<2, DoFHandler_type> > active_quad_iterator;
       
-      typedef TriaRawIterator<3,DoFCellAccessor<DoFHandler_type> >         raw_hex_iterator;
-      typedef TriaIterator<3,DoFCellAccessor<DoFHandler_type> >            hex_iterator;
-      typedef TriaActiveIterator<3,DoFCellAccessor<DoFHandler_type> >      active_hex_iterator;
+        typedef TriaRawIterator<3,DoFCellAccessor<DoFHandler_type> >         raw_hex_iterator;
+        typedef TriaIterator<3,DoFCellAccessor<DoFHandler_type> >            hex_iterator;
+        typedef TriaActiveIterator<3,DoFCellAccessor<DoFHandler_type> >      active_hex_iterator;
       
-      typedef raw_hex_iterator    raw_cell_iterator;
-      typedef hex_iterator        cell_iterator;
-      typedef active_hex_iterator active_cell_iterator;
+        typedef raw_hex_iterator    raw_cell_iterator;
+        typedef hex_iterator        cell_iterator;
+        typedef active_hex_iterator active_cell_iterator;
       
-      typedef raw_quad_iterator    raw_face_iterator;
-      typedef quad_iterator        face_iterator;
-      typedef active_quad_iterator active_face_iterator;    
-  };
+        typedef raw_quad_iterator    raw_face_iterator;
+        typedef quad_iterator        face_iterator;
+        typedef active_quad_iterator active_face_iterator;    
+    };
+  }
 }
 
 #endif // __deal2__dof_iterator_selector_h
index 128d80cb268e8417185a7f33f7492c323e456ae8..170c3b4d496813ae9b0e1e3a166661d0e4c6b89d 100644 (file)
@@ -60,7 +60,7 @@ namespace hp
   class DoFHandler : public Subscriptor,
                      protected Triangulation<dim>::RefinementListener
   {
-      typedef internal::DoFIterators<DoFHandler<dim> > IteratorSelector;
+      typedef internal::DoFHandler::Iterators<DoFHandler<dim> > IteratorSelector;
     public:
       typedef typename IteratorSelector::raw_line_iterator raw_line_iterator;
       typedef typename IteratorSelector::line_iterator line_iterator;
index e66568a6d7f1646bd95bacb94d019caa925a2062..b1b14e3196a5e8838d999d3a2c72cacea7839712 100644 (file)
@@ -1177,7 +1177,7 @@ class Triangulation : public Subscriptor
                                      * the definition of the iterator
                                      * classes simpler.
                                      */
-    typedef internal::TriaIterators<dim> IteratorSelector;
+    typedef internal::Triangulation::Iterators<dim> IteratorSelector;
                      
   public:
     
index b1e2593263a0bdf00ddc470a753fd5508d9cd0cd..f3a26696b7606d7c96b41d41cb857bfdd6499f2f 100644 (file)
@@ -28,7 +28,8 @@ template <int dim, typename Accessor> class TriaActiveIterator;
 
 namespace internal 
 {
-
+  namespace Triangulation
+  {
 /**
  * Definition of the iterator types of the Triangulation.
  *
@@ -39,44 +40,44 @@ namespace internal
  *
  * @author Wolfgang Bangerth, Guido Kanschat, 1998, 2006
  */
-  template <int dim>
-  struct TriaIterators
-  {
-                                      /// Iterate on raw lines
-      typedef TriaRawIterator<dim,TriaObjectAccessor<1, dim> > raw_line_iterator;
-                                      /// Iterate on raw lines
-      typedef TriaIterator<dim,TriaObjectAccessor<1, dim> > line_iterator;
-                                      /// Iterate on raw lines
-      typedef TriaActiveIterator<dim,TriaObjectAccessor<1, dim> > active_line_iterator;
+    template <int dim>
+    struct Iterators
+    {
+                                         /// Iterate on raw lines
+        typedef TriaRawIterator<dim,TriaObjectAccessor<1, dim> > raw_line_iterator;
+                                         /// Iterate on raw lines
+        typedef TriaIterator<dim,TriaObjectAccessor<1, dim> > line_iterator;
+                                         /// Iterate on raw lines
+        typedef TriaActiveIterator<dim,TriaObjectAccessor<1, dim> > active_line_iterator;
     
-                                      /// Iterate on raw quadrilaterals
-      typedef TriaRawIterator<dim,TriaObjectAccessor<2, dim> > raw_quad_iterator;
-                                      /// Iterate on quadrilaterals
-      typedef TriaIterator<dim,TriaObjectAccessor<2, dim> > quad_iterator;
-                                      /// Iterate on active quadrilaterals
-      typedef TriaActiveIterator<dim,TriaObjectAccessor<2, dim> > active_quad_iterator;
-
-                                      /// Iterate on raw hexahedra
-      typedef TriaRawIterator<dim,TriaObjectAccessor<3, dim> > raw_hex_iterator;
-                                      /// Iterate on hexahedra
-      typedef TriaIterator<dim,TriaObjectAccessor<3, dim> > hex_iterator;
-                                      /// Iterate on active hexahedra
-      typedef TriaActiveIterator<dim,TriaObjectAccessor<3, dim> > active_hex_iterator;
-
-                                      /// Iterate on raw cells
-      typedef TriaRawIterator<dim,CellAccessor<dim> > raw_cell_iterator;
-                                      /// Iterate on cells
-      typedef TriaIterator<dim,CellAccessor<dim> > cell_iterator;
-                                      /// Iterate on active cells
-      typedef TriaActiveIterator<dim,CellAccessor<dim> > active_cell_iterator;
-
-                                      /// Iterate on raw faces
-      typedef TriaRawIterator<dim,TriaObjectAccessor<dim-1, dim> > raw_face_iterator;
-                                      /// Iterate on faces
-      typedef TriaIterator<dim,TriaObjectAccessor<dim-1, dim> > face_iterator;
-                                      /// Iterate on active faces
-      typedef TriaActiveIterator<dim,TriaObjectAccessor<dim-1, dim> > active_face_iterator;
-  };
+                                         /// Iterate on raw quadrilaterals
+        typedef TriaRawIterator<dim,TriaObjectAccessor<2, dim> > raw_quad_iterator;
+                                         /// Iterate on quadrilaterals
+        typedef TriaIterator<dim,TriaObjectAccessor<2, dim> > quad_iterator;
+                                         /// Iterate on active quadrilaterals
+        typedef TriaActiveIterator<dim,TriaObjectAccessor<2, dim> > active_quad_iterator;
+
+                                         /// Iterate on raw hexahedra
+        typedef TriaRawIterator<dim,TriaObjectAccessor<3, dim> > raw_hex_iterator;
+                                         /// Iterate on hexahedra
+        typedef TriaIterator<dim,TriaObjectAccessor<3, dim> > hex_iterator;
+                                         /// Iterate on active hexahedra
+        typedef TriaActiveIterator<dim,TriaObjectAccessor<3, dim> > active_hex_iterator;
+
+                                         /// Iterate on raw cells
+        typedef TriaRawIterator<dim,CellAccessor<dim> > raw_cell_iterator;
+                                         /// Iterate on cells
+        typedef TriaIterator<dim,CellAccessor<dim> > cell_iterator;
+                                         /// Iterate on active cells
+        typedef TriaActiveIterator<dim,CellAccessor<dim> > active_cell_iterator;
+
+                                         /// Iterate on raw faces
+        typedef TriaRawIterator<dim,TriaObjectAccessor<dim-1, dim> > raw_face_iterator;
+                                         /// Iterate on faces
+        typedef TriaIterator<dim,TriaObjectAccessor<dim-1, dim> > face_iterator;
+                                         /// Iterate on active faces
+        typedef TriaActiveIterator<dim,TriaObjectAccessor<dim-1, dim> > active_face_iterator;
+    };
 
 
 
@@ -108,29 +109,29 @@ namespace internal
  *
  * @author Wolfgang Bangerth, 1998
  */
-  template <>
-  struct TriaIterators<1>
-  {
-      typedef TriaRawIterator<1,CellAccessor<1> >    raw_line_iterator;
-      typedef TriaIterator<1,CellAccessor<1> >       line_iterator;
-      typedef TriaActiveIterator<1,CellAccessor<1> > active_line_iterator;
+    template <>
+    struct Iterators<1>
+    {
+        typedef TriaRawIterator<1,CellAccessor<1> >    raw_line_iterator;
+        typedef TriaIterator<1,CellAccessor<1> >       line_iterator;
+        typedef TriaActiveIterator<1,CellAccessor<1> > active_line_iterator;
 
-      typedef void * raw_quad_iterator;
-      typedef void * quad_iterator;
-      typedef void * active_quad_iterator;
+        typedef void * raw_quad_iterator;
+        typedef void * quad_iterator;
+        typedef void * active_quad_iterator;
 
-      typedef void * raw_hex_iterator;
-      typedef void * hex_iterator;
-      typedef void * active_hex_iterator;
+        typedef void * raw_hex_iterator;
+        typedef void * hex_iterator;
+        typedef void * active_hex_iterator;
 
-      typedef raw_line_iterator    raw_cell_iterator;
-      typedef line_iterator        cell_iterator;
-      typedef active_line_iterator active_cell_iterator;
+        typedef raw_line_iterator    raw_cell_iterator;
+        typedef line_iterator        cell_iterator;
+        typedef active_line_iterator active_cell_iterator;
 
-      typedef void * raw_face_iterator;
-      typedef void * face_iterator;
-      typedef void * active_face_iterator;
-  };
+        typedef void * raw_face_iterator;
+        typedef void * face_iterator;
+        typedef void * active_face_iterator;
+    };
 
 
 
@@ -168,29 +169,29 @@ namespace internal
  *
  * @author Wolfgang Bangerth, 1998
  */
-  template <>
-  struct TriaIterators<2>
-  {
-      typedef TriaRawIterator<2,TriaObjectAccessor<1, 2> >    raw_line_iterator;
-      typedef TriaIterator<2,TriaObjectAccessor<1, 2> >       line_iterator;
-      typedef TriaActiveIterator<2,TriaObjectAccessor<1, 2> > active_line_iterator;
+    template <>
+    struct Iterators<2>
+    {
+        typedef TriaRawIterator<2,TriaObjectAccessor<1, 2> >    raw_line_iterator;
+        typedef TriaIterator<2,TriaObjectAccessor<1, 2> >       line_iterator;
+        typedef TriaActiveIterator<2,TriaObjectAccessor<1, 2> > active_line_iterator;
     
-      typedef TriaRawIterator<2,CellAccessor<2> >    raw_quad_iterator;
-      typedef TriaIterator<2,CellAccessor<2> >       quad_iterator;
-      typedef TriaActiveIterator<2,CellAccessor<2> > active_quad_iterator;
+        typedef TriaRawIterator<2,CellAccessor<2> >    raw_quad_iterator;
+        typedef TriaIterator<2,CellAccessor<2> >       quad_iterator;
+        typedef TriaActiveIterator<2,CellAccessor<2> > active_quad_iterator;
 
-      typedef void * raw_hex_iterator;
-      typedef void * hex_iterator;
-      typedef void * active_hex_iterator;
+        typedef void * raw_hex_iterator;
+        typedef void * hex_iterator;
+        typedef void * active_hex_iterator;
 
-      typedef raw_quad_iterator    raw_cell_iterator;
-      typedef quad_iterator        cell_iterator;
-      typedef active_quad_iterator active_cell_iterator;
+        typedef raw_quad_iterator    raw_cell_iterator;
+        typedef quad_iterator        cell_iterator;
+        typedef active_quad_iterator active_cell_iterator;
 
-      typedef raw_line_iterator    raw_face_iterator;
-      typedef line_iterator        face_iterator;
-      typedef active_line_iterator active_face_iterator;    
-  };
+        typedef raw_line_iterator    raw_face_iterator;
+        typedef line_iterator        face_iterator;
+        typedef active_line_iterator active_face_iterator;    
+    };
 
 
 
@@ -199,7 +200,7 @@ namespace internal
  *  These are the declararions for the 3D case only.
  *
  *  For the declarations of the data types, more or less the same holds
- *  as for lower dimensions (see <tt>TriaIterators<[12]></tt>). The
+ *  as for lower dimensions (see <tt>Iterators<[12]></tt>). The
  *  dimension specific data types are here, since we are in three dimensions:
  *  @verbatim
  *    typedef raw_hex_iterator    raw_cell_iterator;
@@ -213,30 +214,31 @@ namespace internal
  *
  * @author Wolfgang Bangerth, 1998
  */
-  template <>
-  struct TriaIterators<3>
-  {
-      typedef TriaRawIterator<3,TriaObjectAccessor<1, 3> >    raw_line_iterator;
-      typedef TriaIterator<3,TriaObjectAccessor<1, 3> >       line_iterator;
-      typedef TriaActiveIterator<3,TriaObjectAccessor<1, 3> > active_line_iterator;
+    template <>
+    struct Iterators<3>
+    {
+        typedef TriaRawIterator<3,TriaObjectAccessor<1, 3> >    raw_line_iterator;
+        typedef TriaIterator<3,TriaObjectAccessor<1, 3> >       line_iterator;
+        typedef TriaActiveIterator<3,TriaObjectAccessor<1, 3> > active_line_iterator;
     
-      typedef TriaRawIterator<3,TriaObjectAccessor<2, 3> >    raw_quad_iterator;
-      typedef TriaIterator<3,TriaObjectAccessor<2, 3> >       quad_iterator;
-      typedef TriaActiveIterator<3,TriaObjectAccessor<2, 3> > active_quad_iterator;
-
-      typedef TriaRawIterator<3,CellAccessor<3> >    raw_hex_iterator;
-      typedef TriaIterator<3,CellAccessor<3> >       hex_iterator;
-      typedef TriaActiveIterator<3,CellAccessor<3> > active_hex_iterator;
-
-      typedef raw_hex_iterator    raw_cell_iterator;
-      typedef hex_iterator        cell_iterator;
-      typedef active_hex_iterator active_cell_iterator;
-
-      typedef raw_quad_iterator    raw_face_iterator;
-      typedef quad_iterator        face_iterator;
-      typedef active_quad_iterator active_face_iterator;    
-  };
-
+        typedef TriaRawIterator<3,TriaObjectAccessor<2, 3> >    raw_quad_iterator;
+        typedef TriaIterator<3,TriaObjectAccessor<2, 3> >       quad_iterator;
+        typedef TriaActiveIterator<3,TriaObjectAccessor<2, 3> > active_quad_iterator;
+
+        typedef TriaRawIterator<3,CellAccessor<3> >    raw_hex_iterator;
+        typedef TriaIterator<3,CellAccessor<3> >       hex_iterator;
+        typedef TriaActiveIterator<3,CellAccessor<3> > active_hex_iterator;
+
+        typedef raw_hex_iterator    raw_cell_iterator;
+        typedef hex_iterator        cell_iterator;
+        typedef active_hex_iterator active_cell_iterator;
+
+        typedef raw_quad_iterator    raw_face_iterator;
+        typedef quad_iterator        face_iterator;
+        typedef active_quad_iterator active_face_iterator;    
+    };
+  
+  }
   
 }
 
index 7ce9888feee898115cb825e5e30ef708f6a20a1c..124a37e2dfd97e05f3216dfca4cd80a9e3cf78ad 100644 (file)
 
 #include <base/config.h>
 #include <dofs/dof_handler.h>
-
-template <int celldim, int dim> class MGDoFAccessor;
-template <int celldim, int dim> class MGDoFObjectAccessor;
-template <int dim>              class MGDoFObjectAccessor<0, dim>;
-template <int dim>              class MGDoFObjectAccessor<1, dim>;
-template <int dim>              class MGDoFObjectAccessor<2, dim>;
-template <int dim>              class MGDoFObjectAccessor<3, dim>;
-template <int dim> class MGDoFCellAccessor;
-
-/*!@addtogroup mg */
-/*@{*/
-
-/**
- * Depending on the dimension, this class defines the iterator types for
- * MGDoFHandler objects.
- *
- * @note The typedefs in this class are only for reference. Their real
- * values are to be found in the specializations for different
- * dimensions.
- */
-template <int dim>
-class MGDoFDimensionInfo
-{
-                                    /// Line iterator for internal use
-    typedef void * raw_line_iterator;
-                                    /// Line iterator for all lines of hierarchy
-    typedef void * line_iterator;
-                                    /// Iterator for active lines
-    typedef void * active_line_iterator;
-    
-                                    /// Quad iterator for internal use
-    typedef void * raw_quad_iterator;
-                                    /// Quad iterator for all quadrilaterals of hierarchy
-    typedef void * quad_iterator;
-                                    /// Iterator for active quadrilaterals
-    typedef void * active_quad_iterator;
-
-                                    /// Hex iterator for internal use
-    typedef void * raw_hex_iterator;
-                                    /// Hex iterator for all hexahedra of hierarchy
-    typedef void * hex_iterator;
-                                    /// Iterator for active hexahedra
-    typedef void * active_hex_iterator;
-
-                                    /** Cell iterator for internal
-                                     * use. It is defined as one of
-                                     * the raw iterators above,
-                                     * depending on the dimension.
-                                     */
-    typedef void * raw_cell_iterator;
-                                    /** Cell iterator for all cells
-                                     * of hierarchy. It is defined as
-                                     * one of the iterators above,
-                                     * depending on the dimension.
-                                     */
-    typedef void * cell_iterator;
-                                    /** Iterator for active cells. It
-                                     * is defined as one of the
-                                     * active iterators above,
-                                     * depending on the dimension.
-                                     */
-    typedef void * active_cell_iterator;
-
-                                    /** Face iterator for internal
-                                     * use. It is defined as one of
-                                     * the raw iterators above,
-                                     * depending on the dimension.
-                                     */
-   typedef void * raw_face_iterator;
-                                    /** Face iterator for all faces
-                                     * of hierarchy. It is defined as
-                                     * one of the iterators above,
-                                     * depending on the dimension.
-                                     */
-    typedef void * face_iterator;
-                                    /** Iterator for active faces. It
-                                     * is defined as one of the
-                                     * active iterators above,
-                                     * depending on the dimension.
-                                     */
-    typedef void * active_face_iterator;
-};
-
-
-
-/**
- * Iterators for MGDofHandler in one dimension. See the template
- * MGDoFDimensionInfo for further explanation.
- */
-template <>
-class MGDoFDimensionInfo<1>
-{
-  public:
-    typedef TriaRawIterator<1,MGDoFCellAccessor<1> >    raw_line_iterator;
-    typedef TriaIterator<1,MGDoFCellAccessor<1> >       line_iterator;
-    typedef TriaActiveIterator<1,MGDoFCellAccessor<1> > active_line_iterator;
-
-    typedef void * raw_quad_iterator;
-    typedef void * quad_iterator;
-    typedef void * active_quad_iterator;
-
-    typedef void * raw_hex_iterator;
-    typedef void * hex_iterator;
-    typedef void * active_hex_iterator;
-
-    typedef raw_line_iterator    raw_cell_iterator;
-    typedef line_iterator        cell_iterator;
-    typedef active_line_iterator active_cell_iterator;
-
-    typedef void * raw_face_iterator;
-    typedef void * face_iterator;
-    typedef void * active_face_iterator;
-};
-
-
-
-/**
- * Iterators for MGDofHandler in one dimension. See the template
- * MGDoFDimensionInfo for further explanation.
- */
-template <>
-class MGDoFDimensionInfo<2>
-{
-  public:
-    typedef TriaRawIterator<2,MGDoFObjectAccessor<1, 2> >    raw_line_iterator;
-    typedef TriaIterator<2,MGDoFObjectAccessor<1, 2> >       line_iterator;
-    typedef TriaActiveIterator<2,MGDoFObjectAccessor<1, 2> > active_line_iterator;
-    
-    typedef TriaRawIterator<2,MGDoFCellAccessor<2> >         raw_quad_iterator;
-    typedef TriaIterator<2,MGDoFCellAccessor<2> >            quad_iterator;
-    typedef TriaActiveIterator<2,MGDoFCellAccessor<2> >      active_quad_iterator;
-
-    typedef void * raw_hex_iterator;
-    typedef void * hex_iterator;
-    typedef void * active_hex_iterator;
-
-    typedef raw_quad_iterator    raw_cell_iterator;
-    typedef quad_iterator        cell_iterator;
-    typedef active_quad_iterator active_cell_iterator;
-
-    typedef raw_line_iterator    raw_face_iterator;
-    typedef line_iterator        face_iterator;
-    typedef active_line_iterator active_face_iterator;    
-};
-
-
-
-/**
- * Iterators for MGDofHandler in one dimension. See the template
- * MGDoFDimensionInfo for further explanation.
- */
-template <>
-class MGDoFDimensionInfo<3>
-{
-  public:
-    typedef TriaRawIterator<3,MGDoFObjectAccessor<1, 3> >    raw_line_iterator;
-    typedef TriaIterator<3,MGDoFObjectAccessor<1, 3> >       line_iterator;
-    typedef TriaActiveIterator<3,MGDoFObjectAccessor<1, 3> > active_line_iterator;
-
-    typedef TriaRawIterator<3,MGDoFObjectAccessor<2, 3> >    raw_quad_iterator;
-    typedef TriaIterator<3,MGDoFObjectAccessor<2, 3> >       quad_iterator;
-    typedef TriaActiveIterator<3,MGDoFObjectAccessor<2, 3> > active_quad_iterator;
-
-    typedef TriaRawIterator<3,MGDoFCellAccessor<3> >               raw_hex_iterator;
-    typedef TriaIterator<3,MGDoFCellAccessor<3> >                  hex_iterator;
-    typedef TriaActiveIterator<3,MGDoFCellAccessor<3> >            active_hex_iterator;
-
-    typedef raw_hex_iterator    raw_cell_iterator;
-    typedef hex_iterator        cell_iterator;
-    typedef active_hex_iterator active_cell_iterator;
-
-    typedef raw_quad_iterator    raw_face_iterator;
-    typedef quad_iterator        face_iterator;
-    typedef active_quad_iterator active_face_iterator;    
-};
+#include <multigrid/mg_dof_iterator_selector.h>
 
 
 
@@ -211,25 +37,25 @@ template <int dim>
 class MGDoFHandler : public DoFHandler<dim>
 {
   public:
-    typedef typename MGDoFDimensionInfo<dim>::raw_line_iterator raw_line_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::line_iterator line_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::active_line_iterator active_line_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::raw_line_iterator raw_line_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::line_iterator line_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::active_line_iterator active_line_iterator;
 
-    typedef typename MGDoFDimensionInfo<dim>::raw_quad_iterator raw_quad_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::quad_iterator quad_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::active_quad_iterator active_quad_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::raw_quad_iterator raw_quad_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::quad_iterator quad_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::active_quad_iterator active_quad_iterator;
 
-    typedef typename MGDoFDimensionInfo<dim>::raw_hex_iterator raw_hex_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::hex_iterator hex_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::active_hex_iterator active_hex_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::raw_hex_iterator raw_hex_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::hex_iterator hex_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::active_hex_iterator active_hex_iterator;
 
-    typedef typename MGDoFDimensionInfo<dim>::raw_cell_iterator raw_cell_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::cell_iterator cell_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::active_cell_iterator active_cell_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::raw_cell_iterator raw_cell_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::cell_iterator cell_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::active_cell_iterator active_cell_iterator;
 
-    typedef typename MGDoFDimensionInfo<dim>::raw_face_iterator raw_face_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::face_iterator face_iterator;
-    typedef typename MGDoFDimensionInfo<dim>::active_face_iterator active_face_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::raw_face_iterator raw_face_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::face_iterator face_iterator;
+    typedef typename internal::MGDoFHandler::Iterators<dim>::active_face_iterator active_face_iterator;
 
                                     /**
                                      * Make the dimension available
@@ -1250,34 +1076,34 @@ template <>
 MGDoFHandler<1>::active_cell_iterator
 MGDoFHandler<1>::last_active (const unsigned int level) const;
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::begin_raw_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<1>::face_iterator
+internal::MGDoFHandler::Iterators<1>::face_iterator
 MGDoFHandler<1>::begin_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<1>::active_face_iterator
+internal::MGDoFHandler::Iterators<1>::active_face_iterator
 MGDoFHandler<1>::begin_active_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::end_face () const;
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::last_raw_face () const;
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::last_raw_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<1>::face_iterator
+internal::MGDoFHandler::Iterators<1>::face_iterator
 MGDoFHandler<1>::last_face () const;
 template <>
-MGDoFDimensionInfo<1>::face_iterator
+internal::MGDoFHandler::Iterators<1>::face_iterator
 MGDoFHandler<1>::last_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<1>::active_face_iterator
+internal::MGDoFHandler::Iterators<1>::active_face_iterator
 MGDoFHandler<1>::last_active_face () const;
 template <>
-MGDoFDimensionInfo<1>::active_face_iterator
+internal::MGDoFHandler::Iterators<1>::active_face_iterator
 MGDoFHandler<1>::last_active_face (const unsigned int) const;
 template <>
 MGDoFHandler<1>::raw_quad_iterator
@@ -1371,34 +1197,34 @@ template <>
 MGDoFHandler<2>::active_cell_iterator
 MGDoFHandler<2>::last_active (const unsigned int level) const;
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::begin_raw_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<2>::face_iterator
+internal::MGDoFHandler::Iterators<2>::face_iterator
 MGDoFHandler<2>::begin_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<2>::active_face_iterator
+internal::MGDoFHandler::Iterators<2>::active_face_iterator
 MGDoFHandler<2>::begin_active_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::end_face () const;
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::last_raw_face () const;
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::last_raw_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<2>::face_iterator
+internal::MGDoFHandler::Iterators<2>::face_iterator
 MGDoFHandler<2>::last_face () const;
 template <>
-MGDoFDimensionInfo<2>::face_iterator
+internal::MGDoFHandler::Iterators<2>::face_iterator
 MGDoFHandler<2>::last_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<2>::active_face_iterator
+internal::MGDoFHandler::Iterators<2>::active_face_iterator
 MGDoFHandler<2>::last_active_face () const;
 template <>
-MGDoFDimensionInfo<2>::active_face_iterator
+internal::MGDoFHandler::Iterators<2>::active_face_iterator
 MGDoFHandler<2>::last_active_face (const unsigned int) const;
 template <>
 MGDoFHandler<2>::raw_hex_iterator
@@ -1462,34 +1288,34 @@ template <>
 MGDoFHandler<3>::active_cell_iterator
 MGDoFHandler<3>::last_active (const unsigned int level) const;
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::begin_raw_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<3>::face_iterator
+internal::MGDoFHandler::Iterators<3>::face_iterator
 MGDoFHandler<3>::begin_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<3>::active_face_iterator
+internal::MGDoFHandler::Iterators<3>::active_face_iterator
 MGDoFHandler<3>::begin_active_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::end_face () const;
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::last_raw_face () const;
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::last_raw_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<3>::face_iterator
+internal::MGDoFHandler::Iterators<3>::face_iterator
 MGDoFHandler<3>::last_face () const;
 template <>
-MGDoFDimensionInfo<3>::face_iterator
+internal::MGDoFHandler::Iterators<3>::face_iterator
 MGDoFHandler<3>::last_face (const unsigned int) const;
 template <>
-MGDoFDimensionInfo<3>::active_face_iterator
+internal::MGDoFHandler::Iterators<3>::active_face_iterator
 MGDoFHandler<3>::last_active_face () const;
 template <>
-MGDoFDimensionInfo<3>::active_face_iterator
+internal::MGDoFHandler::Iterators<3>::active_face_iterator
 MGDoFHandler<3>::last_active_face (const unsigned int) const;
 
 
index d3f040cb393d49fced361e4ceae43e5bc7a5cf42..fad50410705e21d6387d069d4945c52db79caa33 100644 (file)
@@ -203,7 +203,7 @@ MGDoFHandler<1>::last_active (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::begin_raw_face (const unsigned int) const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -212,7 +212,7 @@ MGDoFHandler<1>::begin_raw_face (const unsigned int) const
 
 
 template <>
-MGDoFDimensionInfo<1>::face_iterator
+internal::MGDoFHandler::Iterators<1>::face_iterator
 MGDoFHandler<1>::begin_face (const unsigned int) const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -221,7 +221,7 @@ MGDoFHandler<1>::begin_face (const unsigned int) const
 
 
 template <>
-MGDoFDimensionInfo<1>::active_face_iterator
+internal::MGDoFHandler::Iterators<1>::active_face_iterator
 MGDoFHandler<1>::begin_active_face (const unsigned int) const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -230,7 +230,7 @@ MGDoFHandler<1>::begin_active_face (const unsigned int) const
 
 
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::end_face () const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -239,7 +239,7 @@ MGDoFHandler<1>::end_face () const
 
 
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::last_raw_face () const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -248,7 +248,7 @@ MGDoFHandler<1>::last_raw_face () const
 
 
 template <>
-MGDoFDimensionInfo<1>::raw_face_iterator
+internal::MGDoFHandler::Iterators<1>::raw_face_iterator
 MGDoFHandler<1>::last_raw_face (const unsigned int) const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -257,7 +257,7 @@ MGDoFHandler<1>::last_raw_face (const unsigned int) const
 
 
 template <>
-MGDoFDimensionInfo<1>::face_iterator
+internal::MGDoFHandler::Iterators<1>::face_iterator
 MGDoFHandler<1>::last_face () const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -266,7 +266,7 @@ MGDoFHandler<1>::last_face () const
 
 
 template <>
-MGDoFDimensionInfo<1>::face_iterator
+internal::MGDoFHandler::Iterators<1>::face_iterator
 MGDoFHandler<1>::last_face (const unsigned int) const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -275,7 +275,7 @@ MGDoFHandler<1>::last_face (const unsigned int) const
 
 
 template <>
-MGDoFDimensionInfo<1>::active_face_iterator
+internal::MGDoFHandler::Iterators<1>::active_face_iterator
 MGDoFHandler<1>::last_active_face () const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -284,7 +284,7 @@ MGDoFHandler<1>::last_active_face () const
 
 
 template <>
-MGDoFDimensionInfo<1>::active_face_iterator
+internal::MGDoFHandler::Iterators<1>::active_face_iterator
 MGDoFHandler<1>::last_active_face (const unsigned int) const
 {
   Assert (false, ExcImpossibleInDim(1));
@@ -557,7 +557,7 @@ MGDoFHandler<2>::last_active (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::begin_raw_face (const unsigned int level) const
 {
   return begin_raw_line (level);
@@ -565,7 +565,7 @@ MGDoFHandler<2>::begin_raw_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<2>::face_iterator
+internal::MGDoFHandler::Iterators<2>::face_iterator
 MGDoFHandler<2>::begin_face (const unsigned int level) const
 {
   return begin_line (level);
@@ -573,7 +573,7 @@ MGDoFHandler<2>::begin_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<2>::active_face_iterator
+internal::MGDoFHandler::Iterators<2>::active_face_iterator
 MGDoFHandler<2>::begin_active_face (const unsigned int level) const
 {
   return begin_active_line (level);
@@ -581,7 +581,7 @@ MGDoFHandler<2>::begin_active_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::end_face () const
 {
   return end_line ();
@@ -589,7 +589,7 @@ MGDoFHandler<2>::end_face () const
 
 
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::last_raw_face () const
 {
   return last_raw_line ();
@@ -597,7 +597,7 @@ MGDoFHandler<2>::last_raw_face () const
 
 
 template <>
-MGDoFDimensionInfo<2>::raw_face_iterator
+internal::MGDoFHandler::Iterators<2>::raw_face_iterator
 MGDoFHandler<2>::last_raw_face (const unsigned int level) const
 {
   return last_raw_line (level);
@@ -605,7 +605,7 @@ MGDoFHandler<2>::last_raw_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<2>::face_iterator
+internal::MGDoFHandler::Iterators<2>::face_iterator
 MGDoFHandler<2>::last_face () const
 {
   return last_line ();
@@ -613,7 +613,7 @@ MGDoFHandler<2>::last_face () const
 
 
 template <>
-MGDoFDimensionInfo<2>::face_iterator
+internal::MGDoFHandler::Iterators<2>::face_iterator
 MGDoFHandler<2>::last_face (const unsigned int level) const
 {
   return last_line (level);
@@ -621,7 +621,7 @@ MGDoFHandler<2>::last_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<2>::active_face_iterator
+internal::MGDoFHandler::Iterators<2>::active_face_iterator
 MGDoFHandler<2>::last_active_face () const
 {
   return last_active_line ();
@@ -629,7 +629,7 @@ MGDoFHandler<2>::last_active_face () const
 
 
 template <>
-MGDoFDimensionInfo<2>::active_face_iterator
+internal::MGDoFHandler::Iterators<2>::active_face_iterator
 MGDoFHandler<2>::last_active_face (const unsigned int level) const
 {
   return last_active_line (level);
@@ -812,7 +812,7 @@ MGDoFHandler<3>::last_active (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::begin_raw_face (const unsigned int level) const
 {
   return begin_raw_quad (level);
@@ -820,7 +820,7 @@ MGDoFHandler<3>::begin_raw_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<3>::face_iterator
+internal::MGDoFHandler::Iterators<3>::face_iterator
 MGDoFHandler<3>::begin_face (const unsigned int level) const
 {
   return begin_quad (level);
@@ -828,7 +828,7 @@ MGDoFHandler<3>::begin_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<3>::active_face_iterator
+internal::MGDoFHandler::Iterators<3>::active_face_iterator
 MGDoFHandler<3>::begin_active_face (const unsigned int level) const
 {
   return begin_active_quad (level);
@@ -836,7 +836,7 @@ MGDoFHandler<3>::begin_active_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::end_face () const
 {
   return end_quad ();
@@ -844,7 +844,7 @@ MGDoFHandler<3>::end_face () const
 
 
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::last_raw_face () const
 {
   return last_raw_quad ();
@@ -852,7 +852,7 @@ MGDoFHandler<3>::last_raw_face () const
 
 
 template <>
-MGDoFDimensionInfo<3>::raw_face_iterator
+internal::MGDoFHandler::Iterators<3>::raw_face_iterator
 MGDoFHandler<3>::last_raw_face (const unsigned int level) const
 {
   return last_raw_quad (level);
@@ -860,7 +860,7 @@ MGDoFHandler<3>::last_raw_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<3>::face_iterator
+internal::MGDoFHandler::Iterators<3>::face_iterator
 MGDoFHandler<3>::last_face () const
 {
   return last_quad ();
@@ -868,7 +868,7 @@ MGDoFHandler<3>::last_face () const
 
 
 template <>
-MGDoFDimensionInfo<3>::face_iterator
+internal::MGDoFHandler::Iterators<3>::face_iterator
 MGDoFHandler<3>::last_face (const unsigned int level) const
 {
   return last_quad (level);
@@ -876,7 +876,7 @@ MGDoFHandler<3>::last_face (const unsigned int level) const
 
 
 template <>
-MGDoFDimensionInfo<3>::active_face_iterator
+internal::MGDoFHandler::Iterators<3>::active_face_iterator
 MGDoFHandler<3>::last_active_face () const
 {
   return last_active_quad ();
@@ -884,7 +884,7 @@ MGDoFHandler<3>::last_active_face () const
 
 
 template <>
-MGDoFDimensionInfo<3>::active_face_iterator
+internal::MGDoFHandler::Iterators<3>::active_face_iterator
 MGDoFHandler<3>::last_active_face (const unsigned int level) const
 {
   return last_active_quad (level);
@@ -1017,7 +1017,7 @@ MGDoFHandler<dim>::end_hex () const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::raw_cell_iterator
+typename internal::MGDoFHandler::Iterators<dim>::raw_cell_iterator
 MGDoFHandler<dim>::end_raw (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1027,7 +1027,7 @@ MGDoFHandler<dim>::end_raw (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::cell_iterator
+typename internal::MGDoFHandler::Iterators<dim>::cell_iterator
 MGDoFHandler<dim>::end (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1037,7 +1037,7 @@ MGDoFHandler<dim>::end (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::active_cell_iterator
+typename internal::MGDoFHandler::Iterators<dim>::active_cell_iterator
 MGDoFHandler<dim>::end_active (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1047,7 +1047,7 @@ MGDoFHandler<dim>::end_active (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::raw_face_iterator
+typename internal::MGDoFHandler::Iterators<dim>::raw_face_iterator
 MGDoFHandler<dim>::end_raw_face (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1057,7 +1057,7 @@ MGDoFHandler<dim>::end_raw_face (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::face_iterator
+typename internal::MGDoFHandler::Iterators<dim>::face_iterator
 MGDoFHandler<dim>::end_face (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1067,7 +1067,7 @@ MGDoFHandler<dim>::end_face (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::active_face_iterator
+typename internal::MGDoFHandler::Iterators<dim>::active_face_iterator
 MGDoFHandler<dim>::end_active_face (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1077,7 +1077,7 @@ MGDoFHandler<dim>::end_active_face (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::raw_line_iterator
+typename internal::MGDoFHandler::Iterators<dim>::raw_line_iterator
 MGDoFHandler<dim>::end_raw_line (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1087,7 +1087,7 @@ MGDoFHandler<dim>::end_raw_line (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::line_iterator
+typename internal::MGDoFHandler::Iterators<dim>::line_iterator
 MGDoFHandler<dim>::end_line (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1097,7 +1097,7 @@ MGDoFHandler<dim>::end_line (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::active_line_iterator
+typename internal::MGDoFHandler::Iterators<dim>::active_line_iterator
 MGDoFHandler<dim>::end_active_line (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1107,7 +1107,7 @@ MGDoFHandler<dim>::end_active_line (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::raw_quad_iterator
+typename internal::MGDoFHandler::Iterators<dim>::raw_quad_iterator
 MGDoFHandler<dim>::end_raw_quad (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1117,7 +1117,7 @@ MGDoFHandler<dim>::end_raw_quad (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::quad_iterator
+typename internal::MGDoFHandler::Iterators<dim>::quad_iterator
 MGDoFHandler<dim>::end_quad (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1127,7 +1127,7 @@ MGDoFHandler<dim>::end_quad (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::active_quad_iterator
+typename internal::MGDoFHandler::Iterators<dim>::active_quad_iterator
 MGDoFHandler<dim>::end_active_quad (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1137,7 +1137,7 @@ MGDoFHandler<dim>::end_active_quad (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::raw_hex_iterator
+typename internal::MGDoFHandler::Iterators<dim>::raw_hex_iterator
 MGDoFHandler<dim>::end_raw_hex (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1147,7 +1147,7 @@ MGDoFHandler<dim>::end_raw_hex (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::hex_iterator
+typename internal::MGDoFHandler::Iterators<dim>::hex_iterator
 MGDoFHandler<dim>::end_hex (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?
@@ -1157,7 +1157,7 @@ MGDoFHandler<dim>::end_hex (const unsigned int level) const
 
 
 template <int dim>
-typename MGDoFDimensionInfo<dim>::active_hex_iterator
+typename internal::MGDoFHandler::Iterators<dim>::active_hex_iterator
 MGDoFHandler<dim>::end_active_hex (const unsigned int level) const
 {
   return (level == mg_levels.size()-1 ?

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.