| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef FORMULA_COMPILER_HRC |
| #define FORMULA_COMPILER_HRC |
| |
| /* Central definition of OpCodes for spreadsheet functions */ |
| |
| /*** Special commands ***/ |
| #define SC_OPCODE_PUSH 0 /* internal commands */ |
| #define SC_OPCODE_CALL 1 |
| #define SC_OPCODE_STOP 2 |
| #define SC_OPCODE_EXTERNAL 3 |
| #define SC_OPCODE_NAME 4 |
| #define SC_OPCODE_EXTERNAL_REF 5 |
| #define SC_OPCODE_IF 6 /* jump commands */ |
| #define SC_OPCODE_CHOSE 7 |
| #define SC_OPCODE_OPEN 8 /* parentheses and separators */ |
| #define SC_OPCODE_CLOSE 9 |
| #define SC_OPCODE_SEP 10 |
| #define SC_OPCODE_MISSING 11 /* special OpCodes */ |
| #define SC_OPCODE_BAD 12 |
| #define SC_OPCODE_SPACES 13 |
| #define SC_OPCODE_MAT_REF 14 |
| #define SC_OPCODE_DB_AREA 15 /* additional access operators */ |
| #define SC_OPCODE_MACRO 16 |
| #define SC_OPCODE_COL_ROW_NAME 17 |
| #define SC_OPCODE_COL_ROW_NAME_AUTO 18 |
| #define SC_OPCODE_PERCENT_SIGN 19 /* operator _follows_ value */ |
| #define SC_OPCODE_ARRAY_OPEN 20 |
| #define SC_OPCODE_ARRAY_CLOSE 21 |
| #define SC_OPCODE_ARRAY_ROW_SEP 22 |
| #define SC_OPCODE_ARRAY_COL_SEP 23 /* some convs use sep != col_sep */ |
| #define SC_OPCODE_STOP_DIV 24 |
| |
| /*** error constants #... ***/ |
| #define SC_OPCODE_START_ERRORS 30 |
| #define SC_OPCODE_ERROR_NULL 30 |
| #define SC_OPCODE_ERROR_DIVZERO 31 |
| #define SC_OPCODE_ERROR_VALUE 32 |
| #define SC_OPCODE_ERROR_REF 33 |
| #define SC_OPCODE_ERROR_NAME 34 |
| #define SC_OPCODE_ERROR_NUM 35 |
| #define SC_OPCODE_ERROR_NA 36 |
| #define SC_OPCODE_STOP_ERRORS 37 |
| |
| /*** Binary operators ***/ |
| #define SC_OPCODE_START_BIN_OP 40 |
| #define SC_OPCODE_ADD 40 |
| #define SC_OPCODE_SUB 41 |
| #define SC_OPCODE_MUL 42 |
| #define SC_OPCODE_DIV 43 |
| #define SC_OPCODE_AMPERSAND 44 |
| #define SC_OPCODE_POW 45 |
| #define SC_OPCODE_EQUAL 46 |
| #define SC_OPCODE_NOT_EQUAL 47 |
| #define SC_OPCODE_LESS 48 |
| #define SC_OPCODE_GREATER 49 |
| #define SC_OPCODE_LESS_EQUAL 50 |
| #define SC_OPCODE_GREATER_EQUAL 51 |
| #define SC_OPCODE_AND 52 |
| #define SC_OPCODE_OR 53 |
| #define SC_OPCODE_INTERSECT 54 |
| #define SC_OPCODE_UNION 55 |
| #define SC_OPCODE_RANGE 56 |
| #define SC_OPCODE_STOP_BIN_OP 57 |
| |
| /* NOTE: binary and unary operators must be in sequence for compiler! */ |
| |
| /*** Unary operators ***/ |
| #define SC_OPCODE_START_UN_OP 60 |
| #define SC_OPCODE_NOT 60 |
| #define SC_OPCODE_NEG 61 |
| #define SC_OPCODE_NEG_SUB 62 |
| #define SC_OPCODE_STOP_UN_OP 63 |
| |
| /*** Functions without parameters ***/ |
| #define SC_OPCODE_START_NO_PAR 65 |
| #define SC_OPCODE_PI 65 |
| #define SC_OPCODE_RANDOM 66 |
| #define SC_OPCODE_TRUE 67 |
| #define SC_OPCODE_FALSE 68 |
| #define SC_OPCODE_GET_ACT_DATE 69 |
| #define SC_OPCODE_GET_ACT_TIME 70 |
| #define SC_OPCODE_NO_VALUE 71 |
| #define SC_OPCODE_CURRENT 72 |
| #define SC_OPCODE_STOP_NO_PAR 73 |
| |
| /*** Functions with one parameter ***/ |
| #define SC_OPCODE_START_1_PAR 80 |
| #define SC_OPCODE_DEG 80 /* trigonometric */ |
| #define SC_OPCODE_RAD 81 |
| #define SC_OPCODE_SIN 82 |
| #define SC_OPCODE_COS 83 |
| #define SC_OPCODE_TAN 84 |
| #define SC_OPCODE_COT 85 |
| #define SC_OPCODE_ARC_SIN 86 |
| #define SC_OPCODE_ARC_COS 87 |
| #define SC_OPCODE_ARC_TAN 88 |
| #define SC_OPCODE_ARC_COT 89 |
| #define SC_OPCODE_SIN_HYP 90 |
| #define SC_OPCODE_COS_HYP 91 |
| #define SC_OPCODE_TAN_HYP 92 |
| #define SC_OPCODE_COT_HYP 93 |
| #define SC_OPCODE_ARC_SIN_HYP 94 /* transcendent */ |
| #define SC_OPCODE_ARC_COS_HYP 95 |
| #define SC_OPCODE_ARC_TAN_HYP 96 |
| #define SC_OPCODE_ARC_COT_HYP 97 |
| #define SC_OPCODE_COSECANT 98 |
| #define SC_OPCODE_SECANT 99 |
| #define SC_OPCODE_COSECANT_HYP 100 |
| #define SC_OPCODE_SECANT_HYP 101 |
| #define SC_OPCODE_EXP 102 |
| #define SC_OPCODE_LN 103 |
| #define SC_OPCODE_SQRT 104 |
| #define SC_OPCODE_FACT 105 |
| #define SC_OPCODE_GET_YEAR 106 /* date and time */ |
| #define SC_OPCODE_GET_MONTH 107 |
| #define SC_OPCODE_GET_DAY 108 |
| #define SC_OPCODE_GET_HOUR 109 |
| #define SC_OPCODE_GET_MIN 110 |
| #define SC_OPCODE_GET_SEC 111 |
| #define SC_OPCODE_PLUS_MINUS 112 /* miscellaneous */ |
| #define SC_OPCODE_ABS 113 |
| #define SC_OPCODE_INT 114 |
| #define SC_OPCODE_PHI 115 |
| #define SC_OPCODE_GAUSS 116 |
| #define SC_OPCODE_IS_EMPTY 117 /* obtain type */ |
| #define SC_OPCODE_IS_STRING 118 |
| #define SC_OPCODE_IS_NON_STRING 119 |
| #define SC_OPCODE_IS_LOGICAL 120 |
| #define SC_OPCODE_TYPE 121 |
| #define SC_OPCODE_IS_REF 122 |
| #define SC_OPCODE_IS_VALUE 123 |
| #define SC_OPCODE_IS_FORMULA 124 |
| #define SC_OPCODE_IS_NV 125 |
| #define SC_OPCODE_IS_ERR 126 |
| #define SC_OPCODE_IS_ERROR 127 |
| #define SC_OPCODE_IS_EVEN 128 |
| #define SC_OPCODE_IS_ODD 129 |
| #define SC_OPCODE_N 130 |
| #define SC_OPCODE_GET_DATE_VALUE 131 /* string functions */ |
| #define SC_OPCODE_GET_TIME_VALUE 132 |
| #define SC_OPCODE_CODE 133 |
| #define SC_OPCODE_TRIM 134 |
| #define SC_OPCODE_UPPER 135 |
| #define SC_OPCODE_PROPPER 136 |
| #define SC_OPCODE_LOWER 137 |
| #define SC_OPCODE_LEN 138 |
| #define SC_OPCODE_T 139 /* miscellaneous, part 21 */ |
| #define SC_OPCODE_VALUE 140 |
| #define SC_OPCODE_CLEAN 141 |
| #define SC_OPCODE_CHAR 142 |
| #define SC_OPCODE_LOG10 143 |
| #define SC_OPCODE_EVEN 144 |
| #define SC_OPCODE_ODD 145 |
| #define SC_OPCODE_STD_NORM_DIST 146 |
| #define SC_OPCODE_FISHER 147 |
| #define SC_OPCODE_FISHER_INV 148 |
| #define SC_OPCODE_S_NORM_INV 149 |
| #define SC_OPCODE_GAMMA_LN 150 |
| #define SC_OPCODE_ERROR_TYPE 151 |
| #define SC_OPCODE_ERR_CELL 152 |
| #define SC_OPCODE_FORMULA 153 |
| #define SC_OPCODE_ARABIC 154 |
| #define SC_OPCODE_INFO 155 |
| #define SC_OPCODE_BAHTTEXT 156 |
| #define SC_OPCODE_JIS 157 |
| #define SC_OPCODE_ASC 158 |
| #define SC_OPCODE_UNICODE 159 |
| #define SC_OPCODE_UNICHAR 160 |
| #define SC_OPCODE_GAMMA 161 |
| #define SC_OPCODE_STOP_1_PAR 162 |
| |
| /*** Functions with more than one parameters ***/ |
| #define SC_OPCODE_START_2_PAR 201 |
| #define SC_OPCODE_ARC_TAN_2 201 |
| #define SC_OPCODE_CEIL 202 |
| #define SC_OPCODE_FLOOR 203 |
| #define SC_OPCODE_ROUND 204 |
| #define SC_OPCODE_ROUND_UP 205 |
| #define SC_OPCODE_ROUND_DOWN 206 |
| #define SC_OPCODE_TRUNC 207 |
| #define SC_OPCODE_LOG 208 |
| #define SC_OPCODE_POWER 209 |
| #define SC_OPCODE_GGT 210 |
| #define SC_OPCODE_KGV 211 |
| #define SC_OPCODE_MOD 212 |
| #define SC_OPCODE_SUM_PRODUCT 213 |
| #define SC_OPCODE_SUM_SQ 214 |
| #define SC_OPCODE_SUM_X2MY2 215 |
| #define SC_OPCODE_SUM_X2DY2 216 |
| #define SC_OPCODE_SUM_XMY2 217 |
| #define SC_OPCODE_GET_DATE 218 |
| #define SC_OPCODE_GET_TIME 219 |
| #define SC_OPCODE_GET_DIFF_DATE 220 |
| #define SC_OPCODE_GET_DIFF_DATE_360 221 |
| #define SC_OPCODE_MIN 222 |
| #define SC_OPCODE_MAX 223 |
| #define SC_OPCODE_SUM 224 |
| #define SC_OPCODE_PRODUCT 225 |
| #define SC_OPCODE_AVERAGE 226 |
| #define SC_OPCODE_COUNT 227 |
| #define SC_OPCODE_COUNT_2 228 |
| #define SC_OPCODE_NBW 229 |
| #define SC_OPCODE_IKV 230 |
| #define SC_OPCODE_VAR 231 |
| #define SC_OPCODE_VAR_P 232 |
| #define SC_OPCODE_ST_DEV 233 |
| #define SC_OPCODE_ST_DEV_P 234 |
| #define SC_OPCODE_B 235 |
| #define SC_OPCODE_NORM_DIST 236 |
| #define SC_OPCODE_EXP_DIST 237 |
| #define SC_OPCODE_BINOM_DIST 238 |
| #define SC_OPCODE_POISSON_DIST 239 |
| #define SC_OPCODE_KOMBIN 240 |
| #define SC_OPCODE_KOMBIN_2 241 |
| #define SC_OPCODE_VARIATIONEN 242 |
| #define SC_OPCODE_VARIATIONEN_2 243 |
| #define SC_OPCODE_BW 244 |
| #define SC_OPCODE_DIA 245 |
| #define SC_OPCODE_GDA 246 |
| #define SC_OPCODE_GDA_2 247 |
| #define SC_OPCODE_VBD 248 |
| #define SC_OPCODE_LAUFZ 249 |
| #define SC_OPCODE_LIA 250 |
| #define SC_OPCODE_RMZ 251 |
| #define SC_OPCODE_COLUMNS 252 |
| #define SC_OPCODE_ROWS 253 |
| #define SC_OPCODE_COLUMN 254 |
| #define SC_OPCODE_ROW 255 |
| #define SC_OPCODE_ZGZ 256 |
| #define SC_OPCODE_ZW 257 |
| #define SC_OPCODE_ZZR 258 |
| #define SC_OPCODE_ZINS 259 |
| #define SC_OPCODE_ZINS_Z 260 |
| #define SC_OPCODE_KAPZ 261 |
| #define SC_OPCODE_KUM_ZINS_Z 262 |
| #define SC_OPCODE_KUM_KAP_Z 263 |
| #define SC_OPCODE_EFFEKTIV 264 |
| #define SC_OPCODE_NOMINAL 265 |
| #define SC_OPCODE_SUB_TOTAL 266 |
| #define SC_OPCODE_DB_SUM 267 /* database functions */ |
| #define SC_OPCODE_DB_COUNT 268 |
| #define SC_OPCODE_DB_COUNT_2 269 |
| #define SC_OPCODE_DB_AVERAGE 270 |
| #define SC_OPCODE_DB_GET 271 |
| #define SC_OPCODE_DB_MAX 272 |
| #define SC_OPCODE_DB_MIN 273 |
| #define SC_OPCODE_DB_PRODUCT 274 |
| #define SC_OPCODE_DB_STD_DEV 275 |
| #define SC_OPCODE_DB_STD_DEV_P 276 |
| #define SC_OPCODE_DB_VAR 277 |
| #define SC_OPCODE_DB_VAR_P 278 |
| #define SC_OPCODE_INDIRECT 279 /* management functions */ |
| #define SC_OPCODE_ADDRESS 280 |
| #define SC_OPCODE_MATCH 281 |
| #define SC_OPCODE_COUNT_EMPTY_CELLS 282 |
| #define SC_OPCODE_COUNT_IF 283 |
| #define SC_OPCODE_SUM_IF 284 |
| #define SC_OPCODE_LOOKUP 285 |
| #define SC_OPCODE_V_LOOKUP 286 |
| #define SC_OPCODE_H_LOOKUP 287 |
| #define SC_OPCODE_MULTI_AREA 288 |
| #define SC_OPCODE_OFFSET 289 |
| #define SC_OPCODE_INDEX 290 |
| #define SC_OPCODE_AREAS 291 |
| #define SC_OPCODE_CURRENCY 292 /* string functions */ |
| #define SC_OPCODE_REPLACE 293 |
| #define SC_OPCODE_FIXED 294 |
| #define SC_OPCODE_FIND 295 |
| #define SC_OPCODE_EXACT 296 |
| #define SC_OPCODE_LEFT 297 |
| #define SC_OPCODE_RIGHT 298 |
| #define SC_OPCODE_SEARCH 299 |
| #define SC_OPCODE_MID 300 |
| #define SC_OPCODE_TEXT 301 |
| #define SC_OPCODE_SUBSTITUTE 302 |
| #define SC_OPCODE_REPT 303 |
| #define SC_OPCODE_CONCAT 304 |
| #define SC_OPCODE_MAT_VALUE 305 /* matrix functions */ |
| #define SC_OPCODE_MAT_DET 306 |
| #define SC_OPCODE_MAT_INV 307 |
| #define SC_OPCODE_MAT_MULT 308 |
| #define SC_OPCODE_MAT_TRANS 309 |
| #define SC_OPCODE_MATRIX_UNIT 310 |
| #define SC_OPCODE_BACK_SOLVER 311 /* BackSolver */ |
| #define SC_OPCODE_HYP_GEOM_DIST 312 /* statistical functions */ |
| #define SC_OPCODE_LOG_NORM_DIST 313 |
| #define SC_OPCODE_T_DIST 314 |
| #define SC_OPCODE_F_DIST 315 |
| #define SC_OPCODE_CHI_DIST 316 |
| #define SC_OPCODE_WEIBULL 317 |
| #define SC_OPCODE_NEG_BINOM_VERT 318 |
| #define SC_OPCODE_KRIT_BINOM 319 |
| #define SC_OPCODE_KURT 320 |
| #define SC_OPCODE_HAR_MEAN 321 |
| #define SC_OPCODE_GEO_MEAN 322 |
| #define SC_OPCODE_STANDARD 323 |
| #define SC_OPCODE_AVE_DEV 324 |
| #define SC_OPCODE_SCHIEFE 325 |
| #define SC_OPCODE_DEV_SQ 326 |
| #define SC_OPCODE_MEDIAN 327 |
| #define SC_OPCODE_MODAL_VALUE 328 |
| #define SC_OPCODE_Z_TEST 329 |
| #define SC_OPCODE_T_TEST 330 |
| #define SC_OPCODE_RANK 331 |
| #define SC_OPCODE_PERCENTILE 332 |
| #define SC_OPCODE_PERCENT_RANK 333 |
| #define SC_OPCODE_LARGE 334 |
| #define SC_OPCODE_SMALL 335 |
| #define SC_OPCODE_FREQUENCY 336 |
| #define SC_OPCODE_QUARTILE 337 |
| #define SC_OPCODE_NORM_INV 338 |
| #define SC_OPCODE_CONFIDENCE 339 |
| #define SC_OPCODE_F_TEST 340 |
| #define SC_OPCODE_TRIM_MEAN 341 |
| #define SC_OPCODE_PROB 342 |
| #define SC_OPCODE_CORREL 343 |
| #define SC_OPCODE_COVAR 344 |
| #define SC_OPCODE_PEARSON 345 |
| #define SC_OPCODE_RSQ 346 |
| #define SC_OPCODE_STEYX 347 |
| #define SC_OPCODE_SLOPE 348 |
| #define SC_OPCODE_INTERCEPT 349 |
| #define SC_OPCODE_TREND 350 |
| #define SC_OPCODE_GROWTH 351 |
| #define SC_OPCODE_RGP 352 |
| #define SC_OPCODE_RKP 353 |
| #define SC_OPCODE_FORECAST 354 |
| #define SC_OPCODE_CHI_INV 355 |
| #define SC_OPCODE_GAMMA_DIST 356 |
| #define SC_OPCODE_GAMMA_INV 357 |
| #define SC_OPCODE_T_INV 358 |
| #define SC_OPCODE_F_INV 359 |
| #define SC_OPCODE_CHI_TEST 360 |
| #define SC_OPCODE_LOG_INV 361 |
| #define SC_OPCODE_TABLE_OP 362 |
| #define SC_OPCODE_BETA_DIST 363 |
| #define SC_OPCODE_BETA_INV 364 |
| #define SC_OPCODE_WEEK 365 /* miscellaneous */ |
| #define SC_OPCODE_GET_DAY_OF_WEEK 366 |
| #define SC_OPCODE_NO_NAME 367 |
| #define SC_OPCODE_STYLE 368 |
| #define SC_OPCODE_DDE 369 |
| #define SC_OPCODE_BASE 370 |
| #define SC_OPCODE_TABLE 371 |
| #define SC_OPCODE_TABLES 372 |
| #define SC_OPCODE_MIN_A 373 |
| #define SC_OPCODE_MAX_A 374 |
| #define SC_OPCODE_AVERAGE_A 375 |
| #define SC_OPCODE_ST_DEV_A 376 |
| #define SC_OPCODE_ST_DEV_P_A 377 |
| #define SC_OPCODE_VAR_A 378 |
| #define SC_OPCODE_VAR_P_A 379 |
| #define SC_OPCODE_EASTERSUNDAY 380 |
| #define SC_OPCODE_DECIMAL 381 |
| #define SC_OPCODE_CONVERT 382 |
| #define SC_OPCODE_ROMAN 383 |
| #define SC_OPCODE_MIRR 384 |
| #define SC_OPCODE_CELL 385 |
| #define SC_OPCODE_ISPMT 386 |
| #define SC_OPCODE_HYPERLINK 387 |
| #define SC_OPCODE_INDIRECT_XL 388 /* See also INDIRECT for OOO variant */ |
| #define SC_OPCODE_ADDRESS_XL 389 /* See also ADRESS for OOO variant */ |
| #define SC_OPCODE_GET_PIVOT_DATA 390 |
| #define SC_OPCODE_EUROCONVERT 391 |
| #define SC_OPCODE_NUMBERVALUE 392 |
| #define SC_OPCODE_CHISQ_DIST 393 |
| #define SC_OPCODE_CHISQ_INV 394 |
| #define SC_OPCODE_AVERAGE_IF 395 |
| #define SC_OPCODE_XOR 396 |
| #define SC_OPCODE_SUM_IFS 397 |
| #define SC_OPCODE_AVERAGE_IFS 398 |
| #define SC_OPCODE_COUNT_IFS 399 |
| #define SC_OPCODE_LENB 400 |
| #define SC_OPCODE_RIGHTB 401 |
| #define SC_OPCODE_LEFTB 402 |
| #define SC_OPCODE_MIDB 403 |
| #define SC_OPCODE_STOP_2_PAR 404 |
| |
| #define SC_OPCODE_LAST_OPCODE_ID 403 /* last OpCode */ |
| |
| /*** Interna ***/ |
| #define SC_OPCODE_INTERNAL_BEGIN 9999 |
| #define SC_OPCODE_TTT 9999 |
| #define SC_OPCODE_INTERNAL_END 9999 |
| |
| /*** from here on ExtraData contained ***/ |
| #define SC_OPCODE_DATA_TOKEN_1 10000 |
| |
| #define SC_OPCODE_NONE 0xFFFF |
| |
| |
| #endif /* FORMULA_COMPILER_HRC */ |