LibreOffice Module formula (master) 1
compiler.hxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 *
9 * This file incorporates work covered by the following license notice:
10 *
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 */
19
20#ifndef FORMULA_COMPILER_HXX
21#define FORMULA_COMPILER_HXX
22
23/* Central definition of OpCodes for spreadsheet functions */
24
25/*** Special commands ***/
26#define SC_OPCODE_PUSH 0 /* internal commands */
27#define SC_OPCODE_CALL 1
28#define SC_OPCODE_STOP 2
29#define SC_OPCODE_EXTERNAL 3
30#define SC_OPCODE_NAME 4
31#define SC_OPCODE_EXTERNAL_REF 5
32#define SC_OPCODE_IF 6 /* jump commands */
33#define SC_OPCODE_IF_ERROR 7
34#define SC_OPCODE_IF_NA 8
35#define SC_OPCODE_CHOOSE 9
36#define SC_OPCODE_OPEN 10 /* parentheses and separators */
37#define SC_OPCODE_CLOSE 11
38#define SC_OPCODE_SEP 12
39#define SC_OPCODE_MISSING 13 /* special OpCodes */
40#define SC_OPCODE_BAD 14
41#define SC_OPCODE_STRINGXML 15
42#define SC_OPCODE_SPACES 16
43#define SC_OPCODE_WHITESPACE 17
44#define SC_OPCODE_MAT_REF 18
45#define SC_OPCODE_DB_AREA 19 /* additional access operators */
46#define SC_OPCODE_TABLE_REF 20
47#define SC_OPCODE_MACRO 21
48#define SC_OPCODE_COL_ROW_NAME 22
49#define SC_OPCODE_COL_ROW_NAME_AUTO 23
50#define SC_OPCODE_PERCENT_SIGN 24 /* operator _follows_ value */
51#define SC_OPCODE_ARRAY_OPEN 25
52#define SC_OPCODE_ARRAY_CLOSE 26
53#define SC_OPCODE_ARRAY_ROW_SEP 27
54#define SC_OPCODE_ARRAY_COL_SEP 28 /* some convs use sep != col_sep */
55#define SC_OPCODE_TABLE_REF_OPEN 29
56#define SC_OPCODE_TABLE_REF_CLOSE 30
57#define SC_OPCODE_TABLE_REF_ITEM_ALL 31
58#define SC_OPCODE_TABLE_REF_ITEM_HEADERS 32
59#define SC_OPCODE_TABLE_REF_ITEM_DATA 33
60#define SC_OPCODE_TABLE_REF_ITEM_TOTALS 34
61#define SC_OPCODE_TABLE_REF_ITEM_THIS_ROW 35
62#define SC_OPCODE_STOP_DIV 36
63#define SC_OPCODE_SKIP 37 /* used to skip raw tokens during string compilation */
64
65/*** error constants #... ***/
66#define SC_OPCODE_START_ERRORS 40
67#define SC_OPCODE_ERROR_NULL 40
68#define SC_OPCODE_ERROR_DIVZERO 41
69#define SC_OPCODE_ERROR_VALUE 42
70#define SC_OPCODE_ERROR_REF 43
71#define SC_OPCODE_ERROR_NAME 44
72#define SC_OPCODE_ERROR_NUM 45
73#define SC_OPCODE_ERROR_NA 46
74#define SC_OPCODE_STOP_ERRORS 47
75
76/*** Binary operators ***/
77#define SC_OPCODE_START_BIN_OP 50
78#define SC_OPCODE_ADD 50
79#define SC_OPCODE_SUB 51
80#define SC_OPCODE_MUL 52
81#define SC_OPCODE_DIV 53
82#define SC_OPCODE_AMPERSAND 54
83#define SC_OPCODE_POW 55
84#define SC_OPCODE_EQUAL 56
85#define SC_OPCODE_NOT_EQUAL 57
86#define SC_OPCODE_LESS 58
87#define SC_OPCODE_GREATER 59
88#define SC_OPCODE_LESS_EQUAL 60
89#define SC_OPCODE_GREATER_EQUAL 61
90#define SC_OPCODE_AND 62
91#define SC_OPCODE_OR 63
92#define SC_OPCODE_INTERSECT 64
93#define SC_OPCODE_UNION 65
94#define SC_OPCODE_RANGE 66
95#define SC_OPCODE_STOP_BIN_OP 67
96
97/* NOTE: binary and unary operators must be in sequence for compiler! */
98
99/*** Unary operators ***/
100#define SC_OPCODE_START_UN_OP 70
101#define SC_OPCODE_NEG_SUB 70
102#define SC_OPCODE_STOP_UN_OP 71
103
104#define SC_OPCODE_START_FUNCTION 75
105
106/*** Functions without parameters ***/
107#define SC_OPCODE_START_NO_PAR 75
108#define SC_OPCODE_PI 75
109#define SC_OPCODE_RANDOM 76
110#define SC_OPCODE_TRUE 77
111#define SC_OPCODE_FALSE 78
112#define SC_OPCODE_GET_ACT_DATE 79
113#define SC_OPCODE_GET_ACT_TIME 80
114#define SC_OPCODE_NO_VALUE 81
115#define SC_OPCODE_CURRENT 82
116#define SC_OPCODE_RANDOM_NV 83
117#define SC_OPCODE_STOP_NO_PAR 84
118
119/*** Functions with one parameter ***/
120#define SC_OPCODE_START_1_PAR 90
121#define SC_OPCODE_DEG 90 /* trigonometric */
122#define SC_OPCODE_RAD 91
123#define SC_OPCODE_SIN 92
124#define SC_OPCODE_COS 93
125#define SC_OPCODE_TAN 94
126#define SC_OPCODE_COT 95
127#define SC_OPCODE_ARC_SIN 96
128#define SC_OPCODE_ARC_COS 97
129#define SC_OPCODE_ARC_TAN 98
130#define SC_OPCODE_ARC_COT 99
131#define SC_OPCODE_SIN_HYP 100
132#define SC_OPCODE_COS_HYP 101
133#define SC_OPCODE_TAN_HYP 102
134#define SC_OPCODE_COT_HYP 103
135#define SC_OPCODE_ARC_SIN_HYP 104 /* transcendent */
136#define SC_OPCODE_ARC_COS_HYP 105
137#define SC_OPCODE_ARC_TAN_HYP 106
138#define SC_OPCODE_ARC_COT_HYP 107
139#define SC_OPCODE_COSECANT 108
140#define SC_OPCODE_SECANT 109
141#define SC_OPCODE_COSECANT_HYP 110
142#define SC_OPCODE_SECANT_HYP 111
143#define SC_OPCODE_EXP 112
144#define SC_OPCODE_LN 113
145#define SC_OPCODE_SQRT 114
146#define SC_OPCODE_FACT 115
147#define SC_OPCODE_GET_YEAR 116 /* date and time */
148#define SC_OPCODE_GET_MONTH 117
149#define SC_OPCODE_GET_DAY 118
150#define SC_OPCODE_GET_HOUR 119
151#define SC_OPCODE_GET_MIN 120
152#define SC_OPCODE_GET_SEC 121
153#define SC_OPCODE_PLUS_MINUS 122 /* miscellaneous */
154#define SC_OPCODE_ABS 123
155#define SC_OPCODE_INT 124
156#define SC_OPCODE_PHI 125
157#define SC_OPCODE_GAUSS 126
158#define SC_OPCODE_IS_EMPTY 127 /* obtain type */
159#define SC_OPCODE_IS_STRING 128
160#define SC_OPCODE_IS_NON_STRING 129
161#define SC_OPCODE_IS_LOGICAL 130
162#define SC_OPCODE_TYPE 131
163#define SC_OPCODE_IS_REF 132
164#define SC_OPCODE_IS_VALUE 133
165#define SC_OPCODE_IS_FORMULA 134
166#define SC_OPCODE_IS_NV 135
167#define SC_OPCODE_IS_ERR 136
168#define SC_OPCODE_IS_ERROR 137
169#define SC_OPCODE_IS_EVEN 138
170#define SC_OPCODE_IS_ODD 139
171#define SC_OPCODE_N 140
172#define SC_OPCODE_GET_DATE_VALUE 141 /* string functions */
173#define SC_OPCODE_GET_TIME_VALUE 142
174#define SC_OPCODE_CODE 143
175#define SC_OPCODE_TRIM 144
176#define SC_OPCODE_UPPER 145
177#define SC_OPCODE_PROPER 146
178#define SC_OPCODE_LOWER 147
179#define SC_OPCODE_LEN 148
180#define SC_OPCODE_T 149 /* miscellaneous, part 21 */
181#define SC_OPCODE_VALUE 150
182#define SC_OPCODE_CLEAN 151
183#define SC_OPCODE_CHAR 152
184#define SC_OPCODE_LOG10 153
185#define SC_OPCODE_EVEN 154
186#define SC_OPCODE_ODD 155
187#define SC_OPCODE_STD_NORM_DIST 156
188#define SC_OPCODE_FISHER 157
189#define SC_OPCODE_FISHER_INV 158
190#define SC_OPCODE_S_NORM_INV 159
191#define SC_OPCODE_GAMMA_LN 160
192#define SC_OPCODE_ERROR_TYPE 161
193#define SC_OPCODE_FORMULA 163
194#define SC_OPCODE_ARABIC 164
195#define SC_OPCODE_INFO 165
196#define SC_OPCODE_BAHTTEXT 166
197#define SC_OPCODE_JIS 167
198#define SC_OPCODE_ASC 168
199#define SC_OPCODE_UNICODE 169
200#define SC_OPCODE_UNICHAR 170
201#define SC_OPCODE_GAMMA 171
202#define SC_OPCODE_GAMMA_LN_MS 172
203#define SC_OPCODE_ERF_MS 173
204#define SC_OPCODE_ERFC_MS 174
205#define SC_OPCODE_ERROR_TYPE_ODF 175
206#define SC_OPCODE_ENCODEURL 176
207#define SC_OPCODE_ISOWEEKNUM 177
208#define SC_OPCODE_NOT 178
209#define SC_OPCODE_NEG 179
210#define SC_OPCODE_STOP_1_PAR 180
211
212/*** Functions with more than one parameters ***/
213#define SC_OPCODE_START_2_PAR 201
214#define SC_OPCODE_ARC_TAN_2 201
215#define SC_OPCODE_CEIL 202
216#define SC_OPCODE_FLOOR 203
217#define SC_OPCODE_ROUND 204
218#define SC_OPCODE_ROUND_UP 205
219#define SC_OPCODE_ROUND_DOWN 206
220#define SC_OPCODE_TRUNC 207
221#define SC_OPCODE_LOG 208
222#define SC_OPCODE_POWER 209
223#define SC_OPCODE_GCD 210
224#define SC_OPCODE_LCM 211
225#define SC_OPCODE_MOD 212
226#define SC_OPCODE_SUM_PRODUCT 213
227#define SC_OPCODE_SUM_SQ 214
228#define SC_OPCODE_SUM_X2MY2 215
229#define SC_OPCODE_SUM_X2DY2 216
230#define SC_OPCODE_SUM_XMY2 217
231#define SC_OPCODE_GET_DATE 218
232#define SC_OPCODE_GET_TIME 219
233#define SC_OPCODE_GET_DIFF_DATE 220
234#define SC_OPCODE_GET_DIFF_DATE_360 221
235#define SC_OPCODE_MIN 222
236#define SC_OPCODE_MAX 223
237#define SC_OPCODE_SUM 224
238#define SC_OPCODE_PRODUCT 225
239#define SC_OPCODE_AVERAGE 226
240#define SC_OPCODE_COUNT 227
241#define SC_OPCODE_COUNT_2 228
242#define SC_OPCODE_NPV 229
243#define SC_OPCODE_IRR 230
244#define SC_OPCODE_VAR 231
245#define SC_OPCODE_VAR_P 232
246#define SC_OPCODE_ST_DEV 233
247#define SC_OPCODE_ST_DEV_P 234
248#define SC_OPCODE_B 235
249#define SC_OPCODE_NORM_DIST 236
250#define SC_OPCODE_EXP_DIST 237
251#define SC_OPCODE_BINOM_DIST 238
252#define SC_OPCODE_POISSON_DIST 239
253#define SC_OPCODE_COMBIN 240
254#define SC_OPCODE_COMBIN_A 241
255#define SC_OPCODE_PERMUT 242
256#define SC_OPCODE_PERMUTATION_A 243
257#define SC_OPCODE_PV 244
258#define SC_OPCODE_SYD 245
259#define SC_OPCODE_DDB 246
260#define SC_OPCODE_DB 247
261#define SC_OPCODE_VBD 248
262#define SC_OPCODE_PDURATION 249
263#define SC_OPCODE_SLN 250
264#define SC_OPCODE_PMT 251
265#define SC_OPCODE_COLUMNS 252
266#define SC_OPCODE_ROWS 253
267#define SC_OPCODE_COLUMN 254
268#define SC_OPCODE_ROW 255
269#define SC_OPCODE_RRI 256
270#define SC_OPCODE_FV 257
271#define SC_OPCODE_NPER 258
272#define SC_OPCODE_RATE 259
273#define SC_OPCODE_IPMT 260
274#define SC_OPCODE_PPMT 261
275#define SC_OPCODE_CUM_IPMT 262
276#define SC_OPCODE_CUM_PRINC 263
277#define SC_OPCODE_EFFECT 264
278#define SC_OPCODE_NOMINAL 265
279#define SC_OPCODE_SUB_TOTAL 266
280#define SC_OPCODE_DB_SUM 267 /* database functions */
281#define SC_OPCODE_DB_COUNT 268
282#define SC_OPCODE_DB_COUNT_2 269
283#define SC_OPCODE_DB_AVERAGE 270
284#define SC_OPCODE_DB_GET 271
285#define SC_OPCODE_DB_MAX 272
286#define SC_OPCODE_DB_MIN 273
287#define SC_OPCODE_DB_PRODUCT 274
288#define SC_OPCODE_DB_STD_DEV 275
289#define SC_OPCODE_DB_STD_DEV_P 276
290#define SC_OPCODE_DB_VAR 277
291#define SC_OPCODE_DB_VAR_P 278
292#define SC_OPCODE_INDIRECT 279 /* management functions */
293#define SC_OPCODE_ADDRESS 280
294#define SC_OPCODE_MATCH 281
295#define SC_OPCODE_COUNT_EMPTY_CELLS 282
296#define SC_OPCODE_COUNT_IF 283
297#define SC_OPCODE_SUM_IF 284
298#define SC_OPCODE_LOOKUP 285
299#define SC_OPCODE_V_LOOKUP 286
300#define SC_OPCODE_H_LOOKUP 287
301#define SC_OPCODE_MULTI_AREA 288
302#define SC_OPCODE_OFFSET 289
303#define SC_OPCODE_INDEX 290
304#define SC_OPCODE_AREAS 291
305#define SC_OPCODE_CURRENCY 292 /* string functions */
306#define SC_OPCODE_REPLACE 293
307#define SC_OPCODE_FIXED 294
308#define SC_OPCODE_FIND 295
309#define SC_OPCODE_EXACT 296
310#define SC_OPCODE_LEFT 297
311#define SC_OPCODE_RIGHT 298
312#define SC_OPCODE_SEARCH 299
313#define SC_OPCODE_MID 300
314#define SC_OPCODE_TEXT 301
315#define SC_OPCODE_SUBSTITUTE 302
316#define SC_OPCODE_REPT 303
317#define SC_OPCODE_CONCAT 304
318#define SC_OPCODE_MAT_VALUE 305 /* matrix functions */
319#define SC_OPCODE_MAT_DET 306
320#define SC_OPCODE_MAT_INV 307
321#define SC_OPCODE_MAT_MULT 308
322#define SC_OPCODE_MAT_TRANS 309
323#define SC_OPCODE_MATRIX_UNIT 310
324#define SC_OPCODE_BACK_SOLVER 311 /* BackSolver */
325#define SC_OPCODE_HYP_GEOM_DIST 312 /* statistical functions */
326#define SC_OPCODE_LOG_NORM_DIST 313
327#define SC_OPCODE_T_DIST 314
328#define SC_OPCODE_F_DIST 315
329#define SC_OPCODE_CHI_DIST 316
330#define SC_OPCODE_WEIBULL 317
331#define SC_OPCODE_NEG_BINOM_VERT 318
332#define SC_OPCODE_CRIT_BINOM 319
333#define SC_OPCODE_KURT 320
334#define SC_OPCODE_HAR_MEAN 321
335#define SC_OPCODE_GEO_MEAN 322
336#define SC_OPCODE_STANDARD 323
337#define SC_OPCODE_AVE_DEV 324
338#define SC_OPCODE_SKEW 325
339#define SC_OPCODE_DEV_SQ 326
340#define SC_OPCODE_MEDIAN 327
341#define SC_OPCODE_MODAL_VALUE 328
342#define SC_OPCODE_Z_TEST 329
343#define SC_OPCODE_T_TEST 330
344#define SC_OPCODE_RANK 331
345#define SC_OPCODE_PERCENTILE 332
346#define SC_OPCODE_PERCENT_RANK 333
347#define SC_OPCODE_LARGE 334
348#define SC_OPCODE_SMALL 335
349#define SC_OPCODE_FREQUENCY 336
350#define SC_OPCODE_QUARTILE 337
351#define SC_OPCODE_NORM_INV 338
352#define SC_OPCODE_CONFIDENCE 339
353#define SC_OPCODE_F_TEST 340
354#define SC_OPCODE_TRIM_MEAN 341
355#define SC_OPCODE_PROB 342
356#define SC_OPCODE_CORREL 343
357#define SC_OPCODE_COVAR 344
358#define SC_OPCODE_PEARSON 345
359#define SC_OPCODE_RSQ 346
360#define SC_OPCODE_STEYX 347
361#define SC_OPCODE_SLOPE 348
362#define SC_OPCODE_INTERCEPT 349
363#define SC_OPCODE_TREND 350
364#define SC_OPCODE_GROWTH 351
365#define SC_OPCODE_LINEST 352
366#define SC_OPCODE_LOGEST 353
367#define SC_OPCODE_FORECAST 354
368#define SC_OPCODE_CHI_INV 355
369#define SC_OPCODE_GAMMA_DIST 356
370#define SC_OPCODE_GAMMA_INV 357
371#define SC_OPCODE_T_INV 358
372#define SC_OPCODE_F_INV 359
373#define SC_OPCODE_CHI_TEST 360
374#define SC_OPCODE_LOG_INV 361
375#define SC_OPCODE_TABLE_OP 362
376#define SC_OPCODE_BETA_DIST 363
377#define SC_OPCODE_BETA_INV 364
378#define SC_OPCODE_WEEK 365 /* miscellaneous */
379#define SC_OPCODE_GET_DAY_OF_WEEK 366
380#define SC_OPCODE_NO_NAME 367
381#define SC_OPCODE_STYLE 368
382#define SC_OPCODE_DDE 369
383#define SC_OPCODE_BASE 370
384#define SC_OPCODE_SHEET 371
385#define SC_OPCODE_SHEETS 372
386#define SC_OPCODE_MIN_A 373
387#define SC_OPCODE_MAX_A 374
388#define SC_OPCODE_AVERAGE_A 375
389#define SC_OPCODE_ST_DEV_A 376
390#define SC_OPCODE_ST_DEV_P_A 377
391#define SC_OPCODE_VAR_A 378
392#define SC_OPCODE_VAR_P_A 379
393#define SC_OPCODE_EASTERSUNDAY 380
394#define SC_OPCODE_DECIMAL 381
395#define SC_OPCODE_CONVERT_OOO 382
396#define SC_OPCODE_ROMAN 383
397#define SC_OPCODE_MIRR 384
398#define SC_OPCODE_CELL 385
399#define SC_OPCODE_ISPMT 386
400#define SC_OPCODE_HYPERLINK 387
401// free: 388
402// free: 389
403#define SC_OPCODE_GET_PIVOT_DATA 390
404#define SC_OPCODE_EUROCONVERT 391
405#define SC_OPCODE_NUMBERVALUE 392
406#define SC_OPCODE_CHISQ_DIST 393
407#define SC_OPCODE_CHISQ_INV 394
408#define SC_OPCODE_BITAND 395
409#define SC_OPCODE_BITOR 396
410#define SC_OPCODE_BITXOR 397
411#define SC_OPCODE_BITRSHIFT 398
412#define SC_OPCODE_BITLSHIFT 399
413#define SC_OPCODE_GET_DATEDIF 400
414#define SC_OPCODE_XOR 401
415#define SC_OPCODE_AVERAGE_IF 402
416#define SC_OPCODE_SUM_IFS 403
417#define SC_OPCODE_AVERAGE_IFS 404
418#define SC_OPCODE_COUNT_IFS 405
419#define SC_OPCODE_SKEWP 406
420#define SC_OPCODE_LENB 407
421#define SC_OPCODE_RIGHTB 408
422#define SC_OPCODE_LEFTB 409
423#define SC_OPCODE_MIDB 410
424#define SC_OPCODE_FILTERXML 411
425#define SC_OPCODE_WEBSERVICE 412
426#define SC_OPCODE_COVARIANCE_S 413
427#define SC_OPCODE_COVARIANCE_P 414
428#define SC_OPCODE_ST_DEV_P_MS 415
429#define SC_OPCODE_ST_DEV_S 416
430#define SC_OPCODE_VAR_P_MS 417
431#define SC_OPCODE_VAR_S 418
432#define SC_OPCODE_BETA_DIST_MS 419
433#define SC_OPCODE_BETA_INV_MS 420
434#define SC_OPCODE_BINOM_DIST_MS 421
435#define SC_OPCODE_BINOM_INV 422
436#define SC_OPCODE_CHI_DIST_MS 423
437#define SC_OPCODE_CHI_INV_MS 424
438#define SC_OPCODE_CHI_TEST_MS 425
439#define SC_OPCODE_CHISQ_DIST_MS 426
440#define SC_OPCODE_CHISQ_INV_MS 427
441#define SC_OPCODE_CONFIDENCE_N 428
442#define SC_OPCODE_CONFIDENCE_T 429
443#define SC_OPCODE_F_DIST_LT 430
444#define SC_OPCODE_F_DIST_RT 431
445#define SC_OPCODE_F_INV_LT 432
446#define SC_OPCODE_F_INV_RT 433
447#define SC_OPCODE_F_TEST_MS 434
448#define SC_OPCODE_EXP_DIST_MS 435
449#define SC_OPCODE_HYP_GEOM_DIST_MS 436
450#define SC_OPCODE_POISSON_DIST_MS 437
451#define SC_OPCODE_WEIBULL_MS 438
452#define SC_OPCODE_GAMMA_DIST_MS 439
453#define SC_OPCODE_GAMMA_INV_MS 440
454#define SC_OPCODE_LOG_NORM_DIST_MS 441
455#define SC_OPCODE_LOG_INV_MS 442
456#define SC_OPCODE_NORM_DIST_MS 443
457#define SC_OPCODE_NORM_INV_MS 444
458#define SC_OPCODE_STD_NORM_DIST_MS 445
459#define SC_OPCODE_S_NORM_INV_MS 446
460#define SC_OPCODE_T_DIST_MS 447
461#define SC_OPCODE_T_DIST_RT 448
462#define SC_OPCODE_T_DIST_2T 449
463#define SC_OPCODE_T_INV_2T 450
464#define SC_OPCODE_T_INV_MS 451
465#define SC_OPCODE_T_TEST_MS 452
466#define SC_OPCODE_PERCENTILE_INC 453
467#define SC_OPCODE_PERCENT_RANK_INC 454
468#define SC_OPCODE_QUARTILE_INC 455
469#define SC_OPCODE_RANK_EQ 456
470#define SC_OPCODE_PERCENTILE_EXC 457
471#define SC_OPCODE_PERCENT_RANK_EXC 458
472#define SC_OPCODE_QUARTILE_EXC 459
473#define SC_OPCODE_RANK_AVG 460
474#define SC_OPCODE_MODAL_VALUE_MS 461
475#define SC_OPCODE_MODAL_VALUE_MULTI 462
476#define SC_OPCODE_NEG_BINOM_DIST_MS 463
477#define SC_OPCODE_Z_TEST_MS 464
478#define SC_OPCODE_CEIL_MS 465
479#define SC_OPCODE_CEIL_ISO 466
480#define SC_OPCODE_FLOOR_MS 467
481#define SC_OPCODE_NETWORKDAYS_MS 468
482#define SC_OPCODE_WORKDAY_MS 469
483#define SC_OPCODE_AGGREGATE 470
484#define SC_OPCODE_COLOR 471
485#define SC_OPCODE_CEIL_MATH 472
486#define SC_OPCODE_CEIL_PRECISE 473
487#define SC_OPCODE_NETWORKDAYS 474
488#define SC_OPCODE_FLOOR_MATH 475
489#define SC_OPCODE_FLOOR_PRECISE 476
490#define SC_OPCODE_RAWSUBTRACT 477
491#define SC_OPCODE_WEEKNUM_OOO 478
492#define SC_OPCODE_FORECAST_ETS_ADD 479
493#define SC_OPCODE_FORECAST_ETS_SEA 480
494#define SC_OPCODE_FORECAST_ETS_MUL 481
495#define SC_OPCODE_FORECAST_ETS_PIA 482
496#define SC_OPCODE_FORECAST_ETS_PIM 483
497#define SC_OPCODE_FORECAST_ETS_STA 484
498#define SC_OPCODE_FORECAST_ETS_STM 485
499#define SC_OPCODE_FORECAST_LIN 486
500#define SC_OPCODE_CONCAT_MS 487
501#define SC_OPCODE_TEXTJOIN_MS 488
502#define SC_OPCODE_IFS_MS 489
503#define SC_OPCODE_SWITCH_MS 490
504#define SC_OPCODE_MINIFS_MS 491
505#define SC_OPCODE_MAXIFS_MS 492
506#define SC_OPCODE_ROUNDSIG 493
507#define SC_OPCODE_REPLACEB 494
508#define SC_OPCODE_FINDB 495
509#define SC_OPCODE_SEARCHB 496
510#define SC_OPCODE_REGEX 497
511#define SC_OPCODE_FOURIER 498
512#define SC_OPCODE_RANDBETWEEN_NV 499
513#define SC_OPCODE_STOP_2_PAR 500 /* last function with two or more parameters' OpCode + 1 */
514
515#define SC_OPCODE_STOP_FUNCTION SC_OPCODE_STOP_2_PAR /* last function's OpCode + 1 */
516#define SC_OPCODE_LAST_OPCODE_ID (SC_OPCODE_STOP_FUNCTION - 1) /* last OpCode */
517
518/*** Internal ***/
519#define SC_OPCODE_INTERNAL_BEGIN 9999
520#define SC_OPCODE_TTT 9999
521#define SC_OPCODE_DEBUG_VAR 10000
522#define SC_OPCODE_INTERNAL_END 10000
523
524/*** from here on ExtraData contained ***/
525#define SC_OPCODE_DATA_TOKEN_1 10001
526
527#define SC_OPCODE_NONE 0xFFFF
528
529#endif /* FORMULA_COMPILER_HRC */
530
531/* vim:set shiftwidth=4 softtabstop=4 expandtab: */