OPAL (Object Oriented Parallel Accelerator Library)  2.2.0
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 #ifdef IPPL_PURIFY
34  IsCompressed() {}
35  IsCompressed(const IsCompressed &) {}
36  IsCompressed& operator=(const IsCompressed &) { return *this; }
37 #endif
38  typedef bool PETE_Return_t;
39 };
40 
41 
43 {
44  int I;
45  EvalFunctor_1(int i) : I(i) {}
46 };
47 
49 {
51 };
52 
54 {
55  int I, J;
56  EvalFunctor_2(int i, int j) : I(i), J(j) {}
57 };
58 
60 {
61  UnitEvalFunctor_2(int i, int j) : EvalFunctor_2(i,j) {}
62 };
63 
65 {
66  int I, J, K;
67  EvalFunctor_3(int i, int j, int k) : I(i), J(j), K(k) {}
68 };
69 
71 {
72  UnitEvalFunctor_3(int i, int j, int k) : EvalFunctor_3(i,j,k) {}
73 };
74 
75 //
76 // A tag for beginning an LField
77 //
79 {
80 #ifdef IPPL_PURIFY
81  BeginLField() {}
82  BeginLField(const BeginLField &) {}
83  BeginLField& operator=(const BeginLField &) { return *this; }
84 #endif
85  typedef int PETE_Return_t;
86 };
87 
88 //
89 // A tag for going on to next LField
90 //
91 struct NextLField
92 {
93 #ifdef IPPL_PURIFY
94  NextLField() {}
95  NextLField(const NextLField &) {}
96  NextLField& operator=(const NextLField &) { return *this; }
97 #endif
98  typedef int PETE_Return_t;
99 };
100 
101 
103 {
104  unsigned D;
105  StepFunctor(unsigned d) : D(d) {}
106  typedef int PETE_Return_t;
107 };
108 
110 {
111  unsigned D;
112  RewindFunctor(unsigned d) : D(d) {}
113  typedef int PETE_Return_t;
114 };
115 
116 
117 //
118 // Do the iterators have unit stride in the inner loop?
119 //
120 
122 {
123 #ifdef IPPL_PURIFY
124  HasUnitStride() {}
125  HasUnitStride(const HasUnitStride &) {}
126  HasUnitStride& operator=(const HasUnitStride &) { return *this; }
127 #endif
128  typedef bool PETE_Return_t;
129 };
130 
131 // Do we need to fill the guard cells?
132 
133 template<unsigned D, class T1>
135 {
137 //tjw added 3/3/99:
139 //tjw added 3/3/99.
140  typedef int PETE_Return_t;
142 };
143 
144 template<unsigned D, class T1>
147 {
148  return FillGCIfNecessaryTag<D,T1>(bf);
149 }
150 
151 //tjw added 3/3/99:
152 
153 // This weird tag is needed, because writing a no-argument FillGCIFNEcessary()
154 // function below didn't work for some reason, at least with some compilers
155 // like the pre-7.3 SGI compiler and CodeWarrior Pro4. Once the global
156 // function invocation syntax FillGCIfNecessary<T,D>() is supported by all our
157 // compilers (it's not there yet in the non-beta SGI compiler), should be able
158 // to eliminate this FGCINTag business. --tjw 3/3/1999
159 template<unsigned D, class T1>
160 struct FGCINTag
161 {
162 };
163 
164 template<unsigned D, class T1>
167 {
169 }
170 
171 //tjw added 3/3/99.
172 
173 
174 #endif // ASSIGN_TAGS_H
175 
176 /***************************************************************************
177  * $RCSfile: AssignTags.h,v $ $Author: adelmann $
178  * $Revision: 1.1.1.1 $ $Date: 2003/01/23 07:40:26 $
179  * IPPL_VERSION_ID: $Id: AssignTags.h,v 1.1.1.1 2003/01/23 07:40:26 adelmann Exp $
180  ***************************************************************************/
UnitEvalFunctor_2(int i, int j)
Definition: AssignTags.h:61
RewindFunctor(unsigned d)
Definition: AssignTags.h:112
UnitEvalFunctor_3(int i, int j, int k)
Definition: AssignTags.h:72
SameFieldID(int id)
Definition: AssignTags.h:26
const BareField< T1, D > * bf_m
Definition: AssignTags.h:141
int PETE_Return_t
Definition: AssignTags.h:98
int PETE_Return_t
Definition: AssignTags.h:85
bool PETE_Return_t
Definition: AssignTags.h:27
EvalFunctor_3(int i, int j, int k)
Definition: AssignTags.h:67
bool PETE_Return_t
Definition: AssignTags.h:128
EvalFunctor_1(int i)
Definition: AssignTags.h:45
Definition: FFT.h:30
unsigned D
Definition: AssignTags.h:111
FillGCIfNecessaryTag< D, T1 > FillGCIfNecessary(const BareField< T1, D > &bf)
Definition: AssignTags.h:146
unsigned D
Definition: AssignTags.h:104
EvalFunctor_2(int i, int j)
Definition: AssignTags.h:56
UnitEvalFunctor_1(int i)
Definition: AssignTags.h:50
int PETE_Return_t
Definition: AssignTags.h:106
bool PETE_Return_t
Definition: AssignTags.h:38
StepFunctor(unsigned d)
Definition: AssignTags.h:105
FillGCIfNecessaryTag(const BareField< T1, D > &bf)
Definition: AssignTags.h:136