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