[Libreoffice-commits] core.git: include/formula

Tor Lillqvist tml at collabora.com
Sat Nov 25 05:51:57 UTC 2017


 include/formula/opcode.hxx |  475 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 475 insertions(+)

New commits:
commit bfa72a6a2a83ed10793d9723a1db24ec8ee03ed9
Author: Tor Lillqvist <tml at 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 <tml at collabora.com>
    Tested-by: Tor Lillqvist <tml at 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: */


More information about the Libreoffice-commits mailing list