blob: e847011ccd81bb357ffe28e7e89ddd1c7728680a [file] [log] [blame]
/**************************************************************
*
* 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_OPCODE_HXX
#define FORMULA_OPCODE_HXX
#include "formula/compiler.hrc" // OpCodes
#include <tools/solar.h>
enum OpCodeEnum
{
// Special commands
ocPush = SC_OPCODE_PUSH,
ocCall = SC_OPCODE_CALL,
ocStop = SC_OPCODE_STOP,
ocExternal = SC_OPCODE_EXTERNAL,
ocName = SC_OPCODE_NAME,
ocExternalRef = SC_OPCODE_EXTERNAL_REF,
// Jump commands
ocIf = SC_OPCODE_IF,
ocChose = SC_OPCODE_CHOSE,
// Parentheses and separators
ocOpen = SC_OPCODE_OPEN,
ocClose = SC_OPCODE_CLOSE,
ocSep = SC_OPCODE_SEP,
ocArrayOpen = SC_OPCODE_ARRAY_OPEN,
ocArrayClose = SC_OPCODE_ARRAY_CLOSE,
ocArrayRowSep = SC_OPCODE_ARRAY_ROW_SEP,
ocArrayColSep = SC_OPCODE_ARRAY_COL_SEP,
// Special OpCodes
ocMissing = SC_OPCODE_MISSING,
ocBad = SC_OPCODE_BAD,
ocSpaces = SC_OPCODE_SPACES,
ocMatRef = SC_OPCODE_MAT_REF,
// Access commands
ocDBArea = SC_OPCODE_DB_AREA,
ocMacro = SC_OPCODE_MACRO,
ocColRowName = SC_OPCODE_COL_ROW_NAME,
ocColRowNameAuto = SC_OPCODE_COL_ROW_NAME_AUTO,
// Percent operator _follows_ value
ocPercentSign = SC_OPCODE_PERCENT_SIGN,
// Error constants
ocErrNull = SC_OPCODE_ERROR_NULL,
ocErrDivZero = SC_OPCODE_ERROR_DIVZERO,
ocErrValue = SC_OPCODE_ERROR_VALUE,
ocErrRef = SC_OPCODE_ERROR_REF,
ocErrName = SC_OPCODE_ERROR_NAME,
ocErrNum = SC_OPCODE_ERROR_NUM,
ocErrNA = SC_OPCODE_ERROR_NA,
// Binary operators
ocAdd = SC_OPCODE_ADD,
ocSub = SC_OPCODE_SUB,
ocMul = SC_OPCODE_MUL,
ocDiv = SC_OPCODE_DIV,
ocAmpersand = SC_OPCODE_AMPERSAND,
ocPow = SC_OPCODE_POW,
ocEqual = SC_OPCODE_EQUAL,
ocNotEqual = SC_OPCODE_NOT_EQUAL,
ocLess = SC_OPCODE_LESS,
ocGreater = SC_OPCODE_GREATER,
ocLessEqual = SC_OPCODE_LESS_EQUAL,
ocGreaterEqual = SC_OPCODE_GREATER_EQUAL,
ocAnd = SC_OPCODE_AND,
ocOr = SC_OPCODE_OR,
ocIntersect = SC_OPCODE_INTERSECT,
ocUnion = SC_OPCODE_UNION,
ocRange = SC_OPCODE_RANGE,
// Unary operators
ocNot = SC_OPCODE_NOT,
ocNeg = SC_OPCODE_NEG,
ocNegSub = SC_OPCODE_NEG_SUB,
// Functions with no parameters
ocPi = SC_OPCODE_PI,
ocRandom = SC_OPCODE_RANDOM,
ocTrue = SC_OPCODE_TRUE,
ocFalse = SC_OPCODE_FALSE,
ocGetActDate = SC_OPCODE_GET_ACT_DATE,
ocGetActTime = SC_OPCODE_GET_ACT_TIME,
ocNotAvail = SC_OPCODE_NO_VALUE,
ocCurrent = SC_OPCODE_CURRENT,
// Functions with one parameter
ocDeg = SC_OPCODE_DEG,
ocRad = SC_OPCODE_RAD,
ocSin = SC_OPCODE_SIN,
ocCos = SC_OPCODE_COS,
ocTan = SC_OPCODE_TAN,
ocCot = SC_OPCODE_COT,
ocArcSin = SC_OPCODE_ARC_SIN,
ocArcCos = SC_OPCODE_ARC_COS,
ocArcTan = SC_OPCODE_ARC_TAN,
ocArcCot = SC_OPCODE_ARC_COT,
ocSinHyp = SC_OPCODE_SIN_HYP,
ocCosHyp = SC_OPCODE_COS_HYP,
ocTanHyp = SC_OPCODE_TAN_HYP,
ocCotHyp = SC_OPCODE_COT_HYP,
ocArcSinHyp = SC_OPCODE_ARC_SIN_HYP,
ocArcCosHyp = SC_OPCODE_ARC_COS_HYP,
ocArcTanHyp = SC_OPCODE_ARC_TAN_HYP,
ocArcCotHyp = SC_OPCODE_ARC_COT_HYP,
ocCosecant = SC_OPCODE_COSECANT,
ocSecant = SC_OPCODE_SECANT,
ocCosecantHyp = SC_OPCODE_COSECANT_HYP,
ocSecantHyp = SC_OPCODE_SECANT_HYP,
ocExp = SC_OPCODE_EXP,
ocLn = SC_OPCODE_LN,
ocSqrt = SC_OPCODE_SQRT,
ocFact = SC_OPCODE_FACT,
ocGetYear = SC_OPCODE_GET_YEAR,
ocGetMonth = SC_OPCODE_GET_MONTH,
ocGetDay = SC_OPCODE_GET_DAY,
ocGetHour = SC_OPCODE_GET_HOUR,
ocGetMin = SC_OPCODE_GET_MIN,
ocGetSec = SC_OPCODE_GET_SEC,
ocPlusMinus = SC_OPCODE_PLUS_MINUS,
ocAbs = SC_OPCODE_ABS,
ocInt = SC_OPCODE_INT,
ocPhi = SC_OPCODE_PHI,
ocGauss = SC_OPCODE_GAUSS,
ocIsEmpty = SC_OPCODE_IS_EMPTY,
ocIsString = SC_OPCODE_IS_STRING,
ocIsNonString = SC_OPCODE_IS_NON_STRING,
ocIsLogical = SC_OPCODE_IS_LOGICAL,
ocType = SC_OPCODE_TYPE,
ocCell = SC_OPCODE_CELL,
ocIsRef = SC_OPCODE_IS_REF,
ocIsValue = SC_OPCODE_IS_VALUE,
ocIsFormula = SC_OPCODE_IS_FORMULA,
ocIsNA = SC_OPCODE_IS_NV,
ocIsErr = SC_OPCODE_IS_ERR,
ocIsError = SC_OPCODE_IS_ERROR,
ocIsEven = SC_OPCODE_IS_EVEN,
ocIsOdd = SC_OPCODE_IS_ODD,
ocN = SC_OPCODE_N,
// String functions
ocGetDateValue = SC_OPCODE_GET_DATE_VALUE,
ocGetTimeValue = SC_OPCODE_GET_TIME_VALUE,
ocCode = SC_OPCODE_CODE,
ocTrim = SC_OPCODE_TRIM,
ocUpper = SC_OPCODE_UPPER,
ocPropper = SC_OPCODE_PROPPER,
ocLower = SC_OPCODE_LOWER,
ocLen = SC_OPCODE_LEN,
ocT = SC_OPCODE_T,
ocValue = SC_OPCODE_VALUE,
ocClean = SC_OPCODE_CLEAN,
ocChar = SC_OPCODE_CHAR,
ocLog10 = SC_OPCODE_LOG10,
ocEven = SC_OPCODE_EVEN,
ocOdd = SC_OPCODE_ODD,
ocStdNormDist = SC_OPCODE_STD_NORM_DIST,
ocFisher = SC_OPCODE_FISHER,
ocFisherInv = SC_OPCODE_FISHER_INV,
ocSNormInv = SC_OPCODE_S_NORM_INV,
ocGammaLn = SC_OPCODE_GAMMA_LN,
ocGamma = SC_OPCODE_GAMMA,
ocErrorType = SC_OPCODE_ERROR_TYPE,
ocErrCell = SC_OPCODE_ERR_CELL,
ocFormula = SC_OPCODE_FORMULA,
ocArabic = SC_OPCODE_ARABIC,
ocInfo = SC_OPCODE_INFO,
ocBahtText = SC_OPCODE_BAHTTEXT,
ocJis = SC_OPCODE_JIS,
ocAsc = SC_OPCODE_ASC,
ocUnicode = SC_OPCODE_UNICODE,
ocUnichar = SC_OPCODE_UNICHAR,
// Functions with more than one parameters
ocArcTan2 = SC_OPCODE_ARC_TAN_2,
ocCeil = SC_OPCODE_CEIL,
ocFloor = SC_OPCODE_FLOOR,
ocRound = SC_OPCODE_ROUND,
ocRoundUp = SC_OPCODE_ROUND_UP,
ocRoundDown = SC_OPCODE_ROUND_DOWN,
ocTrunc = SC_OPCODE_TRUNC,
ocLog = SC_OPCODE_LOG,
ocPower = SC_OPCODE_POWER,
ocGCD = SC_OPCODE_GGT,
ocLCM = SC_OPCODE_KGV,
ocMod = SC_OPCODE_MOD,
ocSumProduct = SC_OPCODE_SUM_PRODUCT,
ocSumSQ = SC_OPCODE_SUM_SQ,
ocSumX2MY2 = SC_OPCODE_SUM_X2MY2,
ocSumX2DY2 = SC_OPCODE_SUM_X2DY2,
ocSumXMY2 = SC_OPCODE_SUM_XMY2,
ocGetDate = SC_OPCODE_GET_DATE,
ocGetTime = SC_OPCODE_GET_TIME,
ocGetDiffDate = SC_OPCODE_GET_DIFF_DATE,
ocGetDiffDate360 = SC_OPCODE_GET_DIFF_DATE_360,
ocMin = SC_OPCODE_MIN,
ocMax = SC_OPCODE_MAX,
ocSum = SC_OPCODE_SUM,
ocProduct = SC_OPCODE_PRODUCT,
ocAverage = SC_OPCODE_AVERAGE,
ocCount = SC_OPCODE_COUNT,
ocCount2 = SC_OPCODE_COUNT_2,
ocNPV = SC_OPCODE_NBW,
ocIRR = SC_OPCODE_IKV,
ocMIRR = SC_OPCODE_MIRR,
ocISPMT = SC_OPCODE_ISPMT,
ocVar = SC_OPCODE_VAR,
ocVarP = SC_OPCODE_VAR_P,
ocStDev = SC_OPCODE_ST_DEV,
ocStDevP = SC_OPCODE_ST_DEV_P,
ocB = SC_OPCODE_B,
ocNormDist = SC_OPCODE_NORM_DIST,
ocExpDist = SC_OPCODE_EXP_DIST,
ocBinomDist = SC_OPCODE_BINOM_DIST,
ocPoissonDist = SC_OPCODE_POISSON_DIST,
ocKombin = SC_OPCODE_KOMBIN,
ocKombin2 = SC_OPCODE_KOMBIN_2,
ocVariationen = SC_OPCODE_VARIATIONEN,
ocVariationen2 = SC_OPCODE_VARIATIONEN_2,
ocBW = SC_OPCODE_BW,
ocDIA = SC_OPCODE_DIA,
ocGDA = SC_OPCODE_GDA,
ocGDA2 = SC_OPCODE_GDA_2,
ocVBD = SC_OPCODE_VBD,
ocLaufz = SC_OPCODE_LAUFZ,
ocLIA = SC_OPCODE_LIA,
ocRMZ = SC_OPCODE_RMZ,
ocColumns = SC_OPCODE_COLUMNS,
ocRows = SC_OPCODE_ROWS,
ocColumn = SC_OPCODE_COLUMN,
ocRow = SC_OPCODE_ROW,
ocZGZ = SC_OPCODE_ZGZ,
ocZW = SC_OPCODE_ZW,
ocZZR = SC_OPCODE_ZZR,
ocZins = SC_OPCODE_ZINS,
ocZinsZ = SC_OPCODE_ZINS_Z,
ocKapz = SC_OPCODE_KAPZ,
ocKumZinsZ = SC_OPCODE_KUM_ZINS_Z,
ocKumKapZ = SC_OPCODE_KUM_KAP_Z,
ocEffektiv = SC_OPCODE_EFFEKTIV,
ocNominal = SC_OPCODE_NOMINAL,
ocSubTotal = SC_OPCODE_SUB_TOTAL,
// Database functions
ocDBSum = SC_OPCODE_DB_SUM,
ocDBCount = SC_OPCODE_DB_COUNT,
ocDBCount2 = SC_OPCODE_DB_COUNT_2,
ocDBAverage = SC_OPCODE_DB_AVERAGE,
ocDBGet = SC_OPCODE_DB_GET,
ocDBMax = SC_OPCODE_DB_MAX,
ocDBMin = SC_OPCODE_DB_MIN,
ocDBProduct = SC_OPCODE_DB_PRODUCT,
ocDBStdDev = SC_OPCODE_DB_STD_DEV,
ocDBStdDevP = SC_OPCODE_DB_STD_DEV_P,
ocDBVar = SC_OPCODE_DB_VAR,
ocDBVarP = SC_OPCODE_DB_VAR_P,
// Management functions
ocIndirect = SC_OPCODE_INDIRECT,
ocIndirectXL = SC_OPCODE_INDIRECT_XL,
ocAddress = SC_OPCODE_ADDRESS,
ocAddressXL = SC_OPCODE_ADDRESS_XL,
ocMatch = SC_OPCODE_MATCH,
ocCountEmptyCells = SC_OPCODE_COUNT_EMPTY_CELLS,
ocCountIf = SC_OPCODE_COUNT_IF,
ocSumIf = SC_OPCODE_SUM_IF,
ocAverageIf = SC_OPCODE_AVERAGE_IF,
ocSumIfs = SC_OPCODE_SUM_IFS,
ocAverageIfs = SC_OPCODE_AVERAGE_IFS,
ocCountIfs = SC_OPCODE_COUNT_IFS,
ocLookup = SC_OPCODE_LOOKUP,
ocVLookup = SC_OPCODE_V_LOOKUP,
ocHLookup = SC_OPCODE_H_LOOKUP,
ocMultiArea = SC_OPCODE_MULTI_AREA,
ocOffset = SC_OPCODE_OFFSET,
ocIndex = SC_OPCODE_INDEX,
ocAreas = SC_OPCODE_AREAS,
// String functions
ocCurrency = SC_OPCODE_CURRENCY,
ocReplace = SC_OPCODE_REPLACE,
ocFixed = SC_OPCODE_FIXED,
ocFind = SC_OPCODE_FIND,
ocExact = SC_OPCODE_EXACT,
ocLeft = SC_OPCODE_LEFT,
ocRight = SC_OPCODE_RIGHT,
ocSearch = SC_OPCODE_SEARCH,
ocMid = SC_OPCODE_MID,
ocText = SC_OPCODE_TEXT,
ocSubstitute = SC_OPCODE_SUBSTITUTE,
ocRept = SC_OPCODE_REPT,
ocConcat = SC_OPCODE_CONCAT,
ocLenB = SC_OPCODE_LENB,
ocRightB = SC_OPCODE_RIGHTB,
ocLeftB = SC_OPCODE_LEFTB,
ocMidB = SC_OPCODE_MIDB,
// Matrix functions
ocMatValue = SC_OPCODE_MAT_VALUE,
ocMatDet = SC_OPCODE_MAT_DET,
ocMatInv = SC_OPCODE_MAT_INV,
ocMatMult = SC_OPCODE_MAT_MULT,
ocMatTrans = SC_OPCODE_MAT_TRANS,
ocMatrixUnit = SC_OPCODE_MATRIX_UNIT,
// BackSolver
ocBackSolver = SC_OPCODE_BACK_SOLVER,
// Statistical functions
ocHypGeomDist = SC_OPCODE_HYP_GEOM_DIST,
ocLogNormDist = SC_OPCODE_LOG_NORM_DIST,
ocTDist = SC_OPCODE_T_DIST,
ocFDist = SC_OPCODE_F_DIST,
ocChiDist = SC_OPCODE_CHI_DIST,
ocChiSqDist = SC_OPCODE_CHISQ_DIST,
ocChiSqInv = SC_OPCODE_CHISQ_INV,
ocWeibull = SC_OPCODE_WEIBULL,
ocNegBinomVert = SC_OPCODE_NEG_BINOM_VERT,
ocKritBinom = SC_OPCODE_KRIT_BINOM,
ocKurt = SC_OPCODE_KURT,
ocHarMean = SC_OPCODE_HAR_MEAN,
ocGeoMean = SC_OPCODE_GEO_MEAN,
ocStandard = SC_OPCODE_STANDARD,
ocAveDev = SC_OPCODE_AVE_DEV,
ocSchiefe = SC_OPCODE_SCHIEFE,
ocDevSq = SC_OPCODE_DEV_SQ,
ocMedian = SC_OPCODE_MEDIAN,
ocModalValue = SC_OPCODE_MODAL_VALUE,
ocZTest = SC_OPCODE_Z_TEST,
ocTTest = SC_OPCODE_T_TEST,
ocRank = SC_OPCODE_RANK,
ocPercentile = SC_OPCODE_PERCENTILE,
ocPercentrank = SC_OPCODE_PERCENT_RANK,
ocLarge = SC_OPCODE_LARGE,
ocSmall = SC_OPCODE_SMALL,
ocFrequency = SC_OPCODE_FREQUENCY,
ocQuartile = SC_OPCODE_QUARTILE,
ocNormInv = SC_OPCODE_NORM_INV,
ocConfidence = SC_OPCODE_CONFIDENCE,
ocFTest = SC_OPCODE_F_TEST,
ocTrimMean = SC_OPCODE_TRIM_MEAN,
ocProb = SC_OPCODE_PROB,
ocCorrel = SC_OPCODE_CORREL,
ocCovar = SC_OPCODE_COVAR,
ocPearson = SC_OPCODE_PEARSON,
ocRSQ = SC_OPCODE_RSQ,
ocSTEYX = SC_OPCODE_STEYX,
ocSlope = SC_OPCODE_SLOPE,
ocIntercept = SC_OPCODE_INTERCEPT,
ocTrend = SC_OPCODE_TREND,
ocGrowth = SC_OPCODE_GROWTH,
ocRGP = SC_OPCODE_RGP,
ocRKP = SC_OPCODE_RKP,
ocForecast = SC_OPCODE_FORECAST,
ocChiInv = SC_OPCODE_CHI_INV,
ocGammaDist = SC_OPCODE_GAMMA_DIST,
ocGammaInv = SC_OPCODE_GAMMA_INV,
ocTInv = SC_OPCODE_T_INV,
ocFInv = SC_OPCODE_F_INV,
ocChiTest = SC_OPCODE_CHI_TEST,
ocLogInv = SC_OPCODE_LOG_INV,
ocTableOp = SC_OPCODE_TABLE_OP,
ocBetaDist = SC_OPCODE_BETA_DIST,
ocBetaInv = SC_OPCODE_BETA_INV,
// miscellaneous
ocWeek = SC_OPCODE_WEEK,
ocGetDayOfWeek = SC_OPCODE_GET_DAY_OF_WEEK,
ocNoName = SC_OPCODE_NO_NAME,
ocStyle = SC_OPCODE_STYLE,
ocDde = SC_OPCODE_DDE,
ocBase = SC_OPCODE_BASE,
ocTable = SC_OPCODE_TABLE,
ocTables = SC_OPCODE_TABLES,
ocMinA = SC_OPCODE_MIN_A,
ocMaxA = SC_OPCODE_MAX_A,
ocAverageA = SC_OPCODE_AVERAGE_A,
ocStDevA = SC_OPCODE_ST_DEV_A,
ocStDevPA = SC_OPCODE_ST_DEV_P_A,
ocVarA = SC_OPCODE_VAR_A,
ocVarPA = SC_OPCODE_VAR_P_A,
ocEasterSunday = SC_OPCODE_EASTERSUNDAY,
ocDecimal = SC_OPCODE_DECIMAL,
ocConvert = SC_OPCODE_CONVERT,
ocRoman = SC_OPCODE_ROMAN,
ocHyperLink = SC_OPCODE_HYPERLINK,
ocGetPivotData = SC_OPCODE_GET_PIVOT_DATA,
ocEuroConvert = SC_OPCODE_EUROCONVERT,
ocNumberValue = SC_OPCODE_NUMBERVALUE,
ocXor = SC_OPCODE_XOR,
// internal stuff
ocInternalBegin = SC_OPCODE_INTERNAL_BEGIN,
ocTTT = SC_OPCODE_TTT,
ocInternalEnd = SC_OPCODE_INTERNAL_END,
// from here on ExtraData
ocDataToken1 = SC_OPCODE_DATA_TOKEN_1,
// no OpCode
ocNone = SC_OPCODE_NONE
};
#ifndef DBG_UTIL
// save memory since compilers tend to int an enum
typedef sal_uInt16 OpCode;
#else
// have enum names in debugger
typedef OpCodeEnum OpCode;
#endif
#endif