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