summaryrefslogtreecommitdiff
path: root/include/formula/compiler.hxx
blob: c7501da8c421f59ddfc7ca6dae6fb3da176db38f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
 * This file is part of the LibreOffice project.
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * This file incorporates work covered by the following license notice:
 *
 *   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 .
 */

#ifndef FORMULA_COMPILER_HXX
#define FORMULA_COMPILER_HXX

/* 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_IF_ERROR            7
#define SC_OPCODE_IF_NA               8
#define SC_OPCODE_CHOOSE              9
#define SC_OPCODE_OPEN               10     /* parentheses and separators */
#define SC_OPCODE_CLOSE              11
#define SC_OPCODE_SEP                12
#define SC_OPCODE_MISSING            13     /* special OpCodes */
#define SC_OPCODE_BAD                14
#define SC_OPCODE_STRINGXML          15
#define SC_OPCODE_SPACES             16
#define SC_OPCODE_WHITESPACE         17
#define SC_OPCODE_MAT_REF            18
#define SC_OPCODE_DB_AREA            19     /* additional access operators */
#define SC_OPCODE_TABLE_REF          20
#define SC_OPCODE_MACRO              21
#define SC_OPCODE_COL_ROW_NAME       22
#define SC_OPCODE_COL_ROW_NAME_AUTO  23
#define SC_OPCODE_PERCENT_SIGN       24     /* operator _follows_ value */
#define SC_OPCODE_ARRAY_OPEN         25
#define SC_OPCODE_ARRAY_CLOSE        26
#define SC_OPCODE_ARRAY_ROW_SEP      27
#define SC_OPCODE_ARRAY_COL_SEP      28     /* some convs use sep != col_sep */
#define SC_OPCODE_TABLE_REF_OPEN     29
#define SC_OPCODE_TABLE_REF_CLOSE    30
#define SC_OPCODE_TABLE_REF_ITEM_ALL      31
#define SC_OPCODE_TABLE_REF_ITEM_HEADERS  32
#define SC_OPCODE_TABLE_REF_ITEM_DATA     33
#define SC_OPCODE_TABLE_REF_ITEM_TOTALS   34
#define SC_OPCODE_TABLE_REF_ITEM_THIS_ROW 35
#define SC_OPCODE_STOP_DIV           36
#define SC_OPCODE_SKIP               37     /* used to skip raw tokens during string compilation */

/*** error constants #... ***/
#define SC_OPCODE_START_ERRORS       40
#define SC_OPCODE_ERROR_NULL         40
#define SC_OPCODE_ERROR_DIVZERO      41
#define SC_OPCODE_ERROR_VALUE        42
#define SC_OPCODE_ERROR_REF          43
#define SC_OPCODE_ERROR_NAME         44
#define SC_OPCODE_ERROR_NUM          45
#define SC_OPCODE_ERROR_NA           46
#define SC_OPCODE_STOP_ERRORS        47

/*** Binary operators ***/
#define SC_OPCODE_START_BIN_OP       50
#define SC_OPCODE_ADD                50
#define SC_OPCODE_SUB                51
#define SC_OPCODE_MUL                52
#define SC_OPCODE_DIV                53
#define SC_OPCODE_AMPERSAND          54
#define SC_OPCODE_POW                55
#define SC_OPCODE_EQUAL              56
#define SC_OPCODE_NOT_EQUAL          57
#define SC_OPCODE_LESS               58
#define SC_OPCODE_GREATER            59
#define SC_OPCODE_LESS_EQUAL         60
#define SC_OPCODE_GREATER_EQUAL      61
#define SC_OPCODE_AND                62
#define SC_OPCODE_OR                 63
#define SC_OPCODE_INTERSECT          64
#define SC_OPCODE_UNION              65
#define SC_OPCODE_RANGE              66
#define SC_OPCODE_STOP_BIN_OP        67

/* NOTE: binary and unary operators must be in sequence for compiler! */

/*** Unary operators ***/
#define SC_OPCODE_START_UN_OP        70
#define SC_OPCODE_NEG_SUB            70
#define SC_OPCODE_STOP_UN_OP         71

#define SC_OPCODE_START_FUNCTION     75

/*** Functions without parameters ***/
#define SC_OPCODE_START_NO_PAR       75
#define SC_OPCODE_PI                 75
#define SC_OPCODE_RANDOM             76
#define SC_OPCODE_TRUE               77
#define SC_OPCODE_FALSE              78
#define SC_OPCODE_GET_ACT_DATE       79
#define SC_OPCODE_GET_ACT_TIME       80
#define SC_OPCODE_NO_VALUE           81
#define SC_OPCODE_CURRENT            82
#define SC_OPCODE_RANDOM_NV          83
#define SC_OPCODE_STOP_NO_PAR        84

