sc/source/filter/excel/xlformula.cxx | 128 +++++++++++++++++++++++++---------- sc/source/filter/oox/formulabase.cxx | 98 +++++++++++++++++--------- 2 files changed, 158 insertions(+), 68 deletions(-)
New commits: commit 24bce470788aa34e5e1bb001250bfa14cee1c75e Author: Eike Rathke <er...@redhat.com> Date: Thu Jan 31 00:53:05 2013 +0100 import/export new Excel 2013 ODF functions, fdo#60032 Change-Id: I8cf726ce5132f0cb712b30a76a76b152a681f4da diff --git a/sc/source/filter/excel/xlformula.cxx b/sc/source/filter/excel/xlformula.cxx index 0cee777..27cbab0 100644 --- a/sc/source/filter/excel/xlformula.cxx +++ b/sc/source/filter/excel/xlformula.cxx @@ -370,13 +370,103 @@ static const XclFunctionInfo saFuncTable_Oox[] = { ocIfError, 255, 3, 3, V, { RO_E, VO, RO }, EXC_FUNCFLAG_EXPORTONLY, EXC_FUNCNAME( "IFERROR" ) } }; -/** Functions new in Excel 2013. */ + +#define EXC_FUNCENTRY_V_VR( opcode, minparam, maxparam, flags, asciiname ) \ + { opcode, NOID, minparam, maxparam, V, { VR }, EXC_FUNCFLAG_IMPORTONLY|(flags), EXC_FUNCNAME( asciiname ) }, \ + { opcode, 255, (minparam)+1, (maxparam)+1, V, { RO_E, RO }, EXC_FUNCFLAG_EXPORTONLY|(flags), EXC_FUNCNAME( asciiname ) } + +#define EXC_FUNCENTRY_V_VR_IMPORT( opcode, minparam, maxparam, flags, asciiname ) \ + { opcode, NOID, minparam, maxparam, V, { VR }, EXC_FUNCFLAG_IMPORTONLY|(flags), EXC_FUNCNAME( asciiname ) } + +#define EXC_FUNCENTRY_A_VR( opcode, minparam, maxparam, flags, asciiname ) \ + { opcode, NOID, minparam, maxparam, A, { VR }, EXC_FUNCFLAG_IMPORTONLY|(flags), EXC_FUNCNAME( asciiname ) }, \ + { opcode, 255, (minparam)+1, (maxparam)+1, A, { RO_E, RO }, EXC_FUNCFLAG_EXPORTONLY|(flags), EXC_FUNCNAME( asciiname ) } + +#define EXC_FUNCENTRY_V_RO( opcode, minparam, maxparam, flags, asciiname ) \ + { opcode, NOID, minparam, maxparam, V, { RO }, EXC_FUNCFLAG_IMPORTONLY|(flags), EXC_FUNCNAME( asciiname ) }, \ + { opcode, 255, (minparam)+1, (maxparam)+1, V, { RO_E, RO }, EXC_FUNCFLAG_EXPORTONLY|(flags), EXC_FUNCNAME( asciiname ) } + +// implicit maxparam=MX +#define EXC_FUNCENTRY_V_RX( opcode, minparam, maxparam, flags, asciiname ) \ + { opcode, NOID, minparam, MX, V, { RX }, EXC_FUNCFLAG_IMPORTONLY|(flags), EXC_FUNCNAME( asciiname ) }, \ + { opcode, 255, (minparam)+1, MX, V, { RO_E, RX }, EXC_FUNCFLAG_EXPORTONLY|(flags), EXC_FUNCNAME( asciiname ) } + +/** Functions new in Excel 2013. + + See http://office.microsoft.com/en-us/excel-help/new-functions-in-excel-2013-HA103980604.aspx + Most functions apparently were added for ODF1.2 ODFF / OpenFormula + compatibility. + + Functions with EXC_FUNCENTRY_V_VR_IMPORT are rewritten in + sc/source/filter/excel/xeformula.cxx during export for BIFF, OOXML export + uses a different mapping but still uses this mapping here to determine the + feature set. + + FIXME: either have the exporter determine the feature set from the active + mapping, preferred, or enhance this mapping here such that for OOXML the + rewrite can be overridden. + + @See sc/source/filter/oox/formulabase.cxx saFuncTable2013 for V,VR,RO,... + */ static const XclFunctionInfo saFuncTable_2013[] = { - { ocIfNA, NOID, 2, 2, V, { VO, RO }, EXC_FUNCFLAG_IMPORTONLY, EXC_FUNCNAME( "IFNA" ) }, - { ocIfNA, 255, 3, 3, V, { RO_E, VO, RO }, EXC_FUNCFLAG_EXPORTONLY, EXC_FUNCNAME( "IFNA" ) } + EXC_FUNCENTRY_V_VR_IMPORT( ocArcCot, 1, 1, 0, "ACOT" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocArcCotHyp, 1, 1, 0, "ACOTH" ), + EXC_FUNCENTRY_V_VR( ocArabic, 1, 1, 0, "ARABIC" ), + EXC_FUNCENTRY_V_VR( ocBase, 2, 3, 0, "BASE" ), + EXC_FUNCENTRY_V_VR( ocB, 3, 4, 0, "BINOM.DIST.RANGE" ), + EXC_FUNCENTRY_V_VR( ocBitAnd, 2, 2, 0, "BITAND" ), + EXC_FUNCENTRY_V_VR( ocBitLshift, 2, 2, 0, "BITLSHIFT" ), + EXC_FUNCENTRY_V_VR( ocBitOr, 2, 2, 0, "BITOR" ), + EXC_FUNCENTRY_V_VR( ocBitRshift, 2, 2, 0, "BITRSHIFT" ), + EXC_FUNCENTRY_V_VR( ocBitXor, 2, 2, 0, "BITXOR" ), + /* FIXME: CEILING.MATH is our/ODFF CEILING, but we have special handling + * for the weird Excel CEILING behavior, check that and unify or diversify. + * */ + EXC_FUNCENTRY_V_VR( ocNoName, 1, 3, 0, "CEILING.MATH" ), + EXC_FUNCENTRY_V_VR( ocKombin2, 2, 2, 0, "COMBINA" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocCot, 1, 1, 0, "COT" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocCotHyp, 1, 1, 0, "COTH" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocCosecant, 1, 1, 0, "CSC" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocCosecantHyp, 1, 1, 0, "CSCH" ), + EXC_FUNCENTRY_V_VR( ocGetDiffDate, 2, 2, 0, "DAYS" ), + EXC_FUNCENTRY_V_VR( ocDecimal, 2, 2, 0, "DECIMAL" ), + EXC_FUNCENTRY_V_VR( ocNoName, 1, 1, 0, "ENCODEURL" ), + // NOTE: this FDIST is not our LEGACY.FDIST + EXC_FUNCENTRY_V_VR( ocNoName, 3, 4, 0, "FDIST" ), + // NOTE: this FINV is not our LEGACY.FINV + EXC_FUNCENTRY_V_VR( ocNoName, 3, 3, 0, "FINV" ), + EXC_FUNCENTRY_V_VR( ocNoName, 2, 2, 0, "FILTERXML" ), + /* FIXME: FLOOR.MATH is our/ODFF FLOOR, but we have special handling for + * the weird Excel FLOOR behavior, check that and unify or diversify. */ + EXC_FUNCENTRY_V_VR( ocNoName, 1, 3, 0, "FLOOR.MATH" ), + EXC_FUNCENTRY_V_RO( ocFormula, 1, 1, 0, "FORMULATEXT" ), + EXC_FUNCENTRY_V_VR( ocGamma, 1, 1, 0, "GAMMA" ), + EXC_FUNCENTRY_V_VR( ocGauss, 1, 1, 0, "GAUSS" ), + { ocIfNA, NOID, 2, 2, V, { VO, RO }, EXC_FUNCFLAG_IMPORTONLY, EXC_FUNCNAME( "IFNA" ) }, + { ocIfNA, 255, 3, 3, V, { RO_E, VO, RO }, EXC_FUNCFLAG_EXPORTONLY, EXC_FUNCNAME( "IFNA" ) }, + // IMCOSH, IMCOT, IMCSC, IMCSCH, IMSEC, IMSECH, IMSINH and IMTAN are + // implemented in the Analysis Add-In. + EXC_FUNCENTRY_V_RO( ocIsFormula, 1, 1, 0, "ISFORMULA" ), + EXC_FUNCENTRY_V_VR( ocWeek, 1, 2, 0, "ISOWEEKNUM" ), + EXC_FUNCENTRY_A_VR( ocMatrixUnit, 1, 1, 0, "MUNIT" ), + EXC_FUNCENTRY_V_VR( ocNumberValue, 1, 3, 0, "NUMBERVALUE" ), + EXC_FUNCENTRY_V_VR( ocLaufz, 3, 3, 0, "PDURATION" ), + EXC_FUNCENTRY_V_VR( ocVariationen2, 2, 2, 0, "PERMUTATIONA" ), + EXC_FUNCENTRY_V_VR( ocPhi, 1, 1, 0, "PHI" ), + EXC_FUNCENTRY_V_VR( ocZGZ, 3, 3, 0, "RRI" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocSecant, 1, 1, 0, "SEC" ), + EXC_FUNCENTRY_V_VR_IMPORT( ocSecantHyp, 1, 1, 0, "SECH" ), + EXC_FUNCENTRY_V_RO( ocTable, 0, 1, 0, "SHEET" ), + EXC_FUNCENTRY_V_RO( ocTables, 0, 1, 0, "SHEETS" ), + EXC_FUNCENTRY_V_RX( ocNoName, 1, MX, 0, "SKEW.P" ), + EXC_FUNCENTRY_V_VR( ocUnichar, 1, 1, 0, "UNICHAR" ), + EXC_FUNCENTRY_V_VR( ocUnicode, 1, 1, 0, "UNICODE" ), + EXC_FUNCENTRY_V_VR( ocNoName, 1, 1, 0, "WEBSERVICE" ), + EXC_FUNCENTRY_V_RX( ocXor, 1, MX, 0, "XOR" ) }; + #define EXC_FUNCENTRY_ODF( opcode, minparam, maxparam, flags, asciiname ) \ { opcode, NOID, minparam, maxparam, V, { VR }, EXC_FUNCFLAG_IMPORTONLY|(flags), EXC_FUNCNAME_ODF( asciiname ) }, \ { opcode, 255, (minparam)+1, (maxparam)+1, V, { RO_E, RO }, EXC_FUNCFLAG_EXPORTONLY|(flags), EXC_FUNCNAME_ODF( asciiname ) } @@ -384,38 +474,8 @@ static const XclFunctionInfo saFuncTable_2013[] = /** Functions defined by OpenFormula, but not supported by Calc (ocNoName) or by Excel (defined op-code). */ static const XclFunctionInfo saFuncTable_Odf[] = { - EXC_FUNCENTRY_ODF( ocArabic, 1, 1, 0, "ARABIC" ), - EXC_FUNCENTRY_ODF( ocB, 3, 4, 0, "B" ), - EXC_FUNCENTRY_ODF( ocBase, 2, 3, 0, "BASE" ), - EXC_FUNCENTRY_ODF( ocBitAnd, 2, 2, 0, "BITAND" ), - EXC_FUNCENTRY_ODF( ocBitLshift, 2, 2, 0, "BITLSHIFT" ), - EXC_FUNCENTRY_ODF( ocBitOr, 2, 2, 0, "BITOR" ), - EXC_FUNCENTRY_ODF( ocBitRshift, 2, 2, 0, "BITRSHIFT" ), - EXC_FUNCENTRY_ODF( ocBitXor, 2, 2, 0, "BITXOR" ), EXC_FUNCENTRY_ODF( ocChiSqDist, 2, 3, 0, "CHISQDIST" ), - EXC_FUNCENTRY_ODF( ocChiSqInv, 2, 2, 0, "CHISQINV" ), - EXC_FUNCENTRY_ODF( ocKombin2, 2, 2, 0, "COMBINA" ), - EXC_FUNCENTRY_ODF( ocGetDiffDate, 2, 2, 0, "DAYS" ), - EXC_FUNCENTRY_ODF( ocDecimal, 2, 2, 0, "DECIMAL" ), - EXC_FUNCENTRY_ODF( ocFDist, 3, 4, 0, "FDIST" ), - EXC_FUNCENTRY_ODF( ocFInv, 3, 3, 0, "FINV" ), - EXC_FUNCENTRY_ODF( ocFormula, 1, 1, 0, "FORMULA" ), - EXC_FUNCENTRY_ODF( ocGamma, 1, 1, 0, "GAMMA" ), - EXC_FUNCENTRY_ODF( ocGauss, 1, 1, 0, "GAUSS" ), - EXC_FUNCENTRY_ODF( ocIsFormula, 1, 1, 0, "ISFORMULA" ), - EXC_FUNCENTRY_ODF( ocWeek, 1, 2, 0, "ISOWEEKNUM" ), - EXC_FUNCENTRY_ODF( ocMatrixUnit, 1, 1, 0, "MUNIT" ), - EXC_FUNCENTRY_ODF( ocNumberValue, 2, 2, 0, "NUMBERVALUE" ), - EXC_FUNCENTRY_ODF( ocLaufz, 3, 3, 0, "PDURATION" ), - EXC_FUNCENTRY_ODF( ocVariationen2, 2, 2, 0, "PERMUTATIONA" ), - EXC_FUNCENTRY_ODF( ocPhi, 1, 1, 0, "PHI" ), - EXC_FUNCENTRY_ODF( ocZGZ, 3, 3, 0, "RRI" ), - EXC_FUNCENTRY_ODF( ocTable, 0, 1, 0, "SHEET" ), - EXC_FUNCENTRY_ODF( ocTables, 0, 1, 0, "SHEETS" ), - EXC_FUNCENTRY_ODF( ocNoName, 1, MX, 0, "SKEWP" ), - EXC_FUNCENTRY_ODF( ocUnichar, 1, 1, 0, "UNICHAR" ), - EXC_FUNCENTRY_ODF( ocUnicode, 1, 1, 0, "UNICODE" ), - EXC_FUNCENTRY_ODF( ocXor, 1, MX, 0, "XOR" ) + EXC_FUNCENTRY_ODF( ocChiSqInv, 2, 2, 0, "CHISQINV" ) }; #undef EXC_FUNCENTRY_ODF diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx index a98e58a..3b05290 100644 --- a/sc/source/filter/oox/formulabase.cxx +++ b/sc/source/filter/oox/formulabase.cxx @@ -734,16 +734,59 @@ static const FunctionData saFuncTableOox[] = { "AVERAGEIFS", "AVERAGEIFS", 484, NOID, 3, MX, V, { RO, RO, VR }, FUNCFLAG_MACROCALL | FUNCFLAG_PARAMPAIRS } }; -/** Functions new in Excel 2013. */ -/* FIXME: BIFF12 function identifer available? Where to obtain? */ +/** Functions new in Excel 2013. + + See http://office.microsoft.com/en-us/excel-help/new-functions-in-excel-2013-HA103980604.aspx + Most functions apparently were added for ODF1.2 ODFF / OpenFormula + compatibility. + + Functions with FUNCFLAG_IMPORTONLY are rewritten in + sc/source/filter/excel/xeformula.cxx during export for + BIFF, OOXML export uses this different mapping here but still uses the + mapping there to determine the feature set. + + FIXME: either have the exporter determine the feature set from the active + mapping, preferred, or enhance that mapping there such that for OOXML the + rewrite can be overridden. + + @See sc/source/filter/excel/xlformula.cxx saFuncTable_2013 + */ +/* FIXME: BIFF12 function identifiers available? Where to obtain? */ static const FunctionData saFuncTable2013[] = { { "ACOT", "ACOT", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "ACOTH", "ACOTH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "ARABIC", "ARABIC", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BASE", "BASE", NOID, NOID, 2, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BINOM.DIST.RANGE", "BINOM.DIST.RANGE", NOID, NOID, 3, 4, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BITAND", "BITAND", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BITLSHIFT", "BITLSHIFT", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BITOR", "BITOR", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BITRSHIFT", "BITRSHIFT", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "BITXOR", "BITXOR", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + /* FIXME: CEILING.MATH is our/ODFF CEILING, but we have special handling + * for the weird Excel CEILING behavior, check that and unify or diversify. + * */ + { 0/*"CEILING"*/, "CEILING.MATH", NOID, NOID, 1, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "COMBINA", "COMBINA", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "COT", "COT", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "COTH", "COTH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "CSC", "CSC", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "CSCH", "CSCH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "DAYS", "DAYS", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "DECIMAL", "DECIMAL", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { 0, "ENCODEURL", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { 0, "FILTERXML", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + /* FIXME: FLOOR.MATH is our/ODFF FLOOR, but we have special handling for + * the weird Excel FLOOR behavior, check that and unify or diversify. */ + { 0/*"FLOOR"*/, "FLOOR.MATH", NOID, NOID, 1, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + // NOTE: this FDIST is not our LEGACY.FDIST + { 0/*"FDIST"*/, "FDIST", NOID, NOID, 3, 4, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + // NOTE: this FINV is not our LEGACY.FINV + { 0/*"FINV"*/, "FINV", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "FORMULA", "FORMULATEXT", NOID, NOID, 1, 1, V, { RO }, FUNCFLAG_MACROCALL_NEW }, + { "GAMMA", "GAMMA", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "GAUSS", "GAUSS", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "IFNA", "IFNA", NOID, NOID, 2, 2, V, { VO, RO }, FUNCFLAG_MACROCALL_NEW }, { "IMCOSH", "IMCOSH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW | FUNCFLAG_EXTERNAL }, { "IMCOT", "IMCOT", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW | FUNCFLAG_EXTERNAL }, @@ -753,45 +796,32 @@ static const FunctionData saFuncTable2013[] = { "IMSECH", "IMSECH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW | FUNCFLAG_EXTERNAL }, { "IMSINH", "IMSINH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW | FUNCFLAG_EXTERNAL }, { "IMTAN", "IMTAN", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW | FUNCFLAG_EXTERNAL }, + { "ISFORMULA", "ISFORMULA", NOID, NOID, 1, 1, V, { RO }, FUNCFLAG_MACROCALL_NEW }, + /* FIXME: ISOWEEKNUM vs. WEEKNUM mess needs to be sorted out before we can + * import. */ + { 0/*"ISOWEEKNUM"*/, "ISOWEEKNUM", NOID, NOID, 1, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "MUNIT", "MUNIT", NOID, NOID, 1, 1, A, { VR }, FUNCFLAG_MACROCALL_NEW }, + { 0/*"NUMBERVALUE"*/, "NUMBERVALUE", NOID, NOID, 1, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "PDURATION", "PDURATION", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "PERMUTATIONA", "PERMUTATIONA", NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "PHI", "PHI", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "RRI", "RRI", NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALL_NEW }, { "SEC", "SEC", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, - { "SECH", "SECH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW } + { "SECH", "SECH", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "SHEET", "SHEET", NOID, NOID, 0, 1, V, { RO }, FUNCFLAG_MACROCALL_NEW }, + { "SHEETS", "SHEETS", NOID, NOID, 0, 1, V, { RO }, FUNCFLAG_MACROCALL_NEW }, + { 0/*"SKEWP"*/, "SKEW.P", NOID, NOID, 1, MX, V, { RX }, FUNCFLAG_MACROCALL_NEW }, + { "UNICHAR", "UNICHAR", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "UNICODE", "UNICODE", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { 0, "WEBSERVICE", NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALL_NEW }, + { "XOR", "XOR", NOID, NOID, 1, MX, V, { RX }, FUNCFLAG_MACROCALL_NEW } }; /** Functions defined by OpenFormula, but not supported by Calc or by Excel. */ static const FunctionData saFuncTableOdf[] = { - { "ARABIC", 0, NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "B", 0, NOID, NOID, 3, 4, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "BASE", 0, NOID, NOID, 2, 3, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "BITAND", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "BITLSHIFT", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "BITOR", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "BITRSHIFT", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "BITXOR", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, { "CHISQDIST", 0, NOID, NOID, 2, 3, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "CHISQINV", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "COMBINA", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "DAYS", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "DECIMAL", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "FDIST", 0, NOID, NOID, 3, 4, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "FINV", 0, NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "FORMULA", 0, NOID, NOID, 1, 1, V, { RO }, FUNCFLAG_MACROCALLODF }, - { "GAMMA", 0, NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "GAUSS", 0, NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "ISFORMULA", 0, NOID, NOID, 1, 1, V, { RO }, FUNCFLAG_MACROCALLODF }, - { "ISOWEEKNUM", 0, NOID, NOID, 1, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "MUNIT", 0, NOID, NOID, 1, 1, A, { VR }, FUNCFLAG_MACROCALLODF }, - { "NUMBERVALUE", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "PDURATION", 0, NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "PERMUTATIONA", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "PHI", 0, NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "RRI", 0, NOID, NOID, 3, 3, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "SHEET", 0, NOID, NOID, 0, 1, V, { RO }, FUNCFLAG_MACROCALLODF }, - { "SHEETS", 0, NOID, NOID, 0, 1, V, { RO }, FUNCFLAG_MACROCALLODF }, - { "SKEWP", 0, NOID, NOID, 1, MX, V, { RX }, FUNCFLAG_MACROCALLODF }, - { "UNICHAR", 0, NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "UNICODE", 0, NOID, NOID, 1, 1, V, { VR }, FUNCFLAG_MACROCALLODF }, - { "XOR", 0, NOID, NOID, 1, MX, V, { RX }, FUNCFLAG_MACROCALLODF } + { "CHISQINV", 0, NOID, NOID, 2, 2, V, { VR }, FUNCFLAG_MACROCALLODF } }; // ---------------------------------------------------------------------------- _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits