include/formula/opcode.hxx | 475 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 475 insertions(+)
New commits: commit bfa72a6a2a83ed10793d9723a1db24ec8ee03ed9 Author: Tor Lillqvist <t...@collabora.com> Date: Fri Nov 24 22:37:26 2017 +0200 Add a debugging output OpCodeEnumToString() function Change-Id: I5382107dc556df822292e72af48d23e04a3408a2 Reviewed-on: https://gerrit.libreoffice.org/45261 Reviewed-by: Tor Lillqvist <t...@collabora.com> Tested-by: Tor Lillqvist <t...@collabora.com> diff --git a/include/formula/opcode.hxx b/include/formula/opcode.hxx index 181de360864e..88527b9244ee 100644 --- a/include/formula/opcode.hxx +++ b/include/formula/opcode.hxx @@ -20,6 +20,8 @@ #ifndef INCLUDED_FORMULA_OPCODE_HXX #define INCLUDED_FORMULA_OPCODE_HXX +#include <sstream> + #include <formula/compiler.hxx> #include <sal/types.h> @@ -511,6 +513,479 @@ enum OpCode : sal_uInt16 ocNone = SC_OPCODE_NONE }; +// Only to be used for debugging output. No guarantee of stability of the +// return value. + +// Turn this into an operator<< when OpCode becomes a scoped enum + +inline std::string OpCodeEnumToString(OpCode eCode) +{ + switch (eCode) + { + case ocPush: return "Push"; + case ocCall: return "Call"; + case ocStop: return "Stop"; + case ocExternal: return "External"; + case ocName: return "Name"; + case ocExternalRef: return "ExternalRef"; + case ocIf: return "If"; + case ocIfError: return "IfError"; + case ocIfNA: return "IfNA"; + case ocChoose: return "Choose"; + case ocOpen: return "Open"; + case ocClose: return "Close"; + case ocTableRefOpen: return "TableRefOpen"; + case ocTableRefClose: return "TableRefClose"; + case ocSep: return "Sep"; + case ocArrayOpen: return "ArrayOpen"; + case ocArrayClose: return "ArrayClose"; + case ocArrayRowSep: return "ArrayRowSep"; + case ocArrayColSep: return "ArrayColSep"; + case ocMissing: return "Missing"; + case ocBad: return "Bad"; + case ocStringXML: return "StringXML"; + case ocSpaces: return "Spaces"; + case ocMatRef: return "MatRef"; + case ocTableRefItemAll: return "TableRefItemAll"; + case ocTableRefItemHeaders: return "TableRefItemHeaders"; + case ocTableRefItemData: return "TableRefItemData"; + case ocTableRefItemTotals: return "TableRefItemTotals"; + case ocTableRefItemThisRow: return "TableRefItemThisRow"; + case ocSkip: return "Skip"; + case ocDBArea: return "DBArea"; + case ocTableRef: return "TableRef"; + case ocMacro: return "Macro"; + case ocColRowName: return "ColRowName"; + case ocColRowNameAuto: return "ColRowNameAuto"; + case ocPercentSign: return "PercentSign"; + case ocErrNull: return "ErrNull"; + case ocErrDivZero: return "ErrDivZero"; + case ocErrValue: return "ErrValue"; + case ocErrRef: return "ErrRef"; + case ocErrName: return "ErrName"; + case ocErrNum: return "ErrNum"; + case ocErrNA: return "ErrNA"; + case ocAdd: return "Add"; + case ocSub: return "Sub"; + case ocMul: return "Mul"; + case ocDiv: return "Div"; + case ocAmpersand: return "Ampersand"; + case ocPow: return "Pow"; + case ocEqual: return "Equal"; + case ocNotEqual: return "NotEqual"; + case ocLess: return "Less"; + case ocGreater: return "Greater"; + case ocLessEqual: return "LessEqual"; + case ocGreaterEqual: return "GreaterEqual"; + case ocAnd: return "And"; + case ocOr: return "Or"; + case ocXor: return "Xor"; + case ocIntersect: return "Intersect"; + case ocUnion: return "Union"; + case ocRange: return "Range"; + case ocNot: return "Not"; + case ocNeg: return "Neg"; + case ocNegSub: return "NegSub"; + case ocPi: return "Pi"; + case ocRandom: return "Random"; + case ocTrue: return "True"; + case ocFalse: return "False"; + case ocGetActDate: return "GetActDate"; + case ocGetActTime: return "GetActTime"; + case ocNotAvail: return "NotAvail"; + case ocCurrent: return "Current"; + case ocDeg: return "Deg"; + case ocRad: return "Rad"; + case ocSin: return "Sin"; + case ocCos: return "Cos"; + case ocTan: return "Tan"; + case ocCot: return "Cot"; + case ocArcSin: return "ArcSin"; + case ocArcCos: return "ArcCos"; + case ocArcTan: return "ArcTan"; + case ocArcCot: return "ArcCot"; + case ocSinHyp: return "SinHyp"; + case ocCosHyp: return "CosHyp"; + case ocTanHyp: return "TanHyp"; + case ocCotHyp: return "CotHyp"; + case ocArcSinHyp: return "ArcSinHyp"; + case ocArcCosHyp: return "ArcCosHyp"; + case ocArcTanHyp: return "ArcTanHyp"; + case ocArcCotHyp: return "ArcCotHyp"; + case ocCosecant: return "Cosecant"; + case ocSecant: return "Secant"; + case ocCosecantHyp: return "CosecantHyp"; + case ocSecantHyp: return "SecantHyp"; + case ocExp: return "Exp"; + case ocLn: return "Ln"; + case ocSqrt: return "Sqrt"; + case ocFact: return "Fact"; + case ocGetYear: return "GetYear"; + case ocGetMonth: return "GetMonth"; + case ocGetDay: return "GetDay"; + case ocGetHour: return "GetHour"; + case ocGetMin: return "GetMin"; + case ocGetSec: return "GetSec"; + case ocPlusMinus: return "PlusMinus"; + case ocAbs: return "Abs"; + case ocInt: return "Int"; + case ocPhi: return "Phi"; + case ocGauss: return "Gauss"; + case ocIsEmpty: return "IsEmpty"; + case ocIsString: return "IsString"; + case ocIsNonString: return "IsNonString"; + case ocIsLogical: return "IsLogical"; + case ocType: return "Type"; + case ocCell: return "Cell"; + case ocIsRef: return "IsRef"; + case ocIsValue: return "IsValue"; + case ocIsFormula: return "IsFormula"; + case ocIsNA: return "IsNA"; + case ocIsErr: return "IsErr"; + case ocIsError: return "IsError"; + case ocIsEven: return "IsEven"; + case ocIsOdd: return "IsOdd"; + case ocN: return "N"; + case ocGetDateValue: return "GetDateValue"; + case ocGetTimeValue: return "GetTimeValue"; + case ocCode: return "Code"; + case ocTrim: return "Trim"; + case ocUpper: return "Upper"; + case ocProper: return "Proper"; + case ocLower: return "Lower"; + case ocLen: return "Len"; + case ocT: return "T"; + case ocValue: return "Value"; + case ocClean: return "Clean"; + case ocChar: return "Char"; + case ocLog10: return "Log10"; + case ocEven: return "Even"; + case ocOdd: return "Odd"; + case ocStdNormDist: return "StdNormDist"; + case ocStdNormDist_MS: return "StdNormDist_MS"; + case ocFisher: return "Fisher"; + case ocFisherInv: return "FisherInv"; + case ocSNormInv: return "SNormInv"; + case ocSNormInv_MS: return "SNormInv_MS"; + case ocGammaLn: return "GammaLn"; + case ocGammaLn_MS: return "GammaLn_MS"; + case ocGamma: return "Gamma"; + case ocErrorType: return "ErrorType"; + case ocErrorType_ODF: return "ErrorType_ODF"; + case ocFormula: return "Formula"; + case ocArabic: return "Arabic"; + case ocInfo: return "Info"; + case ocBahtText: return "BahtText"; + case ocJis: return "Jis"; + case ocAsc: return "Asc"; + case ocUnicode: return "Unicode"; + case ocUnichar: return "Unichar"; + case ocArcTan2: return "ArcTan2"; + case ocCeil: return "Ceil"; + case ocCeil_MS: return "Ceil_MS"; + case ocCeil_Precise: return "Ceil_Precise"; + case ocCeil_ISO: return "Ceil_ISO"; + case ocCeil_Math: return "Ceil_Math"; + case ocFloor: return "Floor"; + case ocFloor_MS: return "Floor_MS"; + case ocFloor_Math: return "Floor_Math"; + case ocFloor_Precise: return "Floor_Precise"; + case ocRound: return "Round"; + case ocRoundUp: return "RoundUp"; + case ocRoundDown: return "RoundDown"; + case ocTrunc: return "Trunc"; + case ocLog: return "Log"; + case ocPower: return "Power"; + case ocGCD: return "GCD"; + case ocLCM: return "LCM"; + case ocMod: return "Mod"; + case ocSumProduct: return "SumProduct"; + case ocSumSQ: return "SumSQ"; + case ocSumX2MY2: return "SumX2MY2"; + case ocSumX2DY2: return "SumX2DY2"; + case ocSumXMY2: return "SumXMY2"; + case ocGetDate: return "GetDate"; + case ocGetTime: return "GetTime"; + case ocGetDiffDate: return "GetDiffDate"; + case ocGetDiffDate360: return "GetDiffDate360"; + case ocGetDateDif: return "GetDateDif"; + case ocMin: return "Min"; + case ocMax: return "Max"; + case ocSum: return "Sum"; + case ocProduct: return "Product"; + case ocAverage: return "Average"; + case ocCount: return "Count"; + case ocCount2: return "Count2"; + case ocNPV: return "NPV"; + case ocIRR: return "IRR"; + case ocMIRR: return "MIRR"; + case ocISPMT: return "ISPMT"; + case ocVar: return "Var"; + case ocVarP: return "VarP"; + case ocVarP_MS: return "VarP_MS"; + case ocVarS: return "VarS"; + case ocStDev: return "StDev"; + case ocStDevP: return "StDevP"; + case ocStDevP_MS: return "StDevP_MS"; + case ocStDevS: return "StDevS"; + case ocB: return "B"; + case ocNormDist: return "NormDist"; + case ocNormDist_MS: return "NormDist_MS"; + case ocExpDist: return "ExpDist"; + case ocExpDist_MS: return "ExpDist_MS"; + case ocBinomDist: return "BinomDist"; + case ocBinomDist_MS: return "BinomDist_MS"; + case ocBinomInv: return "BinomInv"; + case ocPoissonDist: return "PoissonDist"; + case ocPoissonDist_MS: return "PoissonDist_MS"; + case ocCombin: return "Combin"; + case ocCombinA: return "CombinA"; + case ocPermut: return "Permut"; + case ocPermutationA: return "PermutationA"; + case ocPV: return "PV"; + case ocSYD: return "SYD"; + case ocDDB: return "DDB"; + case ocDB: return "DB"; + case ocVBD: return "VBD"; + case ocPDuration: return "PDuration"; + case ocSLN: return "SLN"; + case ocPMT: return "PMT"; + case ocColumns: return "Columns"; + case ocRows: return "Rows"; + case ocColumn: return "Column"; + case ocRow: return "Row"; + case ocRRI: return "RRI"; + case ocFV: return "FV"; + case ocNper: return "Nper"; + case ocRate: return "Rate"; + case ocIpmt: return "Ipmt"; + case ocPpmt: return "Ppmt"; + case ocCumIpmt: return "CumIpmt"; + case ocCumPrinc: return "CumPrinc"; + case ocEffect: return "Effect"; + case ocNominal: return "Nominal"; + case ocSubTotal: return "SubTotal"; + case ocRawSubtract: return "RawSubtract"; + case ocIfs_MS: return "Ifs_MS"; + case ocSwitch_MS: return "Switch_MS"; + case ocMinIfs_MS: return "MinIfs_MS"; + case ocMaxIfs_MS: return "MaxIfs_MS"; + case ocRoundSig: return "RoundSig"; + case ocDBSum: return "DBSum"; + case ocDBCount: return "DBCount"; + case ocDBCount2: return "DBCount2"; + case ocDBAverage: return "DBAverage"; + case ocDBGet: return "DBGet"; + case ocDBMax: return "DBMax"; + case ocDBMin: return "DBMin"; + case ocDBProduct: return "DBProduct"; + case ocDBStdDev: return "DBStdDev"; + case ocDBStdDevP: return "DBStdDevP"; + case ocDBVar: return "DBVar"; + case ocDBVarP: return "DBVarP"; + case ocIndirect: return "Indirect"; + case ocIndirectXL: return "IndirectXL"; + case ocAddress: return "Address"; + case ocAddressXL: return "AddressXL"; + case ocMatch: return "Match"; + case ocCountEmptyCells: return "CountEmptyCells"; + case ocCountIf: return "CountIf"; + case ocSumIf: return "SumIf"; + case ocAverageIf: return "AverageIf"; + case ocSumIfs: return "SumIfs"; + case ocAverageIfs: return "AverageIfs"; + case ocCountIfs: return "CountIfs"; + case ocLookup: return "Lookup"; + case ocVLookup: return "VLookup"; + case ocHLookup: return "HLookup"; + case ocMultiArea: return "MultiArea"; + case ocOffset: return "Offset"; + case ocIndex: return "Index"; + case ocAreas: return "Areas"; + case ocCurrency: return "Currency"; + case ocReplace: return "Replace"; + case ocFixed: return "Fixed"; + case ocFind: return "Find"; + case ocExact: return "Exact"; + case ocLeft: return "Left"; + case ocRight: return "Right"; + case ocSearch: return "Search"; + case ocMid: return "Mid"; + case ocText: return "Text"; + case ocSubstitute: return "Substitute"; + case ocRept: return "Rept"; + case ocConcat: return "Concat"; + case ocConcat_MS: return "Concat_MS"; + case ocTextJoin_MS: return "TextJoin_MS"; + case ocLenB: return "LenB"; + case ocRightB: return "RightB"; + case ocLeftB: return "LeftB"; + case ocMidB: return "MidB"; + case ocReplaceB: return "ReplaceB"; + case ocFindB: return "FindB"; + case ocSearchB: return "SearchB"; + case ocNumberValue: return "NumberValue"; + case ocMatValue: return "MatValue"; + case ocMatDet: return "MatDet"; + case ocMatInv: return "MatInv"; + case ocMatMult: return "MatMult"; + case ocMatTrans: return "MatTrans"; + case ocMatrixUnit: return "MatrixUnit"; + case ocBackSolver: return "BackSolver"; + case ocHypGeomDist: return "HypGeomDist"; + case ocHypGeomDist_MS: return "HypGeomDist_MS"; + case ocLogNormDist: return "LogNormDist"; + case ocLogNormDist_MS: return "LogNormDist_MS"; + case ocTDist: return "TDist"; + case ocTDist_MS: return "TDist_MS"; + case ocTDist_RT: return "TDist_RT"; + case ocTDist_2T: return "TDist_2T"; + case ocFDist: return "FDist"; + case ocFDist_LT: return "FDist_LT"; + case ocFDist_RT: return "FDist_RT"; + case ocChiDist: return "ChiDist"; + case ocChiDist_MS: return "ChiDist_MS"; + case ocChiSqDist: return "ChiSqDist"; + case ocChiSqDist_MS: return "ChiSqDist_MS"; + case ocChiSqInv: return "ChiSqInv"; + case ocChiSqInv_MS: return "ChiSqInv_MS"; + case ocWeibull: return "Weibull"; + case ocWeibull_MS: return "Weibull_MS"; + case ocNegBinomVert: return "NegBinomVert"; + case ocNegBinomDist_MS: return "NegBinomDist_MS"; + case ocCritBinom: return "CritBinom"; + case ocKurt: return "Kurt"; + case ocHarMean: return "HarMean"; + case ocGeoMean: return "GeoMean"; + case ocStandard: return "Standard"; + case ocAveDev: return "AveDev"; + case ocSkew: return "Skew"; + case ocSkewp: return "Skewp"; + case ocDevSq: return "DevSq"; + case ocMedian: return "Median"; + case ocModalValue: return "ModalValue"; + case ocModalValue_MS: return "ModalValue_MS"; + case ocModalValue_Multi: return "ModalValue_Multi"; + case ocZTest: return "ZTest"; + case ocZTest_MS: return "ZTest_MS"; + case ocAggregate: return "Aggregate"; + case ocTTest: return "TTest"; + case ocTTest_MS: return "TTest_MS"; + case ocRank: return "Rank"; + case ocPercentile: return "Percentile"; + case ocPercentrank: return "Percentrank"; + case ocPercentile_Inc: return "Percentile_Inc"; + case ocPercentrank_Inc: return "Percentrank_Inc"; + case ocQuartile_Inc: return "Quartile_Inc"; + case ocRank_Eq: return "Rank_Eq"; + case ocPercentile_Exc: return "Percentile_Exc"; + case ocPercentrank_Exc: return "Percentrank_Exc"; + case ocQuartile_Exc: return "Quartile_Exc"; + case ocRank_Avg: return "Rank_Avg"; + case ocLarge: return "Large"; + case ocSmall: return "Small"; + case ocFrequency: return "Frequency"; + case ocQuartile: return "Quartile"; + case ocNormInv: return "NormInv"; + case ocNormInv_MS: return "NormInv_MS"; + case ocConfidence: return "Confidence"; + case ocConfidence_N: return "Confidence_N"; + case ocConfidence_T: return "Confidence_T"; + case ocFTest: return "FTest"; + case ocFTest_MS: return "FTest_MS"; + case ocTrimMean: return "TrimMean"; + case ocProb: return "Prob"; + case ocCorrel: return "Correl"; + case ocCovar: return "Covar"; + case ocCovarianceP: return "CovarianceP"; + case ocCovarianceS: return "CovarianceS"; + case ocPearson: return "Pearson"; + case ocRSQ: return "RSQ"; + case ocSTEYX: return "STEYX"; + case ocSlope: return "Slope"; + case ocIntercept: return "Intercept"; + case ocTrend: return "Trend"; + case ocGrowth: return "Growth"; + case ocLinest: return "Linest"; + case ocLogest: return "Logest"; + case ocForecast: return "Forecast"; + case ocForecast_ETS_ADD: return "Forecast_ETS_ADD"; + case ocForecast_ETS_SEA: return "Forecast_ETS_SEA"; + case ocForecast_ETS_MUL: return "Forecast_ETS_MUL"; + case ocForecast_ETS_PIA: return "Forecast_ETS_PIA"; + case ocForecast_ETS_PIM: return "Forecast_ETS_PIM"; + case ocForecast_ETS_STA: return "Forecast_ETS_STA"; + case ocForecast_ETS_STM: return "Forecast_ETS_STM"; + case ocForecast_LIN: return "Forecast_LIN"; + case ocChiInv: return "ChiInv"; + case ocChiInv_MS: return "ChiInv_MS"; + case ocGammaDist: return "GammaDist"; + case ocGammaDist_MS: return "GammaDist_MS"; + case ocGammaInv: return "GammaInv"; + case ocGammaInv_MS: return "GammaInv_MS"; + case ocTInv: return "TInv"; + case ocTInv_2T: return "TInv_2T"; + case ocTInv_MS: return "TInv_MS"; + case ocFInv: return "FInv"; + case ocFInv_LT: return "FInv_LT"; + case ocFInv_RT: return "FInv_RT"; + case ocChiTest: return "ChiTest"; + case ocChiTest_MS: return "ChiTest_MS"; + case ocLogInv: return "LogInv"; + case ocLogInv_MS: return "LogInv_MS"; + case ocTableOp: return "TableOp"; + case ocBetaDist: return "BetaDist"; + case ocBetaInv: return "BetaInv"; + case ocBetaDist_MS: return "BetaDist_MS"; + case ocBetaInv_MS: return "BetaInv_MS"; + case ocBitAnd: return "BitAnd"; + case ocBitOr: return "BitOr"; + case ocBitXor: return "BitXor"; + case ocBitRshift: return "BitRshift"; + case ocBitLshift: return "BitLshift"; + case ocWeek: return "Week"; + case ocIsoWeeknum: return "IsoWeeknum"; + case ocWeeknumOOo: return "WeeknumOOo"; + case ocGetDayOfWeek: return "GetDayOfWeek"; + case ocNetWorkdays: return "NetWorkdays"; + case ocNetWorkdays_MS: return "NetWorkdays_MS"; + case ocWorkday_MS: return "Workday_MS"; + case ocNoName: return "NoName"; + case ocStyle: return "Style"; + case ocDde: return "Dde"; + case ocBase: return "Base"; + case ocSheet: return "Sheet"; + case ocSheets: return "Sheets"; + case ocMinA: return "MinA"; + case ocMaxA: return "MaxA"; + case ocAverageA: return "AverageA"; + case ocStDevA: return "StDevA"; + case ocStDevPA: return "StDevPA"; + case ocVarA: return "VarA"; + case ocVarPA: return "VarPA"; + case ocEasterSunday: return "EasterSunday"; + case ocDecimal: return "Decimal"; + case ocConvertOOo: return "ConvertOOo"; + case ocRoman: return "Roman"; + case ocHyperLink: return "HyperLink"; + case ocGetPivotData: return "GetPivotData"; + case ocEuroConvert: return "EuroConvert"; + case ocFilterXML: return "FilterXML"; + case ocWebservice: return "Webservice"; + case ocColor: return "Color"; + case ocErf_MS: return "Erf_MS"; + case ocErfc_MS: return "Erfc_MS"; + case ocEncodeURL: return "EncodeURL"; + case ocTTT: return "TTT"; + case ocDebugVar: return "DebugVar"; + case ocDataToken1: return "DataToken1"; + case ocNone: return "None"; + } + std::ostringstream os; + os << static_cast<int>(eCode); + return os.str(); +} + #endif /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits