freepooma-devel
[Top][All Lists]
Advanced

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

Re: [pooma-dev] AltView* classes


From: John H. Hall
Subject: Re: [pooma-dev] AltView* classes
Date: Tue, 2 Mar 2004 10:34:09 -0700

Dave, et al:
I have just had extensive discussion regarding the "Blanca is dead" issue. That is not quite the whole story. Management has decided to force Blanca and Shavano to merge, but, it is up to Blanca and Shavano to define what exactly that means. The head of ASCI at LANL is James Peery and he believes (to the best of my knowledge) that some amalgamation will win out.

Meanwhile, Don and Jean Marshall and I are still developing what we affectionately refer to as "the Blanca Demo Project". This is funded (at a low level) through at least the end of this year, and around that time, I believe the code will start really impressing some people. We are having to develop a series of new POOMA engines for this project, some of which I hinted at a while back. The changes to field comtemplated here won't really affect engines for the most part, so if Dave's happy then I am happy.

A special thanks to Richard for putting so much time into advancing the status of POOMA.
John Hall


On Mar 2, 2004, at 10:16 AM, Dave Nystrom wrote:

No problem.  I think my neurons are less rusty because of my perverse
hobby:-). I've actually compiled the Blanca Demo stuff in the last year and
I try to keep up with evolution of Pooma 2 with the thought that I will
sometime get back to using it. John, Don and Jean have actually been doing
some work on the source code base in the last year.

Also, the Blanca Demo project and it's progeny is the only Blanca related source code base that to my knowledge ever used Pooma 2. And supposedly, the
Blanca project is dead and unlikely to use anything that we ever did.

-- Dave Nystrom email: address@hidden
LANL X-2                        phone: 505-667-7913     fax: 505-665-2227

James Crotinger writes:
OK - cool. Thanks for chipping in Dave. You're neurons are obviously less
rusty than mine. :)

        Jim

---------------------------------------------------------------------- -- James A. Crotinger email: address@hidden NumeriX, LLC phone: (505) 424-4477 x104
2960 Rodeo Park Dr. W.
Santa Fe, NM 87505


