freepooma-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [pooma-dev] AltView* classes


From: Richard Guenther
Subject: Re: [pooma-dev] AltView* classes
Date: Tue, 2 Mar 2004 11:28:34 +0100 (CET)

On Tue, 2 Mar 2004, Richard Guenther wrote:

> On Fri, 27 Feb 2004, Richard Guenther wrote:
>
> > Hi!
> >
> > Does anyone remember the exact reason for the existance of the AltView*
> > classes in Array.h and Field.h?  Removing them and fixing their usage to
> > use View* seems to work (full test with gcc 3.3 and 3.4 in progress).
>
> Testing completed with no new failures.  Would it be ok to remove those
> AltView* classes?

Which would be...

Ok?

Richard.


2004Mar02  Richard Guenther <address@hidden>

        * src/Array/Array.h: remove all traces of AltView0 class.
        src/Field/Field.h: remove all traces of AltView1 and
        AltView1Implementation classes.

===== Array/Array.h 1.14 vs edited =====
--- 1.14/r2/src/Array/Array.h   Tue Dec 16 15:19:57 2003
+++ edited/Array/Array.h        Tue Mar  2 11:24:14 2004
@@ -649,8 +649,6 @@
 // an existing engine cannot be any kind of slice domain.
 // Also, bounds checking would make no sense because it would
 // reduce to contains(a.domain(), a.domain());
-//
-// Any changes to this class should also be made to AltView0.

 template<int Dim, class T, class EngineTag>
 struct View0<Array<Dim, T, EngineTag> >
@@ -695,41 +693,6 @@
     }
 };

-// AltView0 avoids an instantiation problem that arises when two
-// classes use each other.  This class's definition should be exactly
-// the same as View0 except omitting member functions.
-//
-// Do NOT explicitly instantiate this class.
-
-template<class ArrayTag>
-struct AltView0;
-
-template<int Dim, class T, class EngineTag>
-struct AltView0<Array<Dim, T, EngineTag> >
-{
-  // Convenience typedef for the thing we're taking a view of.
-
-  typedef Array<Dim, T, EngineTag> Subject_t;
-
-  // Deduce domains for the output type.
-  // At some point, we need to fix NewDomain1; until then, use
-  // the temporary version from Array.h.
-
-  typedef typename Subject_t::Engine_t Engine_t;
-  typedef typename Subject_t::Domain_t Domain_t;
-
-  // Deduce the template parameters for the output type.
-
-  typedef typename NewEngine<Engine_t, Domain_t>::Type_t NewEngine_t;
-  enum { newDim = NewEngine_t::dimensions };
-  typedef typename NewEngine_t::Tag_t NewEngineTag_t;
-
-  // The output types.
-
-  typedef Array<newDim, T, NewEngineTag_t> Type_t;
-  typedef Type_t ReadType_t;
-};
-
 template<int Dim, class T, class EngineTag>
 struct View1<Array<Dim, T, EngineTag>, int>
 {
@@ -1864,7 +1827,7 @@
   /// A zero-argument version of operator(), which takes a view of
   /// array's domain, is also supplied.
   //@{
-  typename AltView0<This_t>::ReadType_t
+  typename View0<This_t>::ReadType_t
   read() const
     {
       typedef View0<This_t> Ret_t;
@@ -1934,7 +1897,7 @@
       return Ret_t::makeRead(*this, s1, s2, s3, s4, s5, s6, s7);
     }

-  typename AltView0<This_t>::Type_t
+  typename View0<This_t>::Type_t
   operator()() const
     {
       typedef View0<This_t> Ret_t;
===== Field/Field.h 1.14 vs edited =====
--- 1.14/r2/src/Field/Field.h   Tue Dec 16 15:20:00 2003
+++ edited/Field/Field.h        Tue Mar  2 11:25:22 2004
@@ -269,9 +269,6 @@
  * View1Implementation<Field, D, SV> specialization for indexing a field
  * with a single domain. There is a single-valued version (SV == true)
  * and a multi-valued version (SV == false).
- *
- * Any changes to View1Implementation should also be made to
- * AltView1Implementation.
  */

 // Single-valued version. Handles scalars and Locs.
@@ -508,62 +505,7 @@


 /**
- * AltView1Implementation avoids an instantiation problem that arises when two
- * classes use each other.  This class's definition should be exactly
- * the same as View1Implementation except omitting member functions.
- *
- * Do NOT explicitly instantiate this class.
- */
-
-// Single-valued version. Handles scalars and Locs.
-
-template<class Subject, class Domain, bool SV>
-struct AltView1Implementation;
-
-template<class Mesh, class T, class EngineTag, class Domain>
-struct AltView1Implementation<Field<Mesh, T, EngineTag>, Domain, true>
-{
-  // Convenience typedef for the thing we're taking a view of.
-
-  typedef Field<Mesh, T, EngineTag> Subject_t;
-
-  // The return types are pretty simple here.
-
-  typedef typename Subject_t::Element_t ReadType_t;
-  typedef typename Subject_t::ElementRef_t Type_t;
-};
-
-template<class Mesh, class T, class EngineTag, class Domain>
-struct AltView1Implementation<Field<Mesh, T, EngineTag>, Domain, false>
-{
-  // Convenience typedef for the thing we're taking a view of.
-
-  typedef Field<Mesh, T, EngineTag> Subject_t;
-
-  // Deduce domains for the output type.
-
-  typedef typename Subject_t::Engine_t Engine_t;
-  typedef typename NewEngine<Engine_t, Domain>::Type_t NewEngine_t;
-  typedef typename NewEngine_t::Element_t NewT_t;
-  typedef typename NewEngine_t::Tag_t NewEngineTag_t;
-
-  // Deduce the new Mesh.
-
-  typedef typename
-    NewMeshTag<NewEngine_t::dimensions, Mesh, Domain>::Type_t
-      NewMeshTag_t;
-
-  // The output types.
-
-  typedef Field<NewMeshTag_t, NewT_t, NewEngineTag_t> ReadType_t;
-  typedef Field<NewMeshTag_t, NewT_t, NewEngineTag_t> Type_t;
-};
-
-
-/**
  * View1<Field, S1> specialization for indexing a field with a single domain.
- *
- * Any changes to View1 should also be made to AltView1.
  */

 template<class Mesh, class T, class EngineTag, class Sub1>
@@ -613,8 +555,6 @@

 /**
  * View1<Field, int> specialization for indexing a field with an int.
- *
- * Any changes to View1 should also be made to AltView1.
  */

 template<class Mesh, class T, class EngineTag>
@@ -658,71 +598,6 @@


 /**
- * AltView1 avoids an instantiation problem that arises when two
- * classes use each other.  This class's definition should be exactly
- * the same as View1 except omitting member functions.
- *
- * Do NOT explicitly instantiate this class.
- */
-
-template<class FieldTag, class DomainTag>
-struct AltView1;
-
-template<class Mesh, class T, class EngineTag, class Sub1>
-struct AltView1<Field<Mesh, T, EngineTag>, Sub1>
-{
-  // Convenience typedef for the thing we're taking a view of.
-
-  typedef Field<Mesh, T, EngineTag> Subject_t;
-
-  // Deduce domains for the output type.
-  // At some point, we need to fix NewDomain1; until then, use
-  // the temporary version from NewDomain.h.
-
-  typedef typename Subject_t::Domain_t Domain_t;
-  typedef TemporaryNewDomain1<Domain_t, Sub1> NewDomain_t;
-  typedef typename NewDomain_t::SliceType_t SDomain_t;
-
-  // Deduce appropriate version of implementation to dispatch to.
-
-  enum { sv = DomainTraits<SDomain_t>::singleValued };
-  typedef AltView1Implementation<Subject_t, SDomain_t, sv> Dispatch_t;
-
-  // The optimized domain combiner.
-
-  typedef CombineDomainOpt<NewDomain_t, sv> Combine_t;
-
-  // The return types.
-
-  typedef typename Dispatch_t::ReadType_t ReadType_t;
-  typedef typename Dispatch_t::Type_t Type_t;
-};
-
-
-/**
- * AltView1 avoids an instantiation problem that arises when two
- * classes use each other.  This class's definition should be exactly
- * the same as View1 except omitting member functions.
- *
- * Do NOT explicitly instantiate this class.
- */
-
-template<class Mesh, class T, class EngineTag>
-struct AltView1<Field<Mesh, T, EngineTag>, int>
-{
-  // Convenience typedef for the thing we're taking a view of.
-
-  typedef Field<Mesh, T, EngineTag> Subject_t;
-
-  // The return types.
-
-  typedef typename Subject_t::Element_t ReadType_t;
-  typedef typename Subject_t::ElementRef_t Type_t;
-
-};
-
-
-/**
  * View2<Field, S1, S2> specialization for indexing a field with two
  * domains.
  */
@@ -1455,14 +1330,14 @@
   /// point fields the viewing domain is an actual centering domain.
   //@{

-  inline typename AltView1<This_t, Domain_t>::ReadType_t
+  inline typename View1<This_t, Domain_t>::ReadType_t
   read() const
     {
       typedef View1<This_t, Domain_t> Ret_t;
       return Ret_t::makeRead(*this, physicalDomain());
     }

-  inline typename AltView1<This_t, Domain_t>::ReadType_t
+  inline typename View1<This_t, Domain_t>::ReadType_t
   readAll() const
     {
       typedef View1<This_t, Domain_t> Ret_t;
@@ -1470,7 +1345,7 @@
     }

   template<class Sub1>
-  inline typename AltView1<This_t, Sub1>::ReadType_t
+  inline typename View1<This_t, Sub1>::ReadType_t
   read(const Sub1 &s1) const
     {
       typedef View1<This_t, Sub1> Ret_t;
@@ -1493,14 +1368,14 @@
       return Ret_t::makeRead(*this, s1, s2, s3);
     }

-  inline typename AltView1<This_t, Domain_t>::Type_t
+  inline typename View1<This_t, Domain_t>::Type_t
   operator()() const
     {
       typedef View1<This_t, Domain_t> Ret_t;
       return Ret_t::make(*this, physicalDomain());
     }

-  inline typename AltView1<This_t, Domain_t>::Type_t
+  inline typename View1<This_t, Domain_t>::Type_t
   all() const
     {
       typedef View1<This_t, Domain_t> Ret_t;
@@ -1508,7 +1383,7 @@
     }

   template<class Sub1>
-  inline typename AltView1<This_t, Sub1>::Type_t
+  inline typename View1<This_t, Sub1>::Type_t
   operator()(const Sub1 &s1) const
     {
       typedef View1<This_t, Sub1> Ret_t;

reply via email to

[Prev in Thread] Current Thread [Next in Thread]