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 #ifndef ZORBA_FUNCTIONS_FUNCTION_CONSTS
18 #define ZORBA_FUNCTIONS_FUNCTION_CONSTS
19 
20 #include <zorba/config.h>
21 
22 
23 namespace zorba
24 {
25 
26 class FunctionConsts
27 {
28 
29 public:
30 
31 typedef enum
32 {
33   FN_UNKNOWN,
34 
35   FN_UNORDERED_1,
36 
37   FN_APPLY_1,
38 
39   FN_DATA_0,
40 
41   FN_HEAD_1,
42   FN_TAIL_1,
43 
44   FN_ZORBA_EVAL_1,
45   FN_ZORBA_EVAL_N_1,
46   FN_ZORBA_EVAL_U_1,
47   FN_ZORBA_EVAL_S_1,
48 
49   FN_ZORBA_INVOKE_N,
50   FN_ZORBA_INVOKE_N_N,
51   FN_ZORBA_INVOKE_U_N,
52   FN_ZORBA_INVOKE_S_N,
53 
54   FN_ZORBA_XQDDF_PROBE_INDEX_POINT_VALUE_N,
55   FN_ZORBA_XQDDF_PROBE_INDEX_POINT_VALUE_SKIP_N,
56   FN_ZORBA_XQDDF_PROBE_INDEX_POINT_GENERAL_N,
57   FN_ZORBA_XQDDF_PROBE_INDEX_RANGE_VALUE_N,
58   FN_ZORBA_XQDDF_PROBE_INDEX_RANGE_VALUE_SKIP_N,
59   FN_ZORBA_XQDDF_PROBE_INDEX_RANGE_GENERAL_N,
60   OP_CREATE_INTERNAL_INDEX_2,
61   FN_ZORBA_XQDDF_CREATE_INDEX_1,
62   FN_ZORBA_XQDDF_DELETE_INDEX_1,
63   FN_ZORBA_XQDDF_REFRESH_INDEX_1,
64   OP_VALUE_INDEX_ENTRY_BUILDER_N,
65   OP_GENERAL_INDEX_ENTRY_BUILDER_N,
66 
67   FN_EXACTLY_ONE_1,
68   FN_MAX_1,
69   FN_MAX_2,
70   FN_MIN_1,
71   FN_MIN_2,
72 
73   FN_BOOLEAN_1,
74   FN_NOT_1,
75   FN_FALSE_0,
76   FN_TRUE_0,
77 
78   FN_NAME_0,
79   FN_NAME_1,
80 
81   OP_EXACTLY_ONE_NORAISE_1,
82 
83   OP_UNION_2,
84   OP_INTERSECT_2,
85   OP_EXCEPT_2,
86 
87   OP_EQUAL_2,
88   OP_NOT_EQUAL_2,
89   OP_LESS_EQUAL_2,
90   OP_GREATER_EQUAL_2,
91   OP_LESS_2,
92   OP_GREATER_2,
93 
94   OP_ATOMIC_VALUES_EQUIVALENT_2,
95 
96   OP_VALUE_EQUAL_2,
97   OP_VALUE_EQUAL_DOUBLE_2,
98   OP_VALUE_EQUAL_FLOAT_2,
99   OP_VALUE_EQUAL_DECIMAL_2,
100   OP_VALUE_EQUAL_INTEGER_2,
101   OP_VALUE_EQUAL_STRING_2,
102   OP_VALUE_NOT_EQUAL_2,
103   OP_VALUE_NOT_EQUAL_DOUBLE_2,
104   OP_VALUE_NOT_EQUAL_FLOAT_2,
105   OP_VALUE_NOT_EQUAL_DECIMAL_2,
106   OP_VALUE_NOT_EQUAL_INTEGER_2,
107   OP_VALUE_NOT_EQUAL_STRING_2,
108   OP_VALUE_LESS_EQUAL_2,
109   OP_VALUE_LESS_EQUAL_DOUBLE_2,
110   OP_VALUE_LESS_EQUAL_FLOAT_2,
111   OP_VALUE_LESS_EQUAL_DECIMAL_2,
112   OP_VALUE_LESS_EQUAL_INTEGER_2,
113   OP_VALUE_LESS_EQUAL_STRING_2,
114   OP_VALUE_LESS_2,
115   OP_VALUE_LESS_DOUBLE_2,
116   OP_VALUE_LESS_FLOAT_2,
117   OP_VALUE_LESS_DECIMAL_2,
118   OP_VALUE_LESS_INTEGER_2,
119   OP_VALUE_LESS_STRING_2,
120   OP_VALUE_GREATER_EQUAL_2,
121   OP_VALUE_GREATER_EQUAL_DOUBLE_2,
122   OP_VALUE_GREATER_EQUAL_FLOAT_2,
123   OP_VALUE_GREATER_EQUAL_DECIMAL_2,
124   OP_VALUE_GREATER_EQUAL_INTEGER_2,
125   OP_VALUE_GREATER_EQUAL_STRING_2,
126   OP_VALUE_GREATER_2,
127   OP_VALUE_GREATER_DOUBLE_2,
128   OP_VALUE_GREATER_FLOAT_2,
129   OP_VALUE_GREATER_DECIMAL_2,
130   OP_VALUE_GREATER_INTEGER_2,
131   OP_VALUE_GREATER_STRING_2,
132 
133   OP_ADD_2,
134   OP_SUBTRACT_2,
135   OP_MULTIPLY_2,
136   OP_DIVIDE_2,
137   OP_INTEGER_DIVIDE_2,
138   OP_MOD_2,
139 
140   OP_NUMERIC_ADD_2,
141   OP_NUMERIC_ADD_DOUBLE_2,
142   OP_NUMERIC_ADD_FLOAT_2,
143   OP_NUMERIC_ADD_DECIMAL_2,
144   OP_NUMERIC_ADD_INTEGER_2,
145   OP_NUMERIC_SUBTRACT_2,
146   OP_NUMERIC_SUBTRACT_DOUBLE_2,
147   OP_NUMERIC_SUBTRACT_FLOAT_2,
148   OP_NUMERIC_SUBTRACT_DECIMAL_2,
149   OP_NUMERIC_SUBTRACT_INTEGER_2,
150   OP_NUMERIC_MULTIPLY_2,
151   OP_NUMERIC_MULTIPLY_DOUBLE_2,
152   OP_NUMERIC_MULTIPLY_FLOAT_2,
153   OP_NUMERIC_MULTIPLY_DECIMAL_2,
154   OP_NUMERIC_MULTIPLY_INTEGER_2,
155   OP_NUMERIC_DIVIDE_2,
156   OP_NUMERIC_DIVIDE_DOUBLE_2,
157   OP_NUMERIC_DIVIDE_FLOAT_2,
158   OP_NUMERIC_DIVIDE_DECIMAL_2,
159   OP_NUMERIC_DIVIDE_INTEGER_2,
160   OP_NUMERIC_INTEGER_DIVIDE_2,
161   OP_NUMERIC_MOD_2,
162 
163   OP_UNARY_PLUS_1,
164   OP_UNARY_MINUS_1,
165   OP_DOUBLE_UNARY_PLUS_1,
166   OP_DOUBLE_UNARY_MINUS_1,
167 
168   FN_DATETIME_CONTRUCTOR,
169 
170   OP_ADD_YM_DURATIONS,
171   OP_SUBTRACT_YM_DURATIONS,
172   OP_MULTIPLY_YM_DURATION,
173   OP_DIVIDE_YM_DURATION,
174   OP_DIVIDE_YM_DURATIONS,
175   OP_ADD_DT_DURATIONS,
176   OP_SUBTRACT_DT_DURATIONS,
177   OP_MULTIPLY_DT_DURATION,
178   OP_DIVIDE_DT_DURATION,
179   OP_DIVIDE_DT_DURATIONS,
180 
181   OP_SUBTRACT_DATETIMES,
182   OP_SUBTRACT_DATES,
183   OP_SUBTRACT_TIMES,
184 
185   OP_ADD_YMD_TO_DT,
186   OP_ADD_DTD_TO_DT,
187   OP_SUBTRACT_YMD_FROM_DT,
188   OP_SUBTRACT_DTD_FROM_DT,
189   OP_ADD_YMD_TO_D,
190   OP_ADD_DTD_TO_D,
191   OP_SUBTRACT_YMD_FROM_D,
192   OP_SUBTRACT_DTD_FROM_D,
193   OP_ADD_DTD_TO_T,
194   OP_SUBTRACT_DTD_FROM_T,
195 
196   OP_ADJUST_DT_TO_TZ_1,
197   OP_ADJUST_DT_TO_TZ_2,
198   OP_ADJUST_D_TO_TZ_1,
199   OP_ADJUST_D_TO_TZ_2,
200   OP_ADJUST_T_TO_TZ_1,
201   OP_ADJUST_T_TO_TZ_2,
202 
203   OP_FORMAT_DT_4,
204   OP_FORMAT_DT_2,
205   OP_FORMAT_D_4,
206   OP_FORMAT_D_2,
207   OP_FORMAT_T_4,
208   OP_FORMAT_T_2,
209 
210   OP_AND_N,
211   OP_OR_N,
212 
213   OP_VAR_GET_1,
214 
215   OP_EITHER_NODES_OR_ATOMICS_1,
216   OP_DISTINCT_NODES_1,
217   OP_CHECK_DISTINCT_NODES_1,
218   OP_DISTINCT_NODES_OR_ATOMICS_1,
219   OP_SORT_NODES_ASC_1,
220   OP_SORT_NODES_ASC_OR_ATOMICS_1,
221   OP_SORT_NODES_DESC_1,
222   OP_SORT_NODES_DESC_OR_ATOMICS_1,
223   OP_SORT_DISTINCT_NODES_ASC_1,
224   OP_SORT_DISTINCT_NODES_ASC_OR_ATOMICS_1,
225   OP_SORT_DISTINCT_NODES_DESC_1,
226   OP_SORT_DISTINCT_NODES_DESC_OR_ATOMICS_1,
227 
228   OP_ENCLOSED_1,
229 
230   OP_HOIST_1,
231   OP_UNHOIST_1,
232 
233 #ifdef ZORBA_WITH_JSON
234   JN_OBJECT_1,
235 #endif
236 
237 #ifndef ZORBA_NO_FULL_TEXT
238   FULL_TEXT_CURRENT_COMPARE_OPTIONS_0,
239   FULL_TEXT_TOKENIZER_PROPERTIES_1,
240   FULL_TEXT_TOKENIZER_PROPERTIES_0,
241   FULL_TEXT_TOKENIZE_NODE_2,
242   FULL_TEXT_TOKENIZE_NODE_1,
243   FULL_TEXT_TOKENIZE_NODES_3,
244   FULL_TEXT_TOKENIZE_NODES_2,
245 #endif /* ZORBA_NO_FULL_TEXT */
246 
247 #include "functions/function_enum.h"
248 
249   FN_MAX_FUNC
250 
251 } FunctionKind;
252 
253 
254 typedef enum
255 {
256   NO = 0,
257   YES,
258   PRESERVE
259 } AnnotationValue;
260 
261 
262 typedef enum
263 {
264   DoDistinct    = 1,   // Used by fn:zore-or-one and fn:exaclty-one
265   SkipCodeGen   = 2,
266   isDeterministic = 4,
267   isPrivate = 8,
268   isBuiltin = 16,
269   isUDF = 32,
270   propagatesInputNodes = 64,
271   mustCopyInputNodes = 128,
272   AccessesDynCtx = 256
273 } AnnotationFlags;
274 
275 };
276 
277 }
278 
279 #endif
280 
281 /*
282  * Local variables:
283  * mode: c++
284  * End:
285  */
286 /* vim:set et sw=2 ts=2: */
287