/*** Functions with one parameter ***/
#define SC_OPCODE_START_1_PAR        90
#define SC_OPCODE_DEG                90     /* trigonometric */
#define SC_OPCODE_RAD                91
#define SC_OPCODE_SIN                92
#define SC_OPCODE_COS                93
#define SC_OPCODE_TAN                94
#define SC_OPCODE_COT                95
#define SC_OPCODE_ARC_SIN            96
#define SC_OPCODE_ARC_COS            97
#define SC_OPCODE_ARC_TAN            98
#define SC_OPCODE_ARC_COT            99
#define SC_OPCODE_SIN_HYP           100
#define SC_OPCODE_COS_HYP           101
#define SC_OPCODE_TAN_HYP           102
#define SC_OPCODE_COT_HYP           103
#define SC_OPCODE_ARC_SIN_HYP       104     /* transcendent */
#define SC_OPCODE_ARC_COS_HYP       105
#define SC_OPCODE_ARC_TAN_HYP       106
#define SC_OPCODE_ARC_COT_HYP       107
#define SC_OPCODE_COSECANT          108
#define SC_OPCODE_SECANT            109
#define SC_OPCODE_COSECANT_HYP      110
#define SC_OPCODE_SECANT_HYP        111
#define SC_OPCODE_EXP               112
#define SC_OPCODE_LN                113
#define SC_OPCODE_SQRT              114
#define SC_OPCODE_FACT              115
#define SC_OPCODE_GET_YEAR          116     /* date and time */
#define SC_OPCODE_GET_MONTH         117
#define SC_OPCODE_GET_DAY           118
#define SC_OPCODE_GET_HOUR          119
#define SC_OPCODE_GET_MIN           120
#define SC_OPCODE_GET_SEC           121
#define SC_OPCODE_PLUS_MINUS        122     /* miscellaneous */
#define SC_OPCODE_ABS               123
#define SC_OPCODE_INT               124
#define SC_OPCODE_PHI               125
#define SC_OPCODE_GAUSS             126
#define SC_OPCODE_IS_EMPTY          127     /* obtain type */
#define SC_OPCODE_IS_STRING         128
#define SC_OPCODE_IS_NON_STRING     129
#define SC_OPCODE_IS_LOGICAL        130
#define SC_OPCODE_TYPE              131
#define SC_OPCODE_IS_REF            132
#define SC_OPCODE_IS_VALUE          133
#define SC_OPCODE_IS_FORMULA        134
#define SC_OPCODE_IS_NV             135
#define SC_OPCODE_IS_ERR            136
#define SC_OPCODE_IS_ERROR          137
#define SC_OPCODE_IS_EVEN           138
#define SC_OPCODE_IS_ODD            139
#define SC_OPCODE_N                 140
#define SC_OPCODE_GET_DATE_VALUE    141     /* string functions */
#define SC_OPCODE_GET_TIME_VALUE    142
#define SC_OPCODE_CODE              143
#define SC_OPCODE_TRIM              144
#define SC_OPCODE_UPPER             145
#define SC_OPCODE_PROPER            146
#define SC_OPCODE_LOWER             147
#define SC_OPCODE_LEN               148
#define SC_OPCODE_T                 149     /* miscellaneous, part 21 */
#define SC_OPCODE_VALUE             150
#define SC_OPCODE_CLEAN             151
#define SC_OPCODE_CHAR              152
#define SC_OPCODE_LOG10             153
#define SC_OPCODE_EVEN              154
#define SC_OPCODE_ODD               155
#define SC_OPCODE_STD_NORM_DIST     156
#define SC_OPCODE_FISHER            157
#define SC_OPCODE_FISHER_INV        158
#define SC_OPCODE_S_NORM_INV        159
#define SC_OPCODE_GAMMA_LN          160
#define SC_OPCODE_ERROR_TYPE        161
#define SC_OPCODE_FORMULA           163
#define SC_OPCODE_ARABIC            164
#define SC_OPCODE_INFO              165
#define SC_OPCODE_BAHTTEXT          166
#define SC_OPCODE_JIS               167
#define SC_OPCODE_ASC               168
#define SC_OPCODE_UNICODE           169
#define SC_OPCODE_UNICHAR           170
#define SC_OPCODE_GAMMA             171
#define SC_OPCODE_GAMMA_LN_MS       172
#define SC_OPCODE_ERF_MS            173
#define SC_OPCODE_ERFC_MS           174
#define SC_OPCODE_ERROR_TYPE_ODF    175
#define SC_OPCODE_ENCODEURL         176
#define SC_OPCODE_ISOWEEKNUM        177
#define SC_OPCODE_NOT               178
#define SC_OPCODE_NEG               179
#define SC_OPCODE_STOP_1_PAR        180

/*** 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_GCD               210
#define SC_OPCODE_LCM               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_NPV               229
#define SC_OPCODE_IRR               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_COMBIN            240
#define SC_OPCODE_COMBIN_A          241
#define SC_OPCODE_PERMUT            242
#define SC_OPCODE_PERMUTATION_A     243
#define SC_OPCODE_PV                244
#define SC_OPCODE_SYD               245
#define SC_OPCODE_DDB               246
#define SC_OPCODE_DB                247
#define SC_OPCODE_VBD               248
#define SC_OPCODE_PDURATION         249
#define SC_OPCODE_SLN               250
#define SC_OPCODE_PMT               251
#define SC_OPCODE_COLUMNS           252
#define SC_OPCODE_ROWS              253
#define SC_OPCODE_COLUMN            254
#define SC_OPCODE_ROW               255
#define SC_OPCODE_RRI               256
#define SC_OPCODE_FV                257
#define SC_OPCODE_NPER              258
#define SC_OPCODE_RATE              259
#define SC_OPCODE_IPMT              260
#define SC_OPCODE_PPMT              261
#define SC_OPCODE_CUM_IPMT          262
#define SC_OPCODE_CUM_PRINC         263
#define SC_OPCODE_EFFECT            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_CRIT_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_SKEW              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_LINEST            352
#define SC_OPCODE_LOGEST            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_SHEET             371
#define SC_OPCODE_SHEETS            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_OOO       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_X_LOOKUP          388
#define SC_OPCODE_X_MATCH           389
#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_BITAND            395
#define SC_OPCODE_BITOR             396
#define SC_OPCODE_BITXOR            397
#define SC_OPCODE_BITRSHIFT         398
#define SC_OPCODE_BITLSHIFT         399
#define SC_OPCODE_GET_DATEDIF       400
#define SC_OPCODE_XOR               401
#define SC_OPCODE_AVERAGE_IF        402
#define SC_OPCODE_SUM_IFS           403
#define SC_OPCODE_AVERAGE_IFS       404
#define SC_OPCODE_COUNT_IFS         405
#define SC_OPCODE_SKEWP             406
#define SC_OPCODE_LENB              407
#define SC_OPCODE_RIGHTB            408
#define SC_OPCODE_LEFTB             409
#define SC_OPCODE_MIDB              410
#define SC_OPCODE_FILTERXML         411
#define SC_OPCODE_WEBSERVICE        412
#define SC_OPCODE_COVARIANCE_S      413
#define SC_OPCODE_COVARIANCE_P      414
#define SC_OPCODE_ST_DEV_P_MS       415
#define SC_OPCODE_ST_DEV_S          416
#define SC_OPCODE_VAR_P_MS          417
#define SC_OPCODE_VAR_S             418
#define SC_OPCODE_BETA_DIST_MS      419
#define SC_OPCODE_BETA_INV_MS       420
#define SC_OPCODE_BINOM_DIST_MS     421
#define SC_OPCODE_BINOM_INV         422
#define SC_OPCODE_CHI_DIST_MS       423
#define SC_OPCODE_CHI_INV_MS        424
#define SC_OPCODE_CHI_TEST_MS       425
#define SC_OPCODE_CHISQ_DIST_MS     426
#define SC_OPCODE_CHISQ_INV_MS      427
#define SC_OPCODE_CONFIDENCE_N      428
#define SC_OPCODE_CONFIDENCE_T      429
#define SC_OPCODE_F_DIST_LT         430
#define SC_OPCODE_F_DIST_RT         431
#define SC_OPCODE_F_INV_LT          432
#define SC_OPCODE_F_INV_RT          433
#define SC_OPCODE_F_TEST_MS         434
#define SC_OPCODE_EXP_DIST_MS       435
#define SC_OPCODE_HYP_GEOM_DIST_MS  436
#define SC_OPCODE_POISSON_DIST_MS   437
#define SC_OPCODE_WEIBULL_MS        438
#define SC_OPCODE_GAMMA_DIST_MS     439
#define SC_OPCODE_GAMMA_INV_MS      440
#define SC_OPCODE_LOG_NORM_DIST_MS  441
#define SC_OPCODE_LOG_INV_MS        442
#define SC_OPCODE_NORM_DIST_MS      443
#define SC_OPCODE_NORM_INV_MS       444
#define SC_OPCODE_STD_NORM_DIST_MS  445
#define SC_OPCODE_S_NORM_INV_MS     446
#define SC_OPCODE_T_DIST_MS         447
#define SC_OPCODE_T_DIST_RT         448
#define SC_OPCODE_T_DIST_2T         449
#define SC_OPCODE_T_INV_2T          450
#define SC_OPCODE_T_INV_MS          451
#define SC_OPCODE_T_TEST_MS         452
#define SC_OPCODE_PERCENTILE_INC    453
#define SC_OPCODE_PERCENT_RANK_INC  454
#define SC_OPCODE_QUARTILE_INC      455
#define SC_OPCODE_RANK_EQ           456
#define SC_OPCODE_PERCENTILE_EXC    457
#define SC_OPCODE_PERCENT_RANK_EXC  458
#define SC_OPCODE_QUARTILE_EXC      459
#define SC_OPCODE_RANK_AVG          460
#define SC_OPCODE_MODAL_VALUE_MS    461
#define SC_OPCODE_MODAL_VALUE_MULTI 462
#define SC_OPCODE_NEG_BINOM_DIST_MS 463
#define SC_OPCODE_Z_TEST_MS         464
#define SC_OPCODE_CEIL_MS           465
#define SC_OPCODE_CEIL_ISO          466
#define SC_OPCODE_FLOOR_MS          467
#define SC_OPCODE_NETWORKDAYS_MS    468
#define SC_OPCODE_WORKDAY_MS        469
#define SC_OPCODE_AGGREGATE         470
#define SC_OPCODE_COLOR             471
#define SC_OPCODE_CEIL_MATH         472
#define SC_OPCODE_CEIL_PRECISE      473
#define SC_OPCODE_NETWORKDAYS       474
#define SC_OPCODE_FLOOR_MATH        475
#define SC_OPCODE_FLOOR_PRECISE     476
#define SC_OPCODE_RAWSUBTRACT       477
#define SC_OPCODE_WEEKNUM_OOO       478
#define SC_OPCODE_FORECAST_ETS_ADD  479
#define SC_OPCODE_FORECAST_ETS_SEA  480
#define SC_OPCODE_FORECAST_ETS_MUL  481
#define SC_OPCODE_FORECAST_ETS_PIA  482
#define SC_OPCODE_FORECAST_ETS_PIM  483
#define SC_OPCODE_FORECAST_ETS_STA  484
#define SC_OPCODE_FORECAST_ETS_STM  485
#define SC_OPCODE_FORECAST_LIN      486
#define SC_OPCODE_CONCAT_MS         487
#define SC_OPCODE_TEXTJOIN_MS       488
#define SC_OPCODE_IFS_MS            489
#define SC_OPCODE_SWITCH_MS         490
#define SC_OPCODE_MINIFS_MS         491
#define SC_OPCODE_MAXIFS_MS         492
#define SC_OPCODE_ROUNDSIG          493
#define SC_OPCODE_REPLACEB          494
#define SC_OPCODE_FINDB             495
#define SC_OPCODE_SEARCHB           496
#define SC_OPCODE_REGEX             497
#define SC_OPCODE_FOURIER           498
#define SC_OPCODE_RANDBETWEEN_NV    499
#define SC_OPCODE_FILTER            500
#define SC_OPCODE_SORT              501
#define SC_OPCODE_SORTBY            502
#define SC_OPCODE_STOP_2_PAR        503     /* last function with two or more parameters' OpCode + 1 */

#define SC_OPCODE_STOP_FUNCTION     SC_OPCODE_STOP_2_PAR            /* last function's OpCode + 1 */
#define SC_OPCODE_LAST_OPCODE_ID    (SC_OPCODE_STOP_FUNCTION - 1)   /* last OpCode */

/*** Internal ***/
#define SC_OPCODE_INTERNAL_BEGIN   9999
#define SC_OPCODE_TTT              9999
#define SC_OPCODE_DEBUG_VAR       10000
#define SC_OPCODE_INTERNAL_END    10000

/*** from here on ExtraData contained ***/
#define SC_OPCODE_DATA_TOKEN_1    10001

#define SC_OPCODE_NONE           0xFFFF

#endif /* FORMULA_COMPILER_HRC */

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */