freepooma-devel
[Top][All Lists]
Advanced

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

POOMA Changes from LANL


From: Mark Mitchell
Subject: POOMA Changes from LANL
Date: Tue, 03 Apr 2001 12:06:10 -0700

John Hall made a few changes to POOMA after we moved the repository.

I've attached the diffs.  

Scott, would you please review and commit the changes?  Or if you are
too busy, ask Jim to do so?

This is an important task because we want Blanca to start using our
CVS repository, and apparently they need these changes.

John, in future, please send changes to
address@hidden, and we'll get them processed.

Thanks to all,

--
Mark Mitchell                   address@hidden
CodeSourcery, LLC               http://www.codesourcery.com

Index: src/Engine/DataObject.h
===================================================================
RCS file: /usr/local/pooma/repository/r2/src/Engine/DataObject.h,v
retrieving revision 1.29
retrieving revision 1.30
diff -c -p -r1.29 -r1.30
*** DataObject.h        2000/03/07 13:16:50     1.29
--- DataObject.h        2001/03/19 22:22:31     1.30
*************** struct Combine2<int, int, Op, AffinityCo
*** 209,215 ****
  {
    typedef int Type_t;
    inline static
!   Type_t combine(int a,int b,Op ,AffinityCombine )
    {
      return a;
    }
--- 209,215 ----
  {
    typedef int Type_t;
    inline static
!   Type_t combine(int a,int b,AffinityCombine )
    {
      return a;
    }
*************** public:
*** 248,254 ****
  
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
! // $RCSfile: DataObject.h,v $   $Author: swhaney $
! // $Revision: 1.29 $   $Date: 2000/03/07 13:16:50 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
--- 248,254 ----
  
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
! // $RCSfile: DataObject.h,v $   $Author: jxyh $
! // $Revision: 1.30 $   $Date: 2001/03/19 22:22:31 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
Index: src/Evaluator/MultiArgEvaluator.h
===================================================================
RCS file: /usr/local/pooma/repository/r2/src/Evaluator/MultiArgEvaluator.h,v
retrieving revision 1.5
retrieving revision 1.7
diff -c -p -r1.5 -r1.7
*** MultiArgEvaluator.h 2001/03/04 06:46:48     1.5
--- MultiArgEvaluator.h 2001/03/14 05:36:16     1.7
*************** public:
*** 136,142 ****
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          const Function &function,
           const Interval<Dim> &domain,
           const Kernel &kernel)
    {
--- 136,142 ----
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          Function &function,
           const Interval<Dim> &domain,
           const Kernel &kernel)
    {
*************** public:
*** 158,164 ****
    template<class A1, class Function, int Dim, class Kernel>
    static void
    createIterate(const A1& a1,
!               const Function& function,
                const Interval<Dim> &domain,
                ScalarCodeInfo &info,
                const Kernel &)
--- 158,164 ----
    template<class A1, class Function, int Dim, class Kernel>
    static void
    createIterate(const A1& a1,
!               Function& function,
                const Interval<Dim> &domain,
                ScalarCodeInfo &info,
                const Kernel &)
*************** public:
*** 196,202 ****
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg& multiArg,
!          const Function& function,
           Interval<Dim> domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
--- 196,202 ----
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg& multiArg,
!          Function& function,
           Interval<Dim> domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
*************** public:
*** 237,243 ****
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          const Function &function,
           const Interval<Dim> &domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
--- 237,243 ----
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          Function &function,
           const Interval<Dim> &domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
*************** struct MultiArgEvaluator<RemoteSinglePat
*** 288,294 ****
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          const Function &function,
           const Interval<Dim> &domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
--- 288,294 ----
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          Function &function,
           const Interval<Dim> &domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
*************** struct MultiArgEvaluator<RemoteMultiPatc
*** 338,344 ****
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          const Function &function,
           const Interval<Dim> &domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
--- 338,344 ----
    template<class MultiArg, class Function, int Dim, class Kernel>
    static void
    evaluate(const MultiArg &multiArg,
!          Function &function,
           const Interval<Dim> &domain,
           ScalarCodeInfo &info,
           const Kernel &kernel)
*************** struct MultiArgEvaluatorTag<MultiArg3<A1
*** 385,390 ****
--- 385,435 ----
    Evaluator_t;
  };
  
+ template<class A1, class A2, class A3, class A4>
+ struct MultiArgEvaluatorTag<MultiArg4<A1, A2, A3, A4> >
+ {
+   typedef typename EvaluatorTag1<A1>::Evaluator_t Eval1_t;
+   typedef typename EvaluatorTag1<A2>::Evaluator_t Eval2_t;
+   typedef typename EvaluatorTag1<A3>::Evaluator_t Eval3_t;
+   typedef typename EvaluatorTag1<A4>::Evaluator_t Eval4_t;
+   typedef typename EvaluatorCombine<Eval1_t, Eval2_t>::Evaluator_t Eval12_t;
+   typedef typename EvaluatorCombine<Eval3_t, Eval12_t>::Evaluator_t  
Eval123_t;
+   typedef typename EvaluatorCombine<Eval4_t, Eval123_t>::Evaluator_t
+   Evaluator_t;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5>
+ struct MultiArgEvaluatorTag<MultiArg5<A1, A2, A3, A4, A5> >
+ {
+   typedef typename EvaluatorTag1<A1>::Evaluator_t Eval1_t;
+   typedef typename EvaluatorTag1<A2>::Evaluator_t Eval2_t;
+   typedef typename EvaluatorTag1<A3>::Evaluator_t Eval3_t;
+   typedef typename EvaluatorTag1<A4>::Evaluator_t Eval4_t;
+   typedef typename EvaluatorTag1<A5>::Evaluator_t Eval5_t;
+   typedef typename EvaluatorCombine<Eval1_t, Eval2_t>::Evaluator_t Eval12_t;
+   typedef typename EvaluatorCombine<Eval3_t, Eval12_t>::Evaluator_t  
Eval123_t;
+   typedef typename EvaluatorCombine<Eval4_t, Eval123_t>::Evaluator_t  
Eval1234_t;
+   typedef typename EvaluatorCombine<Eval5_t, Eval1234_t>::Evaluator_t
+   Evaluator_t;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6>
+ struct MultiArgEvaluatorTag<MultiArg6<A1, A2, A3, A4, A5, A6> >
+ {
+   typedef typename EvaluatorTag1<A1>::Evaluator_t Eval1_t;
+   typedef typename EvaluatorTag1<A2>::Evaluator_t Eval2_t;
+   typedef typename EvaluatorTag1<A3>::Evaluator_t Eval3_t;
+   typedef typename EvaluatorTag1<A4>::Evaluator_t Eval4_t;
+   typedef typename EvaluatorTag1<A5>::Evaluator_t Eval5_t;
+   typedef typename EvaluatorTag1<A6>::Evaluator_t Eval6_t;
+   typedef typename EvaluatorCombine<Eval1_t, Eval2_t>::Evaluator_t Eval12_t;
+   typedef typename EvaluatorCombine<Eval3_t, Eval12_t>::Evaluator_t  
Eval123_t;
+   typedef typename EvaluatorCombine<Eval4_t, Eval123_t>::Evaluator_t  
Eval1234_t;
+   typedef typename EvaluatorCombine<Eval5_t, Eval1234_t>::Evaluator_t  
Eval12345_t;
+   typedef typename EvaluatorCombine<Eval6_t, Eval12345_t>::Evaluator_t
+   Evaluator_t;
+ };
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7>
  struct MultiArgEvaluatorTag<MultiArg7<A1, A2, A3, A4, A5, A6, A7> >
  {
*************** struct MultiArgEvaluatorTag<MultiArg7<A1
*** 411,416 ****
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: MultiArgEvaluator.h,v $   $Author: jxyh $
! // $Revision: 1.5 $   $Date: 2001/03/04 06:46:48 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
--- 456,461 ----
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: MultiArgEvaluator.h,v $   $Author: jxyh $
! // $Revision: 1.7 $   $Date: 2001/03/14 05:36:16 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
Index: src/Evaluator/ScalarCode.h
===================================================================
RCS file: /usr/local/pooma/repository/r2/src/Evaluator/ScalarCode.h,v
retrieving revision 1.5
retrieving revision 1.7
diff -c -p -r1.5 -r1.7
*** ScalarCode.h        2001/03/04 22:19:15     1.5
--- ScalarCode.h        2001/03/14 05:36:16     1.7
*************** struct ApplyMultiArgLoc<MultiArg1<A1>, F
*** 102,108 ****
  template<class A1, class A2, class Function>
  struct ApplyMultiArgLoc<MultiArg2<A1, A2>, Function>
  {
!   ApplyMultiArgLoc(const MultiArg2<A1, A2> &multiArg,const Function &function)
      : multiArg_m(multiArg), function_m(function)
    {
    }
--- 102,108 ----
  template<class A1, class A2, class Function>
  struct ApplyMultiArgLoc<MultiArg2<A1, A2>, Function>
  {
!   ApplyMultiArgLoc(const MultiArg2<A1, A2> &multiArg,Function &function)
      : multiArg_m(multiArg), function_m(function)
    {
    }
*************** struct ApplyMultiArgLoc<MultiArg2<A1, A2
*** 128,141 ****
    }
  
    const MultiArg2<A1, A2> &multiArg_m;
!   const Function &function_m;
  };
  
  template<class A1, class A2, class A3, class Function>
  struct ApplyMultiArgLoc<MultiArg3<A1, A2, A3>, Function>
  {
    ApplyMultiArgLoc(const MultiArg3<A1, A2, A3> &multiArg,
!                  const Function &function)
      : multiArg_m(multiArg), function_m(function)
    {
    }
--- 128,141 ----
    }
  
    const MultiArg2<A1, A2> &multiArg_m;
!   Function &function_m;
  };
  
  template<class A1, class A2, class A3, class Function>
  struct ApplyMultiArgLoc<MultiArg3<A1, A2, A3>, Function>
  {
    ApplyMultiArgLoc(const MultiArg3<A1, A2, A3> &multiArg,
!                  Function &function)
      : multiArg_m(multiArg), function_m(function)
    {
    }
*************** struct ApplyMultiArgLoc<MultiArg3<A1, A2
*** 165,178 ****
    }
  
    const MultiArg3<A1, A2, A3> &multiArg_m;
!   const Function &function_m;
  };
  
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Function>
  struct ApplyMultiArgLoc<MultiArg7<A1, A2, A3, A4, A5, A6, A7>, Function>
  {
    ApplyMultiArgLoc(const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &multiArg,
!                  const Function &function)
      : multiArg_m(multiArg), function_m(function)
    {
    }
--- 165,293 ----
    }
  
    const MultiArg3<A1, A2, A3> &multiArg_m;
!   Function &function_m;
  };
  
+ template<class A1, class A2, class A3, class A4, class Function>
+ struct ApplyMultiArgLoc<MultiArg4<A1, A2, A3, A4>, Function>
+ {
+   ApplyMultiArgLoc(const MultiArg4<A1, A2, A3, A4> &multiArg,
+                  Function &function)
+     : multiArg_m(multiArg), function_m(function)
+   {
+   }
+ 
+   void operator()(int i0)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, Loc<1>(i0));
+   }
+ 
+   void operator()(int i0, int i1)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, Loc<2>(i0, i1));
+   }
+ 
+   void operator()(int i0, int i1, int i2)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, Loc<3>(i0, i1, i2));
+   }
+ 
+   void operator()(int i0, int i1, int i2, int i3)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, Loc<4>(i0, i1, i2, i3));
+   }
+ 
+   const MultiArg4<A1, A2, A3, A4> &multiArg_m;
+   Function &function_m;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Function>
+ struct ApplyMultiArgLoc<MultiArg5<A1, A2, A3, A4, A5>, Function>
+ {
+   ApplyMultiArgLoc(const MultiArg5<A1, A2, A3, A4, A5> &multiArg,
+                  Function &function)
+     : multiArg_m(multiArg), function_m(function)
+   {
+   }
+ 
+   void operator()(int i0)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, Loc<1>(i0));
+   }
+ 
+   void operator()(int i0, int i1)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, Loc<2>(i0, i1));
+   }
+ 
+   void operator()(int i0, int i1, int i2)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, Loc<3>(i0, i1, i2));
+   }
+ 
+   void operator()(int i0, int i1, int i2, int i3)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, Loc<4>(i0, i1, i2, i3));
+   }
+ 
+   const MultiArg5<A1, A2, A3, A4, A5> &multiArg_m;
+   Function &function_m;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Function>
+ struct ApplyMultiArgLoc<MultiArg6<A1, A2, A3, A4, A5, A6>, Function>
+ {
+   ApplyMultiArgLoc(const MultiArg6<A1, A2, A3, A4, A5, A6> &multiArg,
+                  Function &function)
+     : multiArg_m(multiArg), function_m(function)
+   {
+   }
+ 
+   void operator()(int i0)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, multiArg_m.a6_m,
+                Loc<1>(i0));
+   }
+ 
+   void operator()(int i0, int i1)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, multiArg_m.a6_m,
+                Loc<2>(i0, i1));
+   }
+ 
+   void operator()(int i0, int i1, int i2)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, multiArg_m.a6_m,
+                Loc<3>(i0, i1, i2));
+   }
+ 
+   void operator()(int i0, int i1, int i2, int i3)
+   {
+     function_m(multiArg_m.a1_m, multiArg_m.a2_m, multiArg_m.a3_m,
+                multiArg_m.a4_m, multiArg_m.a5_m, multiArg_m.a6_m,
+                Loc<4>(i0, i1, i2, i3));
+   }
+ 
+   const MultiArg6<A1, A2, A3, A4, A5, A6> &multiArg_m;
+   Function &function_m;
+ };
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Function>
  struct ApplyMultiArgLoc<MultiArg7<A1, A2, A3, A4, A5, A6, A7>, Function>
  {
    ApplyMultiArgLoc(const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &multiArg,
!                  Function &function)
      : multiArg_m(multiArg), function_m(function)
    {
    }
*************** struct ApplyMultiArgLoc<MultiArg7<A1, A2
*** 206,212 ****
    }
  
    const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &multiArg_m;
!   const Function &function_m;
  };
  
  template<class Function, int Dim>
--- 321,327 ----
    }
  
    const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &multiArg_m;
!   Function &function_m;
  };
  
  template<class Function, int Dim>
*************** struct EvaluateLocLoop
*** 216,222 ****
    {
    }
  
!   EvaluateLocLoop(const Function &function, const Interval<Dim> &domain)
      : function_m(function), domain_m(domain)
    {
    }
--- 331,337 ----
    {
    }
  
!   EvaluateLocLoop(Function &function, const Interval<Dim> &domain)
      : function_m(function), domain_m(domain)
    {
    }
*************** struct ScalarCode
*** 239,245 ****
    {
    }
  
!   ScalarCode(const Function &function)
      : function_m(function)
    {
    }
--- 354,360 ----
    {
    }
  
!   ScalarCode(Function &function)
      : function_m(function)
    {
    }
*************** struct ScalarCode
*** 283,288 ****
--- 398,442 ----
               kernel);
    }
  
+   template<class F1, class F2, class F3, class F4>
+   void operator()(const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4)
+   {
+     enum { dimensions = F1::dimensions };
+     MultiArg4<F1, F2, F3, F4> multiArg(f1, f2, f3, f4);
+     EvaluateLocLoop<Function, dimensions> 
kernel(function_m,f1.physicalDomain());
+ 
+     MultiArgEvaluator<MainEvaluatorTag>().
+       evaluate<MultiArg4<F1, F2, F3, F4> >(multiArg, function_m,
+              f1.physicalDomain(),
+              kernel);
+   }
+ 
+   template<class F1, class F2, class F3, class F4, class F5>
+   void operator()(const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, 
const F5 &f5)
+   {
+     enum { dimensions = F1::dimensions };
+     MultiArg5<F1, F2, F3, F4, F5> multiArg(f1, f2, f3, f4, f5);
+     EvaluateLocLoop<Function, dimensions> 
kernel(function_m,f1.physicalDomain());
+ 
+     MultiArgEvaluator<MainEvaluatorTag>().
+       evaluate<MultiArg5<F1, F2, F3, F4, F5> >(multiArg, function_m,
+              f1.physicalDomain(),
+              kernel);
+   }
+ 
+   template<class F1, class F2, class F3, class F4, class F5, class F6>
+   void operator()(const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, 
const F5 &f5, const F6 &f6)
+   {
+     enum { dimensions = F1::dimensions };
+     MultiArg6<F1, F2, F3, F4, F5, F6> multiArg(f1, f2, f3, f4, f5, f6);
+     EvaluateLocLoop<Function, dimensions> 
kernel(function_m,f1.physicalDomain());
+ 
+     MultiArgEvaluator<MainEvaluatorTag>().
+       evaluate<MultiArg6<F1, F2, F3, F4, F5, F6> >(multiArg, function_m,
+              f1.physicalDomain(),
+              kernel);
+   }
+ 
    template<class F1, class F2, class F3, class F4, class F5, class F6, class 
F7>
    void operator()(const F1 &f1, const F2 &f2, const F3 &f3, const F4 &f4, 
const F5 &f5, const F6 &f6, const F7 &f7)
    {
*************** struct ScalarCode
*** 308,313 ****
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: ScalarCode.h,v $   $Author: jxyh $
! // $Revision: 1.5 $   $Date: 2001/03/04 22:19:15 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
--- 462,467 ----
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: ScalarCode.h,v $   $Author: jxyh $
! // $Revision: 1.7 $   $Date: 2001/03/14 05:36:16 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
Index: src/Evaluator/ScalarCodeInfo.h
===================================================================
RCS file: /usr/local/pooma/repository/r2/src/Evaluator/ScalarCodeInfo.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -p -r1.2 -r1.3
*** ScalarCodeInfo.h    2001/03/04 06:46:48     1.2
--- ScalarCodeInfo.h    2001/03/13 06:32:22     1.3
*************** public:
*** 176,183 ****
        ret[d] =
        Interval<1>(
  //                lower_m[d],
!             domain[d].first(),
!                   domain[d].last() - domain[d].first() // + lower_m[d]
                    );
      }
      return ret;
--- 176,183 ----
        ret[d] =
        Interval<1>(
  //                lower_m[d],
!             domain[d].first() + lower_m[d],
!                   domain[d].last() - domain[d].first() + lower_m[d]
                    );
      }
      return ret;
*************** private:
*** 209,214 ****
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: ScalarCodeInfo.h,v $   $Author: jxyh $
! // $Revision: 1.2 $   $Date: 2001/03/04 06:46:48 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
--- 209,214 ----
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: ScalarCodeInfo.h,v $   $Author: jxyh $
! // $Revision: 1.3 $   $Date: 2001/03/13 06:32:22 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
Index: src/Functions/MultiArg.h
===================================================================
RCS file: /usr/local/pooma/repository/r2/src/Functions/MultiArg.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -c -p -r1.4 -r1.5
*** MultiArg.h  2001/03/04 06:47:18     1.4
--- MultiArg.h  2001/03/11 00:34:29     1.5
***************
*** 81,86 ****
--- 81,89 ----
  template<class A1> struct MultiArg1;
  template<class A1, class A2> struct MultiArg2;
  template<class A1, class A2, class A3> struct MultiArg3;
+ template<class A1, class A2, class A3, class A4> struct MultiArg4;
+ template<class A1, class A2, class A3, class A4, class A5> struct MultiArg5;
+ template<class A1, class A2, class A3, class A4, class A5, class A6> struct 
MultiArg6;
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7> struct MultiArg7;
  
  // These MultiArgView structs are workarounds for Compaq's
*************** struct MultiArgView3
*** 111,116 ****
--- 114,152 ----
    typedef MultiArg3<A1_t, A2_t, A3_t> Type_t;
  };
  
+ template<class A1, class A2, class A3, class A4, class Dom>
+ struct MultiArgView4
+ {
+   typedef typename View1<A1, Dom>::Type_t A1_t;
+   typedef typename View1<A2, Dom>::Type_t A2_t;
+   typedef typename View1<A3, Dom>::Type_t A3_t;
+   typedef typename View1<A4, Dom>::Type_t A4_t;
+   typedef MultiArg4<A1_t, A2_t, A3_t, A4_t> Type_t;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Dom>
+ struct MultiArgView5
+ {
+   typedef typename View1<A1, Dom>::Type_t A1_t;
+   typedef typename View1<A2, Dom>::Type_t A2_t;
+   typedef typename View1<A3, Dom>::Type_t A3_t;
+   typedef typename View1<A4, Dom>::Type_t A4_t;
+   typedef typename View1<A5, Dom>::Type_t A5_t;
+   typedef MultiArg5<A1_t, A2_t, A3_t, A4_t, A5_t> Type_t;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Dom>
+ struct MultiArgView6
+ {
+   typedef typename View1<A1, Dom>::Type_t A1_t;
+   typedef typename View1<A2, Dom>::Type_t A2_t;
+   typedef typename View1<A3, Dom>::Type_t A3_t;
+   typedef typename View1<A4, Dom>::Type_t A4_t;
+   typedef typename View1<A5, Dom>::Type_t A5_t;
+   typedef typename View1<A6, Dom>::Type_t A6_t;
+   typedef MultiArg6<A1_t, A2_t, A3_t, A4_t, A5_t, A6_t> Type_t;
+ };
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Dom>
  struct MultiArgView7
  {
*************** struct View1<MultiArg3<A1, A2, A3>, Dom>
*** 142,147 ****
--- 178,201 ----
    typedef typename MultiArgView3<A1, A2, A3, Dom>::Type_t Type_t;
  };
  
+ template<class A1, class A2, class A3, class A4, class Dom>
+ struct View1<MultiArg4<A1, A2, A3, A4>, Dom>
+ {
+   typedef typename MultiArgView4<A1, A2, A3, A4, Dom>::Type_t Type_t;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Dom>
+ struct View1<MultiArg5<A1, A2, A3, A4, A5>, Dom>
+ {
+   typedef typename MultiArgView5<A1, A2, A3, A4, A5, Dom>::Type_t Type_t;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Dom>
+ struct View1<MultiArg6<A1, A2, A3, A4, A5, A6>, Dom>
+ {
+   typedef typename MultiArgView6<A1, A2, A3, A4, A5, A6, Dom>::Type_t Type_t;
+ };
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Dom>
  struct View1<MultiArg7<A1, A2, A3, A4, A5, A6, A7>, Dom>
  {
*************** struct MultiArg3
*** 214,219 ****
--- 268,348 ----
    A3 a3_m;
  };
  
+ template<class A1, class A2, class A3, class A4>
+ struct MultiArg4
+ {
+   enum { size = 4 };
+ 
+   MultiArg4(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4)
+     : a1_m(a1), a2_m(a2), a3_m(a3), a4_m(a4)
+   {
+   }
+ 
+   template<class Dom>
+   typename View1<MultiArg4<A1, A2, A3, A4>, Dom>::Type_t
+   operator()(Dom &dom) const
+   {
+     typedef typename View1<MultiArg4<A1, A2, A3, A4>, Dom>::Type_t Ret_t;
+     return Ret_t(a1_m(dom), a2_m(dom), a3_m(dom), a4_m(dom));
+   }
+ 
+   A1 a1_m;
+   A2 a2_m;
+   A3 a3_m;
+   A4 a4_m;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5>
+ struct MultiArg5
+ {
+   enum { size = 5 };
+ 
+   MultiArg5(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 
&a5)
+     : a1_m(a1), a2_m(a2), a3_m(a3), a4_m(a4), a5_m(a5)
+   {
+   }
+ 
+   template<class Dom>
+   typename View1<MultiArg5<A1, A2, A3, A4, A5>, Dom>::Type_t
+   operator()(Dom &dom) const
+   {
+     typedef typename View1<MultiArg5<A1, A2, A3, A4, A5>, Dom>::Type_t Ret_t;
+     return Ret_t(a1_m(dom), a2_m(dom), a3_m(dom), a4_m(dom), a5_m(dom));
+   }
+ 
+   A1 a1_m;
+   A2 a2_m;
+   A3 a3_m;
+   A4 a4_m;
+   A5 a5_m;
+ };
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6>
+ struct MultiArg6
+ {
+   enum { size = 6 };
+ 
+   MultiArg6(const A1 &a1, const A2 &a2, const A3 &a3, const A4 &a4, const A5 
&a5, const A6 &a6)
+     : a1_m(a1), a2_m(a2), a3_m(a3), a4_m(a4), a5_m(a5), a6_m(a6)
+   {
+   }
+ 
+   template<class Dom>
+   typename View1<MultiArg6<A1, A2, A3, A4, A5, A6>, Dom>::Type_t
+   operator()(Dom &dom) const
+   {
+     typedef typename View1<MultiArg6<A1, A2, A3, A4, A5, A6>, Dom>::Type_t 
Ret_t;
+     return Ret_t(a1_m(dom), a2_m(dom), a3_m(dom), a4_m(dom), a5_m(dom), 
a6_m(dom));
+   }
+ 
+   A1 a1_m;
+   A2 a2_m;
+   A3 a3_m;
+   A4 a4_m;
+   A5 a5_m;
+   A6 a6_m;
+ };
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class A7>
  struct MultiArg7
  {
*************** void applyMultiArg(const MultiArg3<A1, A
*** 283,288 ****
--- 412,459 ----
    f(node.a1_m, node.a2_m, node.a3_m, i1, i2);
  }
  
+ template<class A1, class A2, class A3, class A4, class Function>
+ void applyMultiArg(const MultiArg4<A1, A2, A3, A4> &node,
+              const Function &f, int i1)
+ {
+   f(node.a1_m, node.a2_m, node.a3_m, node.a4_m, i1);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class Function>
+ void applyMultiArg(const MultiArg4<A1, A2, A3, A4> &node,
+              const Function &f, int i1, int i2)
+ {
+   f(node.a1_m, node.a2_m, node.a3_m, node.a4_m, i1, i2);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Function>
+ void applyMultiArg(const MultiArg5<A1, A2, A3, A4, A5> &node,
+              const Function &f, int i1)
+ {
+   f(node.a1_m, node.a2_m, node.a3_m, node.a4_m, node.a5_m, i1);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Function>
+ void applyMultiArg(const MultiArg5<A1, A2, A3, A4, A5> &node,
+              const Function &f, int i1, int i2)
+ {
+   f(node.a1_m, node.a2_m, node.a3_m, node.a4_m, node.a5_m, i1, i2);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Function>
+ void applyMultiArg(const MultiArg6<A1, A2, A3, A4, A5, A6> &node,
+              const Function &f, int i1)
+ {
+   f(node.a1_m, node.a2_m, node.a3_m, node.a4_m, node.a5_m, node.a6_m, i1);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Function>
+ void applyMultiArg(const MultiArg6<A1, A2, A3, A4, A5, A6> &node,
+              const Function &f, int i1, int i2)
+ {
+   f(node.a1_m, node.a2_m, node.a3_m, node.a4_m, node.a5_m, node.a6_m, i1, i2);
+ }
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Function>
  void applyMultiArg(const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &node,
               const Function &f, int i1)
*************** void applyMultiArg(const MultiArg3<A1, A
*** 324,329 ****
--- 495,536 ----
    f(node.a3_m, condition[2]);
  }
  
+ template<class A1, class A2, class A3, class A4, class Function>
+ void applyMultiArg(const MultiArg4<A1, A2, A3, A4> &node,
+              const Function &f,
+              const std::vector<bool> &condition)
+ {
+   f(node.a1_m, condition[0]);
+   f(node.a2_m, condition[1]);
+   f(node.a3_m, condition[2]);
+   f(node.a4_m, condition[3]);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Function>
+ void applyMultiArg(const MultiArg5<A1, A2, A3, A4, A5> &node,
+              const Function &f,
+              const std::vector<bool> &condition)
+ {
+   f(node.a1_m, condition[0]);
+   f(node.a2_m, condition[1]);
+   f(node.a3_m, condition[2]);
+   f(node.a4_m, condition[3]);
+   f(node.a5_m, condition[4]);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Function>
+ void applyMultiArg(const MultiArg6<A1, A2, A3, A4, A5, A6> &node,
+              const Function &f,
+              const std::vector<bool> &condition)
+ {
+   f(node.a1_m, condition[0]);
+   f(node.a2_m, condition[1]);
+   f(node.a3_m, condition[2]);
+   f(node.a4_m, condition[3]);
+   f(node.a5_m, condition[4]);
+   f(node.a6_m, condition[5]);
+ }
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Function>
  void applyMultiArg(const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &node,
               const Function &f,
*************** void applyMultiArgIf(const MultiArg3<A1,
*** 374,379 ****
--- 581,649 ----
      f(node.a3_m);
  }
  
+ template<class A1, class A2, class A3, class A4, class Function>
+ void applyMultiArgIf(const MultiArg4<A1, A2, A3, A4> &node,
+                const Function &f,
+                const std::vector<bool> &condition)
+ {
+   if (condition[0])
+     f(node.a1_m);
+ 
+   if (condition[1])
+     f(node.a2_m);
+ 
+   if (condition[2])
+     f(node.a3_m);
+ 
+   if (condition[3])
+     f(node.a4_m);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class Function>
+ void applyMultiArgIf(const MultiArg5<A1, A2, A3, A4, A5> &node,
+                const Function &f,
+                const std::vector<bool> &condition)
+ {
+   if (condition[0])
+     f(node.a1_m);
+ 
+   if (condition[1])
+     f(node.a2_m);
+ 
+   if (condition[2])
+     f(node.a3_m);
+ 
+   if (condition[3])
+     f(node.a4_m);
+ 
+   if (condition[4])
+     f(node.a5_m);
+ }
+ 
+ template<class A1, class A2, class A3, class A4, class A5, class A6, class 
Function>
+ void applyMultiArgIf(const MultiArg6<A1, A2, A3, A4, A5, A6> &node,
+                const Function &f,
+                const std::vector<bool> &condition)
+ {
+   if (condition[0])
+     f(node.a1_m);
+ 
+   if (condition[1])
+     f(node.a2_m);
+ 
+   if (condition[2])
+     f(node.a3_m);
+ 
+   if (condition[3])
+     f(node.a4_m);
+ 
+   if (condition[4])
+     f(node.a5_m);
+ 
+   if (condition[5])
+     f(node.a6_m);
+ }
+ 
  template<class A1, class A2, class A3, class A4, class A5, class A6, class 
A7, class Function>
  void applyMultiArgIf(const MultiArg7<A1, A2, A3, A4, A5, A6, A7> &node,
                 const Function &f,
*************** void applyMultiArgIf(const MultiArg7<A1,
*** 406,411 ****
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: MultiArg.h,v $   $Author: jxyh $
! // $Revision: 1.4 $   $Date: 2001/03/04 06:47:18 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
--- 676,681 ----
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
  // $RCSfile: MultiArg.h,v $   $Author: jxyh $
! // $Revision: 1.5 $   $Date: 2001/03/11 00:34:29 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
Index: src/Pooma/PETE/AssertEquals.h
===================================================================
RCS file: /usr/local/pooma/repository/r2/src/Pooma/PETE/AssertEquals.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -p -r1.2 -r1.3
*** AssertEquals.h      2000/03/07 13:18:06     1.2
--- AssertEquals.h      2001/03/19 22:23:48     1.3
*************** struct Combine2<int, int, Op, AssertEqua
*** 79,86 ****
  {
    typedef int Type_t;
    inline static
!   Type_t combine(const int &a, const int &b,
!                const Op &, const AssertEquals &ae)
    {
      int ret = a;
      if ((a != ae.ignore_m) && (b != ae.ignore_m))
--- 79,85 ----
  {
    typedef int Type_t;
    inline static
!   Type_t combine(const int &a, const int &b, const AssertEquals &ae)
    {
      int ret = a;
      if ((a != ae.ignore_m) && (b != ae.ignore_m))
*************** struct Combine2<int, int, Op, AssertEqua
*** 101,107 ****
  
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
! // $RCSfile: AssertEquals.h,v $   $Author: swhaney $
! // $Revision: 1.2 $   $Date: 2000/03/07 13:18:06 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo
--- 100,106 ----
  
  // ACL:rcsinfo
  // ----------------------------------------------------------------------
! // $RCSfile: AssertEquals.h,v $   $Author: jxyh $
! // $Revision: 1.3 $   $Date: 2001/03/19 22:23:48 $
  // ----------------------------------------------------------------------
  // ACL:rcsinfo

reply via email to

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