freepooma-devel
[Top][All Lists]
Advanced

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

RE: [pooma-dev] AltView* classes


From: Dave Nystrom
Subject: RE: [pooma-dev] AltView* classes
Date: Tue, 2 Mar 2004 10:16:54 -0700

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]