1 /*
2  * Copyright 2006-2008 The FLWOR Foundation.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #pragma once
17 
18 PLAN_ITER_VISITOR (FnBooleanIterator);
19 
20 PLAN_ITER_VISITOR (OrIterator);
21 
22 PLAN_ITER_VISITOR (AndIterator);
23 
24   PLAN_ITER_VISITOR (CompareIterator);
25 
26   PLAN_ITER_VISITOR (AtomicValuesEquivalenceIterator);
27 
28   PLAN_ITER_VISITOR (ElementIterator);
29 
30   PLAN_ITER_VISITOR (AttributeIterator);
31 
32   PLAN_ITER_VISITOR (DocumentIterator);
33 
34 #ifdef ZORBA_WITH_JSON
35   PLAN_ITER_VISITOR (JSONArrayIterator);
36 
37   PLAN_ITER_VISITOR (JSONObjectIterator);
38 
39   PLAN_ITER_VISITOR (JSONDirectObjectIterator);
40 #endif
41 
42   PLAN_ITER_VISITOR (UDFunctionCallIterator);
43 
44   PLAN_ITER_VISITOR (ExtFunctionCallIterator);
45 
46   PLAN_ITER_VISITOR (CommentIterator);
47 
48   PLAN_ITER_VISITOR (PiIterator);
49 
50   PLAN_ITER_VISITOR (SingletonIterator);
51 
52   PLAN_ITER_VISITOR (EmptyIterator);
53 
54   PLAN_ITER_VISITOR (ForVarIterator);
55 
56   PLAN_ITER_VISITOR (LetVarIterator);
57 
58   PLAN_ITER_VISITOR (EnclosedIterator);
59 
60   PLAN_ITER_VISITOR (IfThenElseIterator);
61 
62   PLAN_ITER_VISITOR (TryCatchIterator);
63 
64   PLAN_ITER_VISITOR (NodeDistinctIterator);
65 
66   PLAN_ITER_VISITOR (NodeSortIterator);
67 
68   //PLAN_ITER_VISITOR (PathIterator);
69 
70   PLAN_ITER_VISITOR (SelfAxisIterator);
71 
72   PLAN_ITER_VISITOR (AttributeAxisIterator);
73 
74   PLAN_ITER_VISITOR (ParentAxisIterator);
75 
76   PLAN_ITER_VISITOR (AncestorAxisIterator);
77 
78   PLAN_ITER_VISITOR (AncestorReverseAxisIterator);
79 
80   PLAN_ITER_VISITOR (AncestorSelfAxisIterator);
81 
82   PLAN_ITER_VISITOR (AncestorSelfReverseAxisIterator);
83 
84   PLAN_ITER_VISITOR (RSiblingAxisIterator);
85 
86   PLAN_ITER_VISITOR (LSiblingAxisIterator);
87 
88   PLAN_ITER_VISITOR (LSiblingReverseAxisIterator);
89 
90   PLAN_ITER_VISITOR (ChildAxisIterator);
91 
92   PLAN_ITER_VISITOR (DescendantAxisIterator);
93 
94   PLAN_ITER_VISITOR (DescendantSelfAxisIterator);
95 
96   PLAN_ITER_VISITOR (PrecedingAxisIterator);
97 
98   PLAN_ITER_VISITOR (PrecedingReverseAxisIterator);
99 
100   PLAN_ITER_VISITOR (FollowingAxisIterator);
101 
102   PLAN_ITER_VISITOR (InstanceOfIterator);
103 
104   PLAN_ITER_VISITOR (TreatIterator);
105 
106   PLAN_ITER_VISITOR (EitherNodesOrAtomicsIterator);
107 
108   virtual void beginVisit ( const NumArithIterator<AddOperation>& ) = 0;
109   virtual void beginVisit ( const NumArithIterator<SubtractOperation>& ) = 0;
110   virtual void beginVisit ( const NumArithIterator<MultiplyOperation>& ) = 0;
111   virtual void beginVisit ( const NumArithIterator<DivideOperation>& ) = 0;
112   virtual void beginVisit ( const NumArithIterator<IntegerDivideOperation>& ) = 0;
113   virtual void beginVisit ( const NumArithIterator<ModOperation>& ) = 0;
114   virtual void endVisit ( const NumArithIterator<AddOperation>& ) = 0;
115   virtual void endVisit ( const NumArithIterator<SubtractOperation>& ) = 0;
116   virtual void endVisit ( const NumArithIterator<MultiplyOperation>& ) = 0;
117   virtual void endVisit ( const NumArithIterator<DivideOperation>& ) = 0;
118   virtual void endVisit ( const NumArithIterator<IntegerDivideOperation>& ) = 0;
119   virtual void endVisit ( const NumArithIterator<ModOperation>& ) = 0;
120 
121   virtual void beginVisit ( const GenericArithIterator<AddOperation>& ) = 0;
122   virtual void beginVisit ( const GenericArithIterator<SubtractOperation>& ) = 0;
123   virtual void beginVisit ( const GenericArithIterator<MultiplyOperation>& ) = 0;
124   virtual void beginVisit ( const GenericArithIterator<DivideOperation>& ) = 0;
125   virtual void beginVisit ( const GenericArithIterator<IntegerDivideOperation>& ) = 0;
126   virtual void beginVisit ( const GenericArithIterator<ModOperation>& ) = 0;
127   virtual void endVisit ( const GenericArithIterator<AddOperation>& ) = 0;
128   virtual void endVisit ( const GenericArithIterator<SubtractOperation>& ) = 0;
129   virtual void endVisit ( const GenericArithIterator<MultiplyOperation>& ) = 0;
130   virtual void endVisit ( const GenericArithIterator<DivideOperation>& ) = 0;
131   virtual void endVisit ( const GenericArithIterator<IntegerDivideOperation>& ) = 0;
132   virtual void endVisit ( const GenericArithIterator<ModOperation>& ) = 0;
133 
134   virtual void beginVisit ( const SpecificNumArithIterator<AddOperation, store::XS_DECIMAL>& ) = 0;
135   virtual void beginVisit ( const SpecificNumArithIterator<AddOperation, store::XS_INTEGER>& ) = 0;
136   virtual void beginVisit ( const SpecificNumArithIterator<AddOperation, store::XS_FLOAT>& ) = 0;
137   virtual void beginVisit ( const SpecificNumArithIterator<AddOperation, store::XS_DOUBLE>& ) = 0;
138   virtual void beginVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_DECIMAL>& ) = 0;
139   virtual void beginVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_INTEGER>& ) = 0;
140   virtual void beginVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_FLOAT>& ) = 0;
141   virtual void beginVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_DOUBLE>& ) = 0;
142   virtual void beginVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_DECIMAL>& ) = 0;
143   virtual void beginVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_INTEGER>& ) = 0;
144   virtual void beginVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_FLOAT>& ) = 0;
145   virtual void beginVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_DOUBLE>& ) = 0;
146   virtual void beginVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_DECIMAL>& ) = 0;
147   virtual void beginVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_INTEGER>& ) = 0;
148   virtual void beginVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_FLOAT>& ) = 0;
149   virtual void beginVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_DOUBLE>& ) = 0;
150   virtual void beginVisit ( const SpecificNumArithIterator<ModOperation, store::XS_DECIMAL>& ) = 0;
151   virtual void beginVisit ( const SpecificNumArithIterator<ModOperation, store::XS_INTEGER>& ) = 0;
152   virtual void beginVisit ( const SpecificNumArithIterator<ModOperation, store::XS_FLOAT>& ) = 0;
153   virtual void beginVisit ( const SpecificNumArithIterator<ModOperation, store::XS_DOUBLE>& ) = 0;
154   virtual void endVisit ( const SpecificNumArithIterator<AddOperation, store::XS_DECIMAL>& ) = 0;
155   virtual void endVisit ( const SpecificNumArithIterator<AddOperation, store::XS_INTEGER>& ) = 0;
156   virtual void endVisit ( const SpecificNumArithIterator<AddOperation, store::XS_FLOAT>& ) = 0;
157   virtual void endVisit ( const SpecificNumArithIterator<AddOperation, store::XS_DOUBLE>& ) = 0;
158   virtual void endVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_DECIMAL>& ) = 0;
159   virtual void endVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_INTEGER>& ) = 0;
160   virtual void endVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_FLOAT>& ) = 0;
161   virtual void endVisit ( const SpecificNumArithIterator<SubtractOperation, store::XS_DOUBLE>& ) = 0;
162   virtual void endVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_DECIMAL>& ) = 0;
163   virtual void endVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_INTEGER>& ) = 0;
164   virtual void endVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_FLOAT>& ) = 0;
165   virtual void endVisit ( const SpecificNumArithIterator<MultiplyOperation, store::XS_DOUBLE>& ) = 0;
166   virtual void endVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_DECIMAL>& ) = 0;
167   virtual void endVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_INTEGER>& ) = 0;
168   virtual void endVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_FLOAT>& ) = 0;
169   virtual void endVisit ( const SpecificNumArithIterator<DivideOperation, store::XS_DOUBLE>& ) = 0;
170   virtual void endVisit ( const SpecificNumArithIterator<ModOperation, store::XS_DECIMAL>& ) = 0;
171   virtual void endVisit ( const SpecificNumArithIterator<ModOperation, store::XS_INTEGER>& ) = 0;
172   virtual void endVisit ( const SpecificNumArithIterator<ModOperation, store::XS_FLOAT>& ) = 0;
173   virtual void endVisit ( const SpecificNumArithIterator<ModOperation, store::XS_DOUBLE>& ) = 0;
174 
175   virtual void beginVisit ( const TypedValueCompareIterator<store::XS_DOUBLE>& ) = 0;
176   virtual void endVisit ( const TypedValueCompareIterator<store::XS_DOUBLE>& ) = 0;
177   virtual void beginVisit ( const TypedValueCompareIterator<store::XS_FLOAT>& ) = 0;
178   virtual void endVisit ( const TypedValueCompareIterator<store::XS_FLOAT>& ) = 0;
179   virtual void beginVisit ( const TypedValueCompareIterator<store::XS_DECIMAL>& ) = 0;
180   virtual void endVisit ( const TypedValueCompareIterator<store::XS_DECIMAL>& ) = 0;
181   virtual void beginVisit ( const TypedValueCompareIterator<store::XS_INTEGER>& ) = 0;
182   virtual void endVisit ( const TypedValueCompareIterator<store::XS_INTEGER>& ) = 0;
183   virtual void beginVisit ( const TypedValueCompareIterator<store::XS_STRING>& ) = 0;
184   virtual void endVisit ( const TypedValueCompareIterator<store::XS_STRING>& ) = 0;
185 
186   PLAN_ITER_VISITOR (OpNumericUnaryIterator);
187 
188   PLAN_ITER_VISITOR (OpDoubleUnaryIterator);
189 
190   PLAN_ITER_VISITOR (FnMinMaxIterator);
191 
192   PLAN_ITER_VISITOR (TextIterator);
193 
194   PLAN_ITER_VISITOR (flwor::FLWORIterator);
195 
196   PLAN_ITER_VISITOR (flwor::TupleStreamIterator);
197 
198   PLAN_ITER_VISITOR (flwor::TupleSourceIterator);
199 
200   PLAN_ITER_VISITOR (flwor::ForIterator);
201 
202   PLAN_ITER_VISITOR (flwor::OuterForIterator);
203 
204   PLAN_ITER_VISITOR (flwor::LetIterator);
205 
206   PLAN_ITER_VISITOR (flwor::GroupByIterator);
207 
208   PLAN_ITER_VISITOR (flwor::OrderByIterator);
209 
210   PLAN_ITER_VISITOR (flwor::WhereIterator);
211 
212   PLAN_ITER_VISITOR (flwor::CountIterator);
213 
214   PLAN_ITER_VISITOR (flwor::WindowIterator);
215 
216   virtual void beginVisitFlworWhereClause(const PlanIterator&) = 0;
217 
218   virtual void endVisitFlworWhereClause(const PlanIterator&) = 0;
219 
220   virtual void beginVisitFlworLetVariable(
221         bool,
222         const zstring&,
223         const std::vector<PlanIter_t>&) = 0;
224 
225   virtual void endVisitFlworLetVariable() = 0;
226 
227   virtual void beginVisitFlworForVariable(
228        const zstring&,
229        const std::vector<PlanIter_t>&,
230        const std::vector<PlanIter_t>&) = 0;
231 
232   virtual void endVisitFlworForVariable() = 0;
233 
234   virtual void beginVisitMaterializeClause() = 0;
235 
236   virtual void endVisitMaterializeClause() = 0;
237 
238   virtual void beginVisitMaterializeVariable(
239       bool isForVar,
240       PlanIter_t inputVar,
241       const std::vector<PlanIter_t>& varRefs) = 0;
242 
243   virtual void endVisitMaterializeVariable() = 0;
244 
245   virtual void beginVisitGroupByClause() = 0;
246 
247   virtual void endVisitGroupByClause() = 0;
248 
249   virtual void beginVisitGroupBySpec() = 0;
250 
251   virtual void endVisitGroupBySpec() = 0;
252 
253   virtual void beginVisitGroupByOuter() = 0;
254 
255   virtual void endVisitGroupByOuter() = 0;
256 
257   virtual void beginVisitGroupVariable(const std::vector<ForVarIter_t>&) = 0;
258 
259   virtual void endVisitGroupVariable() = 0;
260 
261   virtual void beginVisitNonGroupVariable(const std::vector<LetVarIter_t>&) = 0;
262 
263   virtual void endVisitNonGroupVariable() = 0;
264 
265   virtual void beginVisitOrderBySpec(const PlanIterator&) = 0;
266 
267   virtual void endVisitOrderBySpec(const PlanIterator&) = 0;
268 
269   virtual void beginVisitOrderByForVariable(
270         ForVarIter_t inputVar,
271         const std::vector<PlanIter_t>& varRefs) = 0;
272 
273   virtual void endVisitOrderByForVariable() = 0;
274 
275   virtual void beginVisitOrderByLetVariable(
276         LetVarIter_t inputVar,
277         const std::vector<PlanIter_t>& varRefs) = 0;
278 
279   virtual void endVisitOrderByLetVariable() = 0;
280 
281   virtual void beginVisitWindowVariable(
282         const std::string& varName,
283         const std::vector<LetVarIter_t>& varRefs) = 0;
284 
285   virtual void endVisitWindowVariable() = 0;
286 
287   virtual void beginVisitWinCondVariable(
288         const zstring& varName,
289         const std::vector<PlanIter_t>& varRefs) = 0;
290 
291   virtual void endVisitWinCondVariable() = 0;
292 
293   virtual void beginVisitFlworReturn(const PlanIterator&) = 0;
294 
295   virtual void endVisitFlworReturn(const PlanIterator&) = 0;
296 
297   PLAN_ITER_VISITOR (CastIterator);
298 
299   PLAN_ITER_VISITOR (NameCastIterator);
300 
301   PLAN_ITER_VISITOR (PromoteIterator);
302 
303   PLAN_ITER_VISITOR (CastableIterator);
304 
305   PLAN_ITER_VISITOR (FnDateTimeConstructorIterator);
306 
307   PLAN_ITER_VISITOR (CtxVarIterator);
308 
309   PLAN_ITER_VISITOR (CtxVarDeclareIterator);
310 
311   PLAN_ITER_VISITOR (CtxVarAssignIterator);
312 
313   PLAN_ITER_VISITOR (CtxVarIsSetIterator);
314 
315   PLAN_ITER_VISITOR(FnAdjustToTimeZoneIterator_1);
316 
317   PLAN_ITER_VISITOR(FnAdjustToTimeZoneIterator_2);
318 
319   PLAN_ITER_VISITOR(FnFormatDateTimeIterator);
320 
321   PLAN_ITER_VISITOR(InsertIterator);
322 
323   PLAN_ITER_VISITOR(DeleteIterator);
324 
325   PLAN_ITER_VISITOR(ReplaceIterator);
326 
327   PLAN_ITER_VISITOR(RenameIterator);
328 
329   PLAN_ITER_VISITOR(TransformIterator);
330 
331   PLAN_ITER_VISITOR(ApplyIterator);
332 
333   PLAN_ITER_VISITOR(FTContainsIterator);
334 
335 #ifdef ZORBA_WITH_DEBUGGER
336   PLAN_ITER_VISITOR ( DebuggerSingletonIterator );
337 #endif
338 
339   PLAN_ITER_VISITOR(HoistIterator);
340   PLAN_ITER_VISITOR(UnhoistIterator);
341 
342   PLAN_ITER_VISITOR(ProbeIndexPointValueIterator);
343   PLAN_ITER_VISITOR(ProbeIndexPointGeneralIterator);
344   PLAN_ITER_VISITOR(ProbeIndexRangeValueIterator);
345   PLAN_ITER_VISITOR(ProbeIndexRangeGeneralIterator);
346   PLAN_ITER_VISITOR(ValueIndexEntryBuilderIterator);
347   PLAN_ITER_VISITOR(GeneralIndexEntryBuilderIterator);
348   PLAN_ITER_VISITOR(RefreshIndexIterator);
349   PLAN_ITER_VISITOR(CreateIndexIterator);
350   PLAN_ITER_VISITOR(CreateInternalIndexIterator);
351   PLAN_ITER_VISITOR(DeleteIndexIterator);
352 
353   PLAN_ITER_VISITOR(DynamicFnCallIterator);
354 
355   PLAN_ITER_VISITOR(EvalIterator);
356 
357   PLAN_ITER_VISITOR(MaterializeIterator);
358 
359 PLAN_ITER_VISITOR(SequentialIterator);
360 PLAN_ITER_VISITOR(LoopIterator);
361 PLAN_ITER_VISITOR(ExitIterator);
362 PLAN_ITER_VISITOR(ExitCatcherIterator);
363 PLAN_ITER_VISITOR(FlowCtlIterator);
364 
365 PLAN_ITER_VISITOR(CountCollectionIterator);
366 
367 /* vim:set et sw=2 ts=2: */
368