-----Original Message-----
From: Dave Nystrom [mailto:address@hidden
Sent: Tuesday, March 02, 2004 10:00 AM
To: James Crotinger
Cc: 'Richard Guenther'; 'address@hidden'; 'Jeffrey D.
Oldham'; John Hall; Dave Nystrom; Dave Nystrom
Subject: RE: [pooma-dev] AltView* classes

These AltView classes were put in by Jeffrey Oldham to fix a problem that
I
was having trying to explicitly instantiate all the Pooma classes and
functions that Blanca code was using.  Basically, the way the Pooma 2
Field
class was originally written, we were getting one of these "sv" enums
instantiated for every unique expression which we had in our source code base. I was unable to explicitly instantiate these "sv" enums the way the code was originally written because of some issue which Arch Robison of
Kuck
and Associates (now Intel) identified - basically the code in it's
original
form violated some corner case of the C++ standard according to Arch.
Jeffrey fixed this problem by adding the AltView class and then I was able
to
perform the explicit instantiations that I needed.

However, I believe Jeffrey or someone else has gone through the code and replaced the "sv" enums with some other construct which does not have the explicit instantiation difficulties that the "sv" enums had. So, I think that it is probably okay to remove the AltView classes and that this would
clean up the code considerably.  I may revisit all this explicit
instantiation stuff sometime in the not to distant future on a hobby basis
(weird hobby, huh) and if I encounter difficulties being able to
explicitly
instantiate anything, I could then raise it as an issue at that time.

In summary, the AltView classes were added by Jeffrey to fix an explicit instantiation problem that I think no longer exists and I am in favor of
now
removing them in the interest of cleaning up the code as much as possible.

--
Dave Nystrom                    email: address@hidden
LANL X-2                        phone: 505-667-7913     fax: 505-665-2227

James Crotinger writes:
Hi Richard,

This tickled a neuron the other day, but I couldn't recall the details.

The AltView classes were put in to reduce link times and sizes for
large
codes. The classes that have enums end up having a link-time cost, both
in
space and time. I believe this refactoring was done to reduce the
cardinality of classes having the "sv" enum. My recollection is that
this,
and other similar "optimizations", had a pretty substantial impact on link-time for Blanca. Unless these are hurting something else, I would
tend
to leave them in.

Does the CodeSourcery CVS repository have complete CVS history? (i.e.
did we
copy the repository, or just the head version?) This should have been
easy
to determine via CVS.

        Jim

-------------------------------------------------------------------- ---
-
James A. Crotinger                           email:
address@hidden
NumeriX, LLC                                 phone:  (505) 424-4477
x104
2960 Rodeo Park Dr. W.
Santa Fe, NM 87505


-----Original Message-----
From: Richard Guenther [mailto:address@hidden
Sent: Tuesday, March 02, 2004 3:29 AM
To: address@hidden
Cc: Jeffrey D. Oldham
Subject: Re: [pooma-dev] AltView* classes

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;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version
5.5.2653.12">
<TITLE>RE: [pooma-dev] AltView* classes</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Hi Richard,</FONT>
</P>

<P><FONT SIZE=2>This tickled a neuron the other day, but I couldn't
recall the details.</FONT>
</P>

<P><FONT SIZE=2>The AltView classes were put in to reduce link times
and sizes for large codes. The classes that have enums end up having a link-time cost, both in space and time. I believe this refactoring was done to reduce the cardinality of classes having the &quot;sv&quot; enum. My recollection is that this, and other similar &quot;optimizations&quot;, had a pretty substantial impact on link-time for Blanca. Unless these are
hurting something else, I would tend to leave them in. </FONT></P>

<P><FONT SIZE=2>Does the CodeSourcery CVS repository have complete CVS
history? (i.e. did we copy the repository, or just the head version?) This
should have been easy to determine via CVS. </FONT></P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>Jim</FONT>
</P>

<P><FONT SIZE=2>-------------------------------------------------------
-----------------</FONT>
<BR><FONT SIZE=2>James A.
Crotinger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;& nbsp;&nbsp;&nbsp; email:&nbsp;&nbsp;&nbsp;&nbsp; address@hidden</FONT>
<BR><FONT SIZE=2>NumeriX,
LLC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;& nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; phone:&nbsp; (505) 424-
4477 x104</FONT>
<BR><FONT SIZE=2>2960 Rodeo Park Dr. W.</FONT>
<BR><FONT SIZE=2>Santa Fe, NM 87505</FONT>
<BR><FONT SIZE=2>&nbsp;</FONT>
</P>

<P><FONT SIZE=2>&gt; -----Original Message-----</FONT>
<BR><FONT SIZE=2>&gt; From: Richard Guenther [<A
HREF="mailto:address@hidden
tuebingen.de">mailto:address@hidden</A>]</FONT>
<BR><FONT SIZE=2>&gt; Sent: Tuesday, March 02, 2004 3:29 AM</FONT>
<BR><FONT SIZE=2>&gt; To: address@hidden</FONT>
<BR><FONT SIZE=2>&gt; Cc: Jeffrey D. Oldham</FONT>
<BR><FONT SIZE=2>&gt; Subject: Re: [pooma-dev] AltView* classes</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; On Tue, 2 Mar 2004, Richard Guenther
wrote:</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; &gt; On Fri, 27 Feb 2004, Richard Guenther
wrote:</FONT>
<BR><FONT SIZE=2>&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; &gt; &gt; Hi!</FONT>
<BR><FONT SIZE=2>&gt; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; &gt; &gt; Does anyone remember the exact reason
for the existance of the</FONT>
<BR><FONT SIZE=2>&gt; AltView*</FONT>
<BR><FONT SIZE=2>&gt; &gt; &gt; classes in Array.h and Field.h?&nbsp;
Removing them and fixing their usage</FONT>
<BR><FONT SIZE=2>&gt; to</FONT>
<BR><FONT SIZE=2>&gt; &gt; &gt; use View* seems to work (full test with
gcc 3.3 and 3.4 in progress).</FONT>
<BR><FONT SIZE=2>&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; &gt; Testing completed with no new
failures.&nbsp; Would it be ok to remove those</FONT>
<BR><FONT SIZE=2>&gt; &gt; AltView* classes?</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; Which would be...</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; Ok?</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; Richard.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; 2004Mar02&nbsp; Richard Guenther
&lt;address@hidden&gt;</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *
src/Array/Array.h: remove all traces of AltView0 class.</FONT>
<BR><FONT SIZE=2>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; src/Field/Field.h:
remove all traces of AltView1 and</FONT>
<BR><FONT SIZE=2>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
AltView1Implementation classes.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; ===== Array/Array.h 1.14 vs edited =====</FONT> <BR><FONT SIZE=2>&gt; --- 1.14/r2/src/Array/Array.h Tue Dec 16 15:19:57
2003</FONT>
<BR><FONT SIZE=2>&gt; +++
edited/Array/Array.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tue Mar&nbsp; 2
11:24:14 2004</FONT>
<BR><FONT SIZE=2>&gt; @@ -649,8 +649,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; // an existing engine cannot be any kind of
slice domain.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; // Also, bounds checking would make no
sense because it would</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; // reduce to contains(a.domain(),
a.domain());</FONT>
<BR><FONT SIZE=2>&gt; -//</FONT>
<BR><FONT SIZE=2>&gt; -// Any changes to this class should also be made
to AltView0.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; template&lt;int Dim, class T, class
EngineTag&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; struct View0&lt;Array&lt;Dim, T,
EngineTag&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; @@ -695,41 +693,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; };</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -// AltView0 avoids an instantiation problem that
arises when two</FONT>
<BR><FONT SIZE=2>&gt; -// classes use each other.&nbsp; This class's
definition should be exactly</FONT>
<BR><FONT SIZE=2>&gt; -// the same as View0 except omitting member
functions.</FONT>
<BR><FONT SIZE=2>&gt; -//</FONT>
<BR><FONT SIZE=2>&gt; -// Do NOT explicitly instantiate this
class.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class ArrayTag&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView0;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;int Dim, class T, class
EngineTag&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView0&lt;Array&lt;Dim, T,
EngineTag&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; -{</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Convenience typedef for the thing
we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Array&lt;Dim, T, EngineTag&gt;
Subject_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Deduce domains for the output
type.</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // At some point, we need to fix
NewDomain1; until then, use</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // the temporary version from
Array.h.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::Engine_t
Engine_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::Domain_t
Domain_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Deduce the template parameters for the
output type.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename NewEngine&lt;Engine_t,
Domain_t&gt;::Type_t NewEngine_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; enum { newDim = NewEngine_t::dimensions
};</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename NewEngine_t::Tag_t
NewEngineTag_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // The output types.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Array&lt;newDim, T,
NewEngineTag_t&gt; Type_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Type_t ReadType_t;</FONT>
<BR><FONT SIZE=2>&gt; -};</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; template&lt;int Dim, class T, class
EngineTag&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; struct View1&lt;Array&lt;Dim, T,
EngineTag&gt;, int&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt; @@ -1864,7 +1827,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; /// A zero-argument version of
operator(), which takes a view of</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; /// array's domain, is also
supplied.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; //@{</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typename
AltView0&lt;This_t&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; typename
View0&lt;This_t&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; read() const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View0&lt;This_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt; @@ -1934,7 +1897,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
Ret_t::makeRead(*this, s1, s2, s3, s4, s5, s6, s7);</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typename
AltView0&lt;This_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; typename
View0&lt;This_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; operator()() const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View0&lt;This_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt; ===== Field/Field.h 1.14 vs edited =====</FONT> <BR><FONT SIZE=2>&gt; --- 1.14/r2/src/Field/Field.h Tue Dec 16 15:20:00
2003</FONT>
<BR><FONT SIZE=2>&gt; +++
edited/Field/Field.h&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tue Mar&nbsp; 2
11:25:22 2004</FONT>
<BR><FONT SIZE=2>&gt; @@ -269,9 +269,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * View1Implementation&lt;Field, D,
SV&gt; specialization for indexing a field</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * with a single domain. There is a
single-valued version (SV == true)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * and a multi-valued version (SV ==
false).</FONT>
<BR><FONT SIZE=2>&gt; - *</FONT>
<BR><FONT SIZE=2>&gt; - * Any changes to View1Implementation should
also be made to</FONT>
<BR><FONT SIZE=2>&gt; - * AltView1Implementation.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; // Single-valued version. Handles scalars
and Locs.</FONT>
<BR><FONT SIZE=2>&gt; @@ -508,62 +505,7 @@</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt; - * AltView1Implementation avoids an
instantiation problem that arises</FONT>
<BR><FONT SIZE=2>&gt; when two</FONT>
<BR><FONT SIZE=2>&gt; - * classes use each other.&nbsp; This class's
definition should be exactly</FONT>
<BR><FONT SIZE=2>&gt; - * the same as View1Implementation except
omitting member functions.</FONT>
<BR><FONT SIZE=2>&gt; - *</FONT>
<BR><FONT SIZE=2>&gt; - * Do NOT explicitly instantiate this
class.</FONT>
<BR><FONT SIZE=2>&gt; - */</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -// Single-valued version. Handles scalars and
Locs.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class Subject, class Domain, bool
SV&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView1Implementation;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class Mesh, class T, class
EngineTag, class Domain&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView1Implementation&lt;Field&lt;Mesh,
T, EngineTag&gt;, Domain, true&gt;</FONT>
<BR><FONT SIZE=2>&gt; -{</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Convenience typedef for the thing
we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt;
Subject_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // The return types are pretty simple
here.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::Element_t
ReadType_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::ElementRef_t
Type_t;</FONT>
<BR><FONT SIZE=2>&gt; -};</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class Mesh, class T, class
EngineTag, class Domain&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView1Implementation&lt;Field&lt;Mesh,
T, EngineTag&gt;, Domain, false&gt;</FONT>
<BR><FONT SIZE=2>&gt; -{</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Convenience typedef for the thing
we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt;
Subject_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Deduce domains for the output
type.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::Engine_t
Engine_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename NewEngine&lt;Engine_t,
Domain&gt;::Type_t NewEngine_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename NewEngine_t::Element_t
NewT_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename NewEngine_t::Tag_t
NewEngineTag_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Deduce the new Mesh.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp;&nbsp;&nbsp;
NewMeshTag&lt;NewEngine_t::dimensions, Mesh, Domain&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
NewMeshTag_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // The output types.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Field&lt;NewMeshTag_t, NewT_t,
NewEngineTag_t&gt; ReadType_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Field&lt;NewMeshTag_t, NewT_t,
NewEngineTag_t&gt; Type_t;</FONT>
<BR><FONT SIZE=2>&gt; -};</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -/**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * View1&lt;Field, S1&gt;
specialization for indexing a field with a single</FONT>
<BR><FONT SIZE=2>&gt; domain.</FONT>
<BR><FONT SIZE=2>&gt; - *</FONT>
<BR><FONT SIZE=2>&gt; - * Any changes to View1 should also be made to
AltView1.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; template&lt;class Mesh, class T, class
EngineTag, class Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt; @@ -613,8 +555,6 @@</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * View1&lt;Field, int&gt;
specialization for indexing a field with an int.</FONT>
<BR><FONT SIZE=2>&gt; - *</FONT>
<BR><FONT SIZE=2>&gt; - * Any changes to View1 should also be made to
AltView1.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; template&lt;class Mesh, class T, class
EngineTag&gt;</FONT>
<BR><FONT SIZE=2>&gt; @@ -658,71 +598,6 @@</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt; - * AltView1 avoids an instantiation problem that
arises when two</FONT>
<BR><FONT SIZE=2>&gt; - * classes use each other.&nbsp; This class's
definition should be exactly</FONT>
<BR><FONT SIZE=2>&gt; - * the same as View1 except omitting member
functions.</FONT>
<BR><FONT SIZE=2>&gt; - *</FONT>
<BR><FONT SIZE=2>&gt; - * Do NOT explicitly instantiate this
class.</FONT>
<BR><FONT SIZE=2>&gt; - */</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class FieldTag, class
DomainTag&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView1;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class Mesh, class T, class
EngineTag, class Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView1&lt;Field&lt;Mesh, T,
EngineTag&gt;, Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt; -{</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Convenience typedef for the thing
we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt;
Subject_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Deduce domains for the output
type.</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // At some point, we need to fix
NewDomain1; until then, use</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // the temporary version from
NewDomain.h.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::Domain_t
Domain_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef TemporaryNewDomain1&lt;Domain_t,
Sub1&gt; NewDomain_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename NewDomain_t::SliceType_t
SDomain_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Deduce appropriate version of
implementation to dispatch to.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; enum { sv =
DomainTraits&lt;SDomain_t&gt;::singleValued };</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef
AltView1Implementation&lt;Subject_t, SDomain_t, sv&gt; Dispatch_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // The optimized domain combiner.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef CombineDomainOpt&lt;NewDomain_t,
sv&gt; Combine_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // The return types.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Dispatch_t::ReadType_t
ReadType_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Dispatch_t::Type_t
Type_t;</FONT>
<BR><FONT SIZE=2>&gt; -};</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -/**</FONT>
<BR><FONT SIZE=2>&gt; - * AltView1 avoids an instantiation problem that
arises when two</FONT>
<BR><FONT SIZE=2>&gt; - * classes use each other.&nbsp; This class's
definition should be exactly</FONT>
<BR><FONT SIZE=2>&gt; - * the same as View1 except omitting member
functions.</FONT>
<BR><FONT SIZE=2>&gt; - *</FONT>
<BR><FONT SIZE=2>&gt; - * Do NOT explicitly instantiate this
class.</FONT>
<BR><FONT SIZE=2>&gt; - */</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -template&lt;class Mesh, class T, class
EngineTag&gt;</FONT>
<BR><FONT SIZE=2>&gt; -struct AltView1&lt;Field&lt;Mesh, T,
EngineTag&gt;, int&gt;</FONT>
<BR><FONT SIZE=2>&gt; -{</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // Convenience typedef for the thing
we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt;
Subject_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; // The return types.</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::Element_t
ReadType_t;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; typedef typename Subject_t::ElementRef_t
Type_t;</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -};</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt; -/**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * View2&lt;Field, S1, S2&gt;
specialization for indexing a field with two</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; * domains.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt; @@ -1455,14 +1330,14 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; /// point fields the viewing
domain is an actual centering domain.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; //@{</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; inline typename AltView1&lt;This_t,
Domain_t&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; inline typename View1&lt;This_t,
Domain_t&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; read() const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View1&lt;This_t, Domain_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
Ret_t::makeRead(*this, physicalDomain());</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; inline typename AltView1&lt;This_t,
Domain_t&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; inline typename View1&lt;This_t,
Domain_t&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; readAll() const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View1&lt;This_t, Domain_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt; @@ -1470,7 +1345,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; template&lt;class
Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; inline typename AltView1&lt;This_t,
Sub1&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; inline typename View1&lt;This_t,
Sub1&gt;::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; read(const Sub1 &amp;s1)
const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View1&lt;This_t, Sub1&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt; @@ -1493,14 +1368,14 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
Ret_t::makeRead(*this, s1, s2, s3);</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; inline typename AltView1&lt;This_t,
Domain_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; inline typename View1&lt;This_t,
Domain_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; operator()() const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View1&lt;This_t, Domain_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return
Ret_t::make(*this, physicalDomain());</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; inline typename AltView1&lt;This_t,
Domain_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; inline typename View1&lt;This_t,
Domain_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; all() const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View1&lt;This_t, Domain_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt; @@ -1508,7 +1383,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; template&lt;class
Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt; -&nbsp; inline typename AltView1&lt;This_t,
Sub1&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt; +&nbsp; inline typename View1&lt;This_t,
Sub1&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp; operator()(const Sub1 &amp;s1)
const</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef
View1&lt;This_t, Sub1&gt; Ret_t;</FONT>
</P>

</BODY>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2653.12">
<TITLE>RE: [pooma-dev] AltView* classes</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>OK - cool. Thanks for chipping in Dave. You're neurons are obviously less rusty than mine. :)</FONT>
</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE=2>Jim</FONT>
</P>

<P><FONT SIZE=2>--------------------------------------------------------------- ---------</FONT> <BR><FONT SIZE=2>James A. Crotinger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email:&nbsp;&nbsp;&nbsp;&nbsp; address@hidden</FONT> <BR><FONT SIZE=2>NumeriX, LLC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; phone:&nbsp; (505) 424-4477 x104</FONT>
<BR><FONT SIZE=2>2960 Rodeo Park Dr. W.</FONT>
<BR><FONT SIZE=2>Santa Fe, NM 87505</FONT>
<BR><FONT SIZE=2>&nbsp;</FONT>
</P>

<P><FONT SIZE=2>&gt; -----Original Message-----</FONT>
<BR><FONT SIZE=2>&gt; From: Dave Nystrom [<A HREF="mailto:address@hidden";>mailto:address@hidden</A>]</FONT>
<BR><FONT SIZE=2>&gt; Sent: Tuesday, March 02, 2004 10:00 AM</FONT>
<BR><FONT SIZE=2>&gt; To: James Crotinger</FONT>
<BR><FONT SIZE=2>&gt; Cc: 'Richard Guenther'; 'address@hidden'; 'Jeffrey D.</FONT> <BR><FONT SIZE=2>&gt; Oldham'; John Hall; Dave Nystrom; Dave Nystrom</FONT>
<BR><FONT SIZE=2>&gt; Subject: RE: [pooma-dev] AltView* classes</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; These AltView classes were put in by Jeffrey Oldham to fix a problem that</FONT>
<BR><FONT SIZE=2>&gt; I</FONT>
<BR><FONT SIZE=2>&gt; was having trying to explicitly instantiate all the Pooma classes and</FONT> <BR><FONT SIZE=2>&gt; functions that Blanca code was using.&nbsp; Basically, the way the Pooma 2</FONT>
<BR><FONT SIZE=2>&gt; Field</FONT>
<BR><FONT SIZE=2>&gt; class was originally written, we were getting one of these &quot;sv&quot; enums</FONT> <BR><FONT SIZE=2>&gt; instantiated for every unique expression which we had in our source code</FONT> <BR><FONT SIZE=2>&gt; base.&nbsp; I was unable to explicitly instantiate these &quot;sv&quot; enums the way the</FONT> <BR><FONT SIZE=2>&gt; code was originally written because of some issue which Arch Robison of</FONT>
<BR><FONT SIZE=2>&gt; Kuck</FONT>
<BR><FONT SIZE=2>&gt; and Associates (now Intel) identified - basically the code in it's</FONT>
<BR><FONT SIZE=2>&gt; original</FONT>
<BR><FONT SIZE=2>&gt; form violated some corner case of the C++ standard according to Arch.</FONT> <BR><FONT SIZE=2>&gt; Jeffrey fixed this problem by adding the AltView class and then I was able</FONT>
<BR><FONT SIZE=2>&gt; to</FONT>
<BR><FONT SIZE=2>&gt; perform the explicit instantiations that I needed.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; However, I believe Jeffrey or someone else has gone through the code and</FONT> <BR><FONT SIZE=2>&gt; replaced the &quot;sv&quot; enums with some other construct which does not have the</FONT> <BR><FONT SIZE=2>&gt; explicit instantiation difficulties that the &quot;sv&quot; enums had.&nbsp; So, I think</FONT> <BR><FONT SIZE=2>&gt; that it is probably okay to remove the AltView classes and that this would</FONT> <BR><FONT SIZE=2>&gt; clean up the code considerably.&nbsp; I may revisit all this explicit</FONT> <BR><FONT SIZE=2>&gt; instantiation stuff sometime in the not to distant future on a hobby basis</FONT> <BR><FONT SIZE=2>&gt; (weird hobby, huh) and if I encounter difficulties being able to</FONT>
<BR><FONT SIZE=2>&gt; explicitly</FONT>
<BR><FONT SIZE=2>&gt; instantiate anything, I could then raise it as an issue at that time.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; In summary, the AltView classes were added by Jeffrey to fix an explicit</FONT> <BR><FONT SIZE=2>&gt; instantiation problem that I think no longer exists and I am in favor of</FONT>
<BR><FONT SIZE=2>&gt; now</FONT>
<BR><FONT SIZE=2>&gt; removing them in the interest of cleaning up the code as much as possible.</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; --</FONT>
<BR><FONT SIZE=2>&gt; Dave Nystrom&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email: address@hidden</FONT> <BR><FONT SIZE=2>&gt; LANL X-2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; phone: 505-667-7913&nbsp;&nbsp;&nbsp;&nbsp; fax: 505-665-2227</FONT>
<BR><FONT SIZE=2>&gt; </FONT>
<BR><FONT SIZE=2>&gt; James Crotinger writes:</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; Hi Richard,</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; This tickled a neuron the other day, but I couldn't recall the details.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; The AltView classes were put in to reduce link times and sizes for</FONT>
<BR><FONT SIZE=2>&gt; large</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; codes. The classes that have enums end up having a link-time cost, both</FONT>
<BR><FONT SIZE=2>&gt; in</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; space and time. I believe this refactoring was done to reduce the</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; cardinality of classes having the &quot;sv&quot; enum. My recollection is that</FONT>
<BR><FONT SIZE=2>&gt; this,</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; and other similar &quot;optimizations&quot;, had a pretty substantial impact on</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; link-time for Blanca. Unless these are hurting something else, I would</FONT>
<BR><FONT SIZE=2>&gt; tend</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; to leave them in.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; Does the CodeSourcery CVS repository have complete CVS history? (i.e.</FONT>
<BR><FONT SIZE=2>&gt; did we</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; copy the repository, or just the head version?) This should have been</FONT>
<BR><FONT SIZE=2>&gt; easy</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; to determine via CVS.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &nbsp;&nbsp; Jim</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; ---------------------------------------------------------------------- -</FONT>
<BR><FONT SIZE=2>&gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; James A. Crotinger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; email:</FONT>
<BR><FONT SIZE=2>&gt; address@hidden</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; NumeriX, LLC&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; phone:&nbsp; (505) 424-4477</FONT>
<BR><FONT SIZE=2>&gt; x104</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; 2960 Rodeo Park Dr. W.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; Santa Fe, NM 87505</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -----Original Message-----</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; From: Richard Guenther [<A HREF="mailto:address@hidden";>mailto: address@hidden</A>]</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; Sent: Tuesday, March 02, 2004 3:29 AM</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; To: address@hidden</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; Cc: Jeffrey D. Oldham</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; Subject: Re: [pooma-dev] AltView* classes</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; On Tue, 2 Mar 2004, Richard Guenther wrote:</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; On Fri, 27 Feb 2004, Richard Guenther wrote:</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; &gt; Hi!</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; &gt; Does anyone remember the exact reason for the existance of the</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; AltView*</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; &gt; classes in Array.h and Field.h?&nbsp; Removing them and fixing their</FONT>
<BR><FONT SIZE=2>&gt; usage</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; to</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; &gt; use View* seems to work (full test with gcc 3.3 and 3.4 in</FONT>
<BR><FONT SIZE=2>&gt; progress).</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; Testing completed with no new failures.&nbsp; Would it be ok to remove</FONT>
<BR><FONT SIZE=2>&gt; those</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; &gt; AltView* classes?</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; Which would be...</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; Ok?</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; Richard.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; 2004Mar02&nbsp; Richard Guenther &lt;address@hidden&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; * src/Array/Array.h: remove all traces of AltView0 class.</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; src/Field/Field.h: remove all traces of AltView1 and</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; AltView1Implementation classes.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; ===== Array/Array.h 1.14 vs edited =====</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; --- 1.14/r2/src/Array/Array.h&nbsp;&nbsp;&nbsp; Tue Dec 16 15:19:57 2003</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +++ edited/Array/Array.h Tue Mar&nbsp; 2 11:24:14 2004</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -649,8 +649,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; // an existing engine cannot be any kind of slice domain.</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; // Also, bounds checking would make no sense because it would</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; // reduce to contains(a.domain(), a.domain());</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -//</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -// Any changes to this class should also be made to AltView0.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; template&lt;int Dim, class T, class EngineTag&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; struct View0&lt;Array&lt;Dim, T, EngineTag&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -695,41 +693,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; };</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -// AltView0 avoids an instantiation problem that arises when two</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -// classes use each other.&nbsp; This class's definition should be</FONT>
<BR><FONT SIZE=2>&gt; exactly</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -// the same as View0 except omitting member functions.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -//</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -// Do NOT explicitly instantiate this class.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class ArrayTag&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView0;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;int Dim, class T, class EngineTag&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView0&lt;Array&lt;Dim, T, EngineTag&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Convenience typedef for the thing we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Array&lt;Dim, T, EngineTag&gt; Subject_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Deduce domains for the output type.</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // At some point, we need to fix NewDomain1; until then, use</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // the temporary version from Array.h.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::Engine_t Engine_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::Domain_t Domain_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Deduce the template parameters for the output type.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename NewEngine&lt;Engine_t, Domain_t&gt;::Type_t</FONT>
<BR><FONT SIZE=2>&gt; NewEngine_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; enum { newDim = NewEngine_t::dimensions };</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename NewEngine_t::Tag_t NewEngineTag_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // The output types.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Array&lt;newDim, T, NewEngineTag_t&gt; Type_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Type_t ReadType_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -};</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; template&lt;int Dim, class T, class EngineTag&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; struct View1&lt;Array&lt;Dim, T, EngineTag&gt;, int&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; {</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -1864,7 +1827,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; /// A zero-argument version of operator(), which takes a view of</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; /// array's domain, is also supplied.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; //@{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typename AltView0&lt;This_t&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; typename View0&lt;This_t&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; read() const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View0&lt;This_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -1934,7 +1897,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Ret_t::makeRead(*this, s1, s2, s3, s4, s5, s6, s7);</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typename AltView0&lt;This_t&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; typename View0&lt;This_t&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; operator()() const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View0&lt;This_t&gt; Ret_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; ===== Field/Field.h 1.14 vs edited =====</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; --- 1.14/r2/src/Field/Field.h&nbsp;&nbsp;&nbsp; Tue Dec 16 15:20:00 2003</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +++ edited/Field/Field.h Tue Mar&nbsp; 2 11:25:22 2004</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -269,9 +269,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * View1Implementation&lt;Field, D, SV&gt; specialization for indexing a</FONT>
<BR><FONT SIZE=2>&gt; field</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * with a single domain. There is a single-valued version (SV ==</FONT>
<BR><FONT SIZE=2>&gt; true)</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * and a multi-valued version (SV == false).</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * Any changes to View1Implementation should also be made to</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * AltView1Implementation.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; // Single-valued version. Handles scalars and Locs.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -508,62 +505,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * AltView1Implementation avoids an instantiation problem that</FONT>
<BR><FONT SIZE=2>&gt; arises</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; when two</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * classes use each other.&nbsp; This class's definition should be</FONT>
<BR><FONT SIZE=2>&gt; exactly</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * the same as View1Implementation except omitting member functions.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * Do NOT explicitly instantiate this class.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -// Single-valued version. Handles scalars and Locs.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class Subject, class Domain, bool SV&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView1Implementation;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class Mesh, class T, class EngineTag, class Domain&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView1Implementation&lt;Field&lt;Mesh, T, EngineTag&gt;, Domain,</FONT>
<BR><FONT SIZE=2>&gt; true&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Convenience typedef for the thing we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt; Subject_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // The return types are pretty simple here.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::Element_t ReadType_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::ElementRef_t Type_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -};</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class Mesh, class T, class EngineTag, class Domain&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView1Implementation&lt;Field&lt;Mesh, T, EngineTag&gt;, Domain,</FONT>
<BR><FONT SIZE=2>&gt; false&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Convenience typedef for the thing we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt; Subject_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Deduce domains for the output type.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::Engine_t Engine_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename NewEngine&lt;Engine_t, Domain&gt;::Type_t NewEngine_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename NewEngine_t::Element_t NewT_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename NewEngine_t::Tag_t NewEngineTag_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Deduce the new Mesh.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp;&nbsp;&nbsp; NewMeshTag&lt;NewEngine_t::dimensions, Mesh, Domain&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NewMeshTag_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // The output types.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Field&lt;NewMeshTag_t, NewT_t, NewEngineTag_t&gt; ReadType_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Field&lt;NewMeshTag_t, NewT_t, NewEngineTag_t&gt; Type_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -};</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -/**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * View1&lt;Field, S1&gt; specialization for indexing a field with a</FONT>
<BR><FONT SIZE=2>&gt; single</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; domain.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * Any changes to View1 should also be made to AltView1.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; template&lt;class Mesh, class T, class EngineTag, class Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -613,8 +555,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * View1&lt;Field, int&gt; specialization for indexing a field with an</FONT>
<BR><FONT SIZE=2>&gt; int.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * Any changes to View1 should also be made to AltView1.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; template&lt;class Mesh, class T, class EngineTag&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -658,71 +598,6 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp; /**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * AltView1 avoids an instantiation problem that arises when two</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * classes use each other.&nbsp; This class's definition should be</FONT>
<BR><FONT SIZE=2>&gt; exactly</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * the same as View1 except omitting member functions.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * Do NOT explicitly instantiate this class.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class FieldTag, class DomainTag&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView1;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class Mesh, class T, class EngineTag, class Sub1&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView1&lt;Field&lt;Mesh, T, EngineTag&gt;, Sub1&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Convenience typedef for the thing we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt; Subject_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Deduce domains for the output type.</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // At some point, we need to fix NewDomain1; until then, use</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // the temporary version from NewDomain.h.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::Domain_t Domain_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef TemporaryNewDomain1&lt;Domain_t, Sub1&gt; NewDomain_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename NewDomain_t::SliceType_t SDomain_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Deduce appropriate version of implementation to dispatch to.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; enum { sv = DomainTraits&lt;SDomain_t&gt;::singleValued };</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef AltView1Implementation&lt;Subject_t, SDomain_t, sv&gt;</FONT>
<BR><FONT SIZE=2>&gt; Dispatch_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // The optimized domain combiner.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef CombineDomainOpt&lt;NewDomain_t, sv&gt; Combine_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // The return types.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Dispatch_t::ReadType_t ReadType_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Dispatch_t::Type_t Type_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -};</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -/**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * AltView1 avoids an instantiation problem that arises when two</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * classes use each other.&nbsp; This class's definition should be</FONT>
<BR><FONT SIZE=2>&gt; exactly</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * the same as View1 except omitting member functions.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - *</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - * Do NOT explicitly instantiate this class.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; - */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -template&lt;class Mesh, class T, class EngineTag&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -struct AltView1&lt;Field&lt;Mesh, T, EngineTag&gt;, int&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // Convenience typedef for the thing we're taking a view of.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef Field&lt;Mesh, T, EngineTag&gt; Subject_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; // The return types.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::Element_t ReadType_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; typedef typename Subject_t::ElementRef_t Type_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -};</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -/**</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * View2&lt;Field, S1, S2&gt; specialization for indexing a field with two</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; * domains.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp; */</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -1455,14 +1330,14 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; /// point fields the viewing domain is an actual centering domain.</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; //@{</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; inline typename AltView1&lt;This_t, Domain_t&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; inline typename View1&lt;This_t, Domain_t&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; read() const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View1&lt;This_t, Domain_t&gt; Ret_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Ret_t::makeRead(*this, physicalDomain());</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; inline typename AltView1&lt;This_t, Domain_t&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; inline typename View1&lt;This_t, Domain_t&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; readAll() const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View1&lt;This_t, Domain_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -1470,7 +1345,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; template&lt;class Sub1&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; inline typename AltView1&lt;This_t, Sub1&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; inline typename View1&lt;This_t, Sub1&gt;::ReadType_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; read(const Sub1 &amp;s1) const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View1&lt;This_t, Sub1&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -1493,14 +1368,14 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Ret_t::makeRead(*this, s1, s2, s3);</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; inline typename AltView1&lt;This_t, Domain_t&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; inline typename View1&lt;This_t, Domain_t&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; operator()() const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View1&lt;This_t, Domain_t&gt; Ret_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return Ret_t::make(*this, physicalDomain());</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; inline typename AltView1&lt;This_t, Domain_t&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; inline typename View1&lt;This_t, Domain_t&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; all() const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View1&lt;This_t, Domain_t&gt; Ret_t;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; @@ -1508,7 +1383,7 @@</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; template&lt;class Sub1&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; -&nbsp; inline typename AltView1&lt;This_t, Sub1&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt; +&nbsp; inline typename View1&lt;This_t, Sub1&gt;::Type_t</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp; operator()(const Sub1 &amp;s1) const</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; typedef View1&lt;This_t, Sub1&gt; Ret_t;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 3.2//EN&quot;&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;HTML&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;HEAD&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;META HTTP-EQUIV=&quot;Content-Type&quot; CONTENT=&quot;text/html; charset=us-ascii&quot;&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;META NAME=&quot;Generator&quot; CONTENT=&quot;MS Exchange Server version</FONT>
<BR><FONT SIZE=2>&gt; 5.5.2653.12&quot;&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;TITLE&gt;RE: [pooma-dev] AltView* classes&lt;/TITLE&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/HEAD&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BODY&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&lt;FONT SIZE=2&gt;Hi Richard,&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&lt;FONT SIZE=2&gt;This tickled a neuron the other day, but I couldn't</FONT>
<BR><FONT SIZE=2>&gt; recall the details.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&lt;FONT SIZE=2&gt;The AltView classes were put in to reduce link times</FONT> <BR><FONT SIZE=2>&gt; and sizes for large codes. The classes that have enums end up having a</FONT> <BR><FONT SIZE=2>&gt; link-time cost, both in space and time. I believe this refactoring was</FONT> <BR><FONT SIZE=2>&gt; done to reduce the cardinality of classes having the &amp;quot;sv&amp;quot; enum.</FONT> <BR><FONT SIZE=2>&gt; My recollection is that this, and other similar &amp;quot;optimizations&amp;quot;,</FONT> <BR><FONT SIZE=2>&gt; had a pretty substantial impact on link-time for Blanca. Unless these are</FONT> <BR><FONT SIZE=2>&gt; hurting something else, I would tend to leave them in. &lt;/FONT&gt;&lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&lt;FONT SIZE=2&gt;Does the CodeSourcery CVS repository have complete CVS</FONT> <BR><FONT SIZE=2>&gt; history? (i.e. did we copy the repository, or just the head version?) This</FONT> <BR><FONT SIZE=2>&gt; should have been easy to determine via CVS. &lt;/FONT&gt;&lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;FONT SIZE=2&gt;Jim&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&lt;FONT SIZE=2&gt;-------------------------------------------------------</ FONT>
<BR><FONT SIZE=2>&gt; -----------------&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;James A.</FONT> <BR><FONT SIZE=2>&gt; Crotinger&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp</FONT> <BR><FONT SIZE=2>&gt; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp; nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;</FONT> <BR><FONT SIZE=2>&gt; nbsp;&amp;nbsp;&amp;nbsp; email:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; address@hidden&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;NumeriX,</FONT> <BR><FONT SIZE=2>&gt; LLC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp; nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp</FONT> <BR><FONT SIZE=2>&gt; ;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp; nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;</FONT> <BR><FONT SIZE=2>&gt; nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; phone:&amp;nbsp; (505) 424-</FONT>
<BR><FONT SIZE=2>&gt; 4477 x104&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;2960 Rodeo Park Dr. W.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;Santa Fe, NM 87505&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;nbsp;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;P&gt;&lt;FONT SIZE=2&gt;&amp;gt; -----Original Message-----&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; From: Richard Guenther [&lt;A</FONT> <BR><FONT SIZE=2>&gt; HREF=&quot;<A HREF="mailto:address@hidden";>mailto:address@hidden </A></FONT> <BR><FONT SIZE=2>&gt; tuebingen.de&quot;&gt;<A HREF="mailto:address@hidden";>mailto: address@hidden</A>&lt;/A&gt;]&lt;/FONT&gt;</ FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; Sent: Tuesday, March 02, 2004 3:29 AM&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; To: address@hidden&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; Cc: Jeffrey D. Oldham&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; Subject: Re: [pooma-dev] AltView* classes&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; On Tue, 2 Mar 2004, Richard Guenther</FONT>
<BR><FONT SIZE=2>&gt; wrote:&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; On Fri, 27 Feb 2004, Richard Guenther</FONT>
<BR><FONT SIZE=2>&gt; wrote:&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; &amp;gt; Hi!&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; &amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; &amp;gt; Does anyone remember the exact reason</FONT>
<BR><FONT SIZE=2>&gt; for the existance of the&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; AltView*&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; &amp;gt; classes in Array.h and Field.h?&amp;nbsp;</FONT> <BR><FONT SIZE=2>&gt; Removing them and fixing their usage&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; to&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; &amp;gt; use View* seems to work (full test with</FONT> <BR><FONT SIZE=2>&gt; gcc 3.3 and 3.4 in progress).&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; Testing completed with no new</FONT> <BR><FONT SIZE=2>&gt; failures.&amp;nbsp; Would it be ok to remove those&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;gt; AltView* classes?&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; Which would be...&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; Ok?&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; Richard.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; 2004Mar02&amp;nbsp; Richard Guenther</FONT> <BR><FONT SIZE=2>&gt; &amp;lt;address@hidden&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *</FONT> <BR><FONT SIZE=2>&gt; src/Array/Array.h: remove all traces of AltView0 class.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; src/Field/Field.h:</FONT> <BR><FONT SIZE=2>&gt; remove all traces of AltView1 and&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</FONT> <BR><FONT SIZE=2>&gt; AltView1Implementation classes.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; ===== Array/Array.h 1.14 vs edited =====&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; --- 1.14/r2/src/Array/Array.h Tue Dec 16 15:19:57</FONT>
<BR><FONT SIZE=2>&gt; 2003&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +++</FONT> <BR><FONT SIZE=2>&gt; edited/Array/Array.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp; nbsp; Tue Mar&amp;nbsp; 2</FONT>
<BR><FONT SIZE=2>&gt; 11:24:14 2004&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -649,8 +649,6 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; // an existing engine cannot be any kind of</FONT>
<BR><FONT SIZE=2>&gt; slice domain.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; // Also, bounds checking would make no</FONT>
<BR><FONT SIZE=2>&gt; sense because it would&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; // reduce to contains(a.domain(),</FONT>
<BR><FONT SIZE=2>&gt; a.domain());&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -//&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -// Any changes to this class should also be made</FONT>
<BR><FONT SIZE=2>&gt; to AltView0.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; template&amp;lt;int Dim, class T, class</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; struct View0&amp;lt;Array&amp;lt;Dim, T,</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt; &amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -695,41 +693,6 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; };&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -// AltView0 avoids an instantiation problem that</FONT>
<BR><FONT SIZE=2>&gt; arises when two&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -// classes use each other.&amp;nbsp; This class's</FONT>
<BR><FONT SIZE=2>&gt; definition should be exactly&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -// the same as View0 except omitting member</FONT>
<BR><FONT SIZE=2>&gt; functions.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -//&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -// Do NOT explicitly instantiate this</FONT>
<BR><FONT SIZE=2>&gt; class.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class ArrayTag&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView0;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;int Dim, class T, class</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView0&amp;lt;Array&amp;lt;Dim, T,</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt; &amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Convenience typedef for the thing</FONT>
<BR><FONT SIZE=2>&gt; we're taking a view of.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Array&amp;lt;Dim, T, EngineTag&amp;gt;</FONT>
<BR><FONT SIZE=2>&gt; Subject_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Deduce domains for the output</FONT>
<BR><FONT SIZE=2>&gt; type.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // At some point, we need to fix</FONT>
<BR><FONT SIZE=2>&gt; NewDomain1; until then, use&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // the temporary version from</FONT>
<BR><FONT SIZE=2>&gt; Array.h.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::Engine_t</FONT>
<BR><FONT SIZE=2>&gt; Engine_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::Domain_t</FONT>
<BR><FONT SIZE=2>&gt; Domain_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Deduce the template parameters for the</FONT>
<BR><FONT SIZE=2>&gt; output type.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename NewEngine&amp;lt;Engine_t,</FONT> <BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::Type_t NewEngine_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; enum { newDim = NewEngine_t::dimensions</FONT>
<BR><FONT SIZE=2>&gt; };&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename NewEngine_t::Tag_t</FONT>
<BR><FONT SIZE=2>&gt; NewEngineTag_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // The output types.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Array&amp;lt;newDim, T,</FONT> <BR><FONT SIZE=2>&gt; NewEngineTag_t&amp;gt; Type_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Type_t ReadType_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -};&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; template&amp;lt;int Dim, class T, class</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; struct View1&amp;lt;Array&amp;lt;Dim, T,</FONT> <BR><FONT SIZE=2>&gt; EngineTag&amp;gt;, int&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -1864,7 +1827,7 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// A zero-argument version of</FONT> <BR><FONT SIZE=2>&gt; operator(), which takes a view of&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// array's domain, is also</FONT>
<BR><FONT SIZE=2>&gt; supplied.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //@{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typename</FONT> <BR><FONT SIZE=2>&gt; AltView0&amp;lt;This_t&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; typename</FONT> <BR><FONT SIZE=2>&gt; View0&amp;lt;This_t&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; read() const&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View0&amp;lt;This_t&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -1934,7 +1897,7 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return</FONT> <BR><FONT SIZE=2>&gt; Ret_t::makeRead(*this, s1, s2, s3, s4, s5, s6, s7);&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typename</FONT> <BR><FONT SIZE=2>&gt; AltView0&amp;lt;This_t&amp;gt;::Type_t&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; typename</FONT> <BR><FONT SIZE=2>&gt; View0&amp;lt;This_t&amp;gt;::Type_t&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; operator()() const&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View0&amp;lt;This_t&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; ===== Field/Field.h 1.14 vs edited =====&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; --- 1.14/r2/src/Field/Field.h Tue Dec 16 15:20:00</FONT>
<BR><FONT SIZE=2>&gt; 2003&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +++</FONT> <BR><FONT SIZE=2>&gt; edited/Field/Field.h&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp; nbsp; Tue Mar&amp;nbsp; 2</FONT>
<BR><FONT SIZE=2>&gt; 11:25:22 2004&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -269,9 +269,6 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * View1Implementation&amp;lt;Field, D,</FONT> <BR><FONT SIZE=2>&gt; SV&amp;gt; specialization for indexing a field&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * with a single domain. There is a</FONT> <BR><FONT SIZE=2>&gt; single-valued version (SV == true)&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * and a multi-valued version (SV ==</FONT>
<BR><FONT SIZE=2>&gt; false).&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - *&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * Any changes to View1Implementation should</FONT>
<BR><FONT SIZE=2>&gt; also be made to&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * AltView1Implementation.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; // Single-valued version. Handles scalars</FONT>
<BR><FONT SIZE=2>&gt; and Locs.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -508,62 +505,7 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; /**&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * AltView1Implementation avoids an</FONT> <BR><FONT SIZE=2>&gt; instantiation problem that arises&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; when two&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * classes use each other.&amp;nbsp; This class's</FONT>
<BR><FONT SIZE=2>&gt; definition should be exactly&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * the same as View1Implementation except</FONT>
<BR><FONT SIZE=2>&gt; omitting member functions.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - *&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * Do NOT explicitly instantiate this</FONT>
<BR><FONT SIZE=2>&gt; class.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -// Single-valued version. Handles scalars and</FONT>
<BR><FONT SIZE=2>&gt; Locs.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class Subject, class Domain, bool</FONT>
<BR><FONT SIZE=2>&gt; SV&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView1Implementation;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class Mesh, class T, class</FONT> <BR><FONT SIZE=2>&gt; EngineTag, class Domain&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView1Implementation&amp;lt;Field&amp;lt;Mesh,</FONT> <BR><FONT SIZE=2>&gt; T, EngineTag&amp;gt;, Domain, true&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Convenience typedef for the thing</FONT>
<BR><FONT SIZE=2>&gt; we're taking a view of.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Field&amp;lt;Mesh, T, EngineTag&amp;gt;</FONT>
<BR><FONT SIZE=2>&gt; Subject_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // The return types are pretty simple</FONT>
<BR><FONT SIZE=2>&gt; here.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::Element_t</FONT>
<BR><FONT SIZE=2>&gt; ReadType_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::ElementRef_t</FONT>
<BR><FONT SIZE=2>&gt; Type_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -};&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class Mesh, class T, class</FONT> <BR><FONT SIZE=2>&gt; EngineTag, class Domain&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView1Implementation&amp;lt;Field&amp;lt;Mesh,</FONT> <BR><FONT SIZE=2>&gt; T, EngineTag&amp;gt;, Domain, false&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Convenience typedef for the thing</FONT>
<BR><FONT SIZE=2>&gt; we're taking a view of.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Field&amp;lt;Mesh, T, EngineTag&amp;gt;</FONT>
<BR><FONT SIZE=2>&gt; Subject_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Deduce domains for the output</FONT>
<BR><FONT SIZE=2>&gt; type.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::Engine_t</FONT>
<BR><FONT SIZE=2>&gt; Engine_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename NewEngine&amp;lt;Engine_t,</FONT> <BR><FONT SIZE=2>&gt; Domain&amp;gt;::Type_t NewEngine_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename NewEngine_t::Element_t</FONT>
<BR><FONT SIZE=2>&gt; NewT_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename NewEngine_t::Tag_t</FONT>
<BR><FONT SIZE=2>&gt; NewEngineTag_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Deduce the new Mesh.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp;&amp;nbsp;&amp;nbsp;</FONT> <BR><FONT SIZE=2>&gt; NewMeshTag&amp;lt;NewEngine_t::dimensions, Mesh, Domain&amp;gt;::Type_t&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;</FONT>
<BR><FONT SIZE=2>&gt; NewMeshTag_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // The output types.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Field&amp;lt;NewMeshTag_t, NewT_t,</FONT> <BR><FONT SIZE=2>&gt; NewEngineTag_t&amp;gt; ReadType_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Field&amp;lt;NewMeshTag_t, NewT_t,</FONT> <BR><FONT SIZE=2>&gt; NewEngineTag_t&amp;gt; Type_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -};&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -/**&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * View1&amp;lt;Field, S1&amp;gt;</FONT> <BR><FONT SIZE=2>&gt; specialization for indexing a field with a single&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; domain.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - *&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * Any changes to View1 should also be made to</FONT>
<BR><FONT SIZE=2>&gt; AltView1.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; template&amp;lt;class Mesh, class T, class</FONT> <BR><FONT SIZE=2>&gt; EngineTag, class Sub1&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -613,8 +555,6 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; /**&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * View1&amp;lt;Field, int&amp;gt;</FONT> <BR><FONT SIZE=2>&gt; specialization for indexing a field with an int.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - *&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * Any changes to View1 should also be made to</FONT>
<BR><FONT SIZE=2>&gt; AltView1.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; template&amp;lt;class Mesh, class T, class</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -658,71 +598,6 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp; /**&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * AltView1 avoids an instantiation problem that</FONT>
<BR><FONT SIZE=2>&gt; arises when two&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * classes use each other.&amp;nbsp; This class's</FONT>
<BR><FONT SIZE=2>&gt; definition should be exactly&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * the same as View1 except omitting member</FONT>
<BR><FONT SIZE=2>&gt; functions.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - *&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * Do NOT explicitly instantiate this</FONT>
<BR><FONT SIZE=2>&gt; class.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class FieldTag, class</FONT>
<BR><FONT SIZE=2>&gt; DomainTag&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView1;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class Mesh, class T, class</FONT> <BR><FONT SIZE=2>&gt; EngineTag, class Sub1&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView1&amp;lt;Field&amp;lt;Mesh, T,</FONT> <BR><FONT SIZE=2>&gt; EngineTag&amp;gt;, Sub1&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Convenience typedef for the thing</FONT>
<BR><FONT SIZE=2>&gt; we're taking a view of.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Field&amp;lt;Mesh, T, EngineTag&amp;gt;</FONT>
<BR><FONT SIZE=2>&gt; Subject_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Deduce domains for the output</FONT>
<BR><FONT SIZE=2>&gt; type.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // At some point, we need to fix</FONT>
<BR><FONT SIZE=2>&gt; NewDomain1; until then, use&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // the temporary version from</FONT>
<BR><FONT SIZE=2>&gt; NewDomain.h.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::Domain_t</FONT>
<BR><FONT SIZE=2>&gt; Domain_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef TemporaryNewDomain1&amp;lt;Domain_t,</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt; NewDomain_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename NewDomain_t::SliceType_t</FONT>
<BR><FONT SIZE=2>&gt; SDomain_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Deduce appropriate version of</FONT> <BR><FONT SIZE=2>&gt; implementation to dispatch to.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; enum { sv =</FONT> <BR><FONT SIZE=2>&gt; DomainTraits&amp;lt;SDomain_t&amp;gt;::singleValued };&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; AltView1Implementation&amp;lt;Subject_t, SDomain_t, sv&amp;gt; Dispatch_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // The optimized domain combiner.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef CombineDomainOpt&amp;lt;NewDomain_t,</FONT>
<BR><FONT SIZE=2>&gt; sv&amp;gt; Combine_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // The return types.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Dispatch_t::ReadType_t</FONT>
<BR><FONT SIZE=2>&gt; ReadType_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Dispatch_t::Type_t</FONT>
<BR><FONT SIZE=2>&gt; Type_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -};&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -/**&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * AltView1 avoids an instantiation problem that</FONT>
<BR><FONT SIZE=2>&gt; arises when two&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * classes use each other.&amp;nbsp; This class's</FONT>
<BR><FONT SIZE=2>&gt; definition should be exactly&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * the same as View1 except omitting member</FONT>
<BR><FONT SIZE=2>&gt; functions.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - *&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - * Do NOT explicitly instantiate this</FONT>
<BR><FONT SIZE=2>&gt; class.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; - */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -template&amp;lt;class Mesh, class T, class</FONT>
<BR><FONT SIZE=2>&gt; EngineTag&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -struct AltView1&amp;lt;Field&amp;lt;Mesh, T,</FONT> <BR><FONT SIZE=2>&gt; EngineTag&amp;gt;, int&amp;gt;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // Convenience typedef for the thing</FONT>
<BR><FONT SIZE=2>&gt; we're taking a view of.&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef Field&amp;lt;Mesh, T, EngineTag&amp;gt;</FONT>
<BR><FONT SIZE=2>&gt; Subject_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; // The return types.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::Element_t</FONT>
<BR><FONT SIZE=2>&gt; ReadType_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; typedef typename Subject_t::ElementRef_t</FONT>
<BR><FONT SIZE=2>&gt; Type_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -};&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -/**&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * View2&amp;lt;Field, S1, S2&amp;gt;</FONT> <BR><FONT SIZE=2>&gt; specialization for indexing a field with two&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; * domains.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp; */&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -1455,14 +1330,14 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /// point fields the viewing</FONT> <BR><FONT SIZE=2>&gt; domain is an actual centering domain.&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //@{&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; inline typename AltView1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; inline typename View1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; read() const&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View1&amp;lt;This_t, Domain_t&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return</FONT> <BR><FONT SIZE=2>&gt; Ret_t::makeRead(*this, physicalDomain());&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; inline typename AltView1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; inline typename View1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readAll() const&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View1&amp;lt;This_t, Domain_t&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -1470,7 +1345,7 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; template&amp;lt;class</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; inline typename AltView1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; inline typename View1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt;::ReadType_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; read(const Sub1 &amp;amp;s1)</FONT>
<BR><FONT SIZE=2>&gt; const&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View1&amp;lt;This_t, Sub1&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -1493,14 +1368,14 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return</FONT> <BR><FONT SIZE=2>&gt; Ret_t::makeRead(*this, s1, s2, s3);&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; inline typename AltView1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::Type_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; inline typename View1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::Type_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; operator()() const&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View1&amp;lt;This_t, Domain_t&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; return</FONT> <BR><FONT SIZE=2>&gt; Ret_t::make(*this, physicalDomain());&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; inline typename AltView1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::Type_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; inline typename View1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Domain_t&amp;gt;::Type_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; all() const&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View1&amp;lt;This_t, Domain_t&amp;gt; Ret_t;&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; @@ -1508,7 +1383,7 @@&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; &lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; template&amp;lt;class</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; -&amp;nbsp; inline typename AltView1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt;::Type_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt; +&amp;nbsp; inline typename View1&amp;lt;This_t,</FONT>
<BR><FONT SIZE=2>&gt; Sub1&amp;gt;::Type_t&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; operator()(const Sub1 &amp;amp;s1)</FONT>
<BR><FONT SIZE=2>&gt; const&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/FONT&gt;</FONT> <BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;BR&gt;&lt;FONT SIZE=2&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; typedef</FONT> <BR><FONT SIZE=2>&gt; View1&amp;lt;This_t, Sub1&amp;gt; Ret_t;&lt;/FONT&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/P&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/BODY&gt;</FONT>
<BR><FONT SIZE=2>&gt;&nbsp; &gt; &lt;/HTML&gt;</FONT>
</P>

</BODY>
</HTML>

reply via email to

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