OPAL (Object Oriented Parallel Accelerator Library)  2021.1.99
OPAL
AssignTags.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 /***************************************************************************
3  *
4  * The IPPL Framework
5  *
6  *
7  * Visit http://people.web.psi.ch/adelmann/ for more details
8  *
9  ***************************************************************************/
10 
11 #ifndef ASSIGN_TAGS_H
12 #define ASSIGN_TAGS_H
13 
14 // include files
15 #include "Index/NDIndex.h"
16 
17 // Forward declarations:
18 template<class T, unsigned int D> class BareField;
19 
20 //
21 // A functor that knows an id.
22 //
24 {
25  int fID;
26  SameFieldID(int id) : fID(id) {}
27  typedef bool PETE_Return_t;
28 };
29 
30 
32 {
33  typedef bool PETE_Return_t;
34 };
35 
36 
38 {
39  int I;
40  EvalFunctor_1(int i) : I(i) {}
41 };
42 
44 {
46 };
47 
49 {
50  int I, J;
51  EvalFunctor_2(int i, int j) : I(i), J(j) {}
52 };
53 
55 {
56  UnitEvalFunctor_2(int i, int j) : EvalFunctor_2(i,j) {}
57 };
58 
60 {
61  int I, J, K;
62  EvalFunctor_3(int i, int j, int k) : I(i), J(j), K(k) {}
63 };
64 
66 {
67  UnitEvalFunctor_3(int i, int j, int k) : EvalFunctor_3(i,j,k) {}
68 };
69 
70 //
71 // A tag for beginning an LField
72 //
74 {
75  typedef int PETE_Return_t;
76 };
77 
78 //
79 // A tag for going on to next LField
80 //
81 struct NextLField
82 {
83  typedef int PETE_Return_t;
84 };
85 
86 
88 {
89  unsigned D;
90  StepFunctor(unsigned d) : D(d) {}
91  typedef int PETE_Return_t;
92 };
93 
95 {
96  unsigned D;
97  RewindFunctor(unsigned d) : D(d) {}
98  typedef int PETE_Return_t;
99 };
100 
101 
102 //
103 // Do the iterators have unit stride in the inner loop?
104 //
105 
107 {
108  typedef bool PETE_Return_t;
109 };
110 
111 // Do we need to fill the guard cells?
112 
113 template<unsigned D, class T1>
115 {
117 //tjw added 3/3/99:
119 //tjw added 3/3/99.
120  typedef int PETE_Return_t;
122 };
123 
124 template<unsigned D, class T1>
127 {
128  return FillGCIfNecessaryTag<D,T1>(bf);
129 }
130 
131 //tjw added 3/3/99:
132 
133 // This weird tag is needed, because writing a no-argument FillGCIFNEcessary()
134 // function below didn't work for some reason, at least with some compilers
135 // like the pre-7.3 SGI compiler and CodeWarrior Pro4. Once the global
136 // function invocation syntax FillGCIfNecessary<T,D>() is supported by all our
137 // compilers (it's not there yet in the non-beta SGI compiler), should be able
138 // to eliminate this FGCINTag business. --tjw 3/3/1999
139 template<unsigned D, class T1>
140 struct FGCINTag
141 {
142 };
143 
144 template<unsigned D, class T1>
147 {
149 }
150 
151 //tjw added 3/3/99.
152 
153 
154 #endif // ASSIGN_TAGS_H
155 
156 /***************************************************************************
157  * $RCSfile: AssignTags.h,v $ $Author: adelmann $
158  * $Revision: 1.1.1.1 $ $Date: 2003/01/23 07:40:26 $
159  * IPPL_VERSION_ID: $Id: AssignTags.h,v 1.1.1.1 2003/01/23 07:40:26 adelmann Exp $
160  ***************************************************************************/
FillGCIfNecessaryTag< D, T1 > FillGCIfNecessary(const BareField< T1, D > &bf)
Definition: AssignTags.h:126
bool PETE_Return_t
Definition: AssignTags.h:27
SameFieldID(int id)
Definition: AssignTags.h:26
bool PETE_Return_t
Definition: AssignTags.h:33
EvalFunctor_1(int i)
Definition: AssignTags.h:40
UnitEvalFunctor_1(int i)
Definition: AssignTags.h:45
EvalFunctor_2(int i, int j)
Definition: AssignTags.h:51
UnitEvalFunctor_2(int i, int j)
Definition: AssignTags.h:56
EvalFunctor_3(int i, int j, int k)
Definition: AssignTags.h:62
UnitEvalFunctor_3(int i, int j, int k)
Definition: AssignTags.h:67
int PETE_Return_t
Definition: AssignTags.h:75
int PETE_Return_t
Definition: AssignTags.h:83
unsigned D
Definition: AssignTags.h:89
int PETE_Return_t
Definition: AssignTags.h:91
StepFunctor(unsigned d)
Definition: AssignTags.h:90
int PETE_Return_t
Definition: AssignTags.h:98
unsigned D
Definition: AssignTags.h:96
RewindFunctor(unsigned d)
Definition: AssignTags.h:97
bool PETE_Return_t
Definition: AssignTags.h:108
FillGCIfNecessaryTag(const BareField< T1, D > &bf)
Definition: AssignTags.h:116
const BareField< T1, D > * bf_m
Definition: AssignTags.h:121