/************************************************************** * * 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 */