rsc/inc/rscall.h | 1 rsc/inc/rscarray.hxx | 2 rsc/inc/rscclass.hxx | 8 rsc/inc/rscconst.hxx | 2 rsc/inc/rsccont.hxx | 14 rsc/inc/rscflag.hxx | 2 rsc/inc/rscmgr.hxx | 4 rsc/inc/rscrange.hxx | 6 rsc/inc/rscstr.hxx | 2 rsc/inc/rsctop.hxx | 4 rsc/source/parser/rscdb.cxx | 4 rsc/source/parser/rscicpx.cxx | 9 rsc/source/res/rscall.cxx | 1 rsc/source/res/rscarray.cxx | 6 rsc/source/res/rscclass.cxx | 32 rsc/source/res/rscconst.cxx | 2 rsc/source/res/rsccont.cxx | 38 rsc/source/res/rscflag.cxx | 2 rsc/source/res/rscmgr.cxx | 14 rsc/source/res/rscrange.cxx | 6 rsc/source/res/rscstr.cxx | 4 rsc/source/res/rsctop.cxx | 10 sc/inc/funcdesc.hxx | 2 sc/source/core/data/funcdesc.cxx | 481 + sc/source/ui/src/scfuncs.src |16038 +++++++++------------------------------ 25 files changed, 4387 insertions(+), 12307 deletions(-)
New commits: commit b127134103e0fcf8b415f53eebed0b5180d782e3 Author: Caolán McNamara <[email protected]> Date: Thu Feb 16 17:01:20 2017 +0000 move formula description extra data out of .src and remove reading/writing of defunct ExtraData from rsc Change-Id: I5be6e11c5921eb809143487a456d1e4ee203e68c Reviewed-on: https://gerrit.libreoffice.org/34345 Tested-by: Jenkins <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> diff --git a/rsc/inc/rscall.h b/rsc/inc/rscall.h index 53cedd6..3a04308 100644 --- a/rsc/inc/rscall.h +++ b/rsc/inc/rscall.h @@ -41,7 +41,6 @@ extern OString* pStdPar2; extern sal_uInt32 nRefDeep; extern sal_uInt32 nRsc_DELTALANG; extern sal_uInt32 nRsc_DELTASYSTEM; -extern sal_uInt32 nRsc_EXTRADATA; extern AtomContainer* pHS; /******************* D e f i n e s ***************************************/ diff --git a/rsc/inc/rscarray.hxx b/rsc/inc/rscarray.hxx index b3bf672..32d1386 100644 --- a/rsc/inc/rscarray.hxx +++ b/rsc/inc/rscarray.hxx @@ -88,7 +88,7 @@ public: void WriteSrc( const RSCINST & rInst, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; class RscLangArray : public RscArray diff --git a/rsc/inc/rscclass.hxx b/rsc/inc/rscclass.hxx index 193e372..59b3980 100644 --- a/rsc/inc/rscclass.hxx +++ b/rsc/inc/rscclass.hxx @@ -87,9 +87,9 @@ public: void WriteSrc( const RSCINST & rInst, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteInstRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ); + RscTypCont * pTC, sal_uInt32 ); ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; class RscSysDepend : public RscClass @@ -97,9 +97,9 @@ class RscSysDepend : public RscClass public: RscSysDepend( Atom nId, RESOURCE_TYPE nTypId, RscTop * pSuper ); ERRTYPE WriteSysDependRc( const RSCINST &, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ); + RscTypCont * pTC, sal_uInt32 ); ERRTYPE WriteRc( const RSCINST &, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; class RscTupel : public RscClass diff --git a/rsc/inc/rscconst.hxx b/rsc/inc/rscconst.hxx index 8519f9a..1b65f60 100644 --- a/rsc/inc/rscconst.hxx +++ b/rsc/inc/rscconst.hxx @@ -77,7 +77,7 @@ public: void WriteSrc( const RSCINST &rInst, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; class RscNameTable; diff --git a/rsc/inc/rsccont.hxx b/rsc/inc/rsccont.hxx index e480ea6d..89d3b77 100644 --- a/rsc/inc/rsccont.hxx +++ b/rsc/inc/rsccont.hxx @@ -52,7 +52,7 @@ protected: void ContWriteSrc( const RSCINST & rInst, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ); ERRTYPE ContWriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ); + RscTypCont * pTC, sal_uInt32 ); public: RscBaseCont( Atom nId, RESOURCE_TYPE nTypId, bool bNoId ); @@ -99,7 +99,7 @@ public: void WriteSrc( const RSCINST & rInst, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32 , bool bExtra) override; + RscTypCont * pTC, sal_uInt32 ) override; }; class RscContWriteSrc : public RscBaseCont @@ -115,15 +115,7 @@ class RscCont : public RscContWriteSrc public: RscCont( Atom nId, RESOURCE_TYPE nTypId ); ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; -}; - -class RscContExtraData : public RscContWriteSrc -{ -public: - RscContExtraData( Atom nId, RESOURCE_TYPE nTypId ); - ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; #endif // INCLUDED_RSC_INC_RSCCONT_HXX diff --git a/rsc/inc/rscflag.hxx b/rsc/inc/rscflag.hxx index dd3b986..de006bf 100644 --- a/rsc/inc/rscflag.hxx +++ b/rsc/inc/rscflag.hxx @@ -58,7 +58,7 @@ public: void WriteSrc( const RSCINST & rInst, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; /******************* R s c C l i e n t ***********************************/ diff --git a/rsc/inc/rscmgr.hxx b/rsc/inc/rscmgr.hxx index 347512a..ad1ca97 100644 --- a/rsc/inc/rscmgr.hxx +++ b/rsc/inc/rscmgr.hxx @@ -54,9 +54,9 @@ public: RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRcHeader( const RSCINST & rInst, RscWriteRc & aMem, RscTypCont * pTC, const RscId & rId, - sal_uInt32, bool bExtra ) override; + sal_uInt32 ) override; ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; bool IsConsistent( const RSCINST & rInst ) override; ERRTYPE GetRef( const RSCINST & rInst, RscId * ) override; ERRTYPE SetRef( const RSCINST & rInst, const RscId & rRefId ) override; diff --git a/rsc/inc/rscrange.hxx b/rsc/inc/rscrange.hxx index 00573f9..bed213f 100644 --- a/rsc/inc/rscrange.hxx +++ b/rsc/inc/rscrange.hxx @@ -58,7 +58,7 @@ public: void WriteSrc( const RSCINST &, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST &, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; class RscLongRange : public RscTop @@ -95,7 +95,7 @@ public: void WriteSrc( const RSCINST &, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST &, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; @@ -143,7 +143,7 @@ public: void WriteSrc( const RSCINST &, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST &, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; bool IsConsistent( const RSCINST & rInst ) override; }; diff --git a/rsc/inc/rscstr.hxx b/rsc/inc/rscstr.hxx index 77010ac..322eedb 100644 --- a/rsc/inc/rscstr.hxx +++ b/rsc/inc/rscstr.hxx @@ -59,7 +59,7 @@ public: void WriteSrc( const RSCINST &, FILE * fOutput, RscTypCont * pTC, sal_uInt32 nTab, const char * ) override; ERRTYPE WriteRc( const RSCINST &, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32, bool bExtra ) override; + RscTypCont * pTC, sal_uInt32 ) override; }; #endif // INCLUDED_RSC_INC_RSCSTR_HXX diff --git a/rsc/inc/rsctop.hxx b/rsc/inc/rsctop.hxx index 8d3f52f..2c7a98d 100644 --- a/rsc/inc/rsctop.hxx +++ b/rsc/inc/rsctop.hxx @@ -204,9 +204,9 @@ public: RscTypCont * pTC, sal_uInt32 nTab,const char * ); virtual ERRTYPE WriteRcHeader( const RSCINST & rInst, RscWriteRc & aMem, RscTypCont * pTC, const RscId & aId, - sal_uInt32 nDeep, bool bExtra ); + sal_uInt32 nDeep ); virtual ERRTYPE WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ); + RscTypCont * pTC, sal_uInt32 nDeep ); }; #endif // INCLUDED_RSC_INC_RSCTOP_HXX diff --git a/rsc/source/parser/rscdb.cxx b/rsc/source/parser/rscdb.cxx index 9aa1193..36fd2de 100644 --- a/rsc/source/parser/rscdb.cxx +++ b/rsc/source/parser/rscdb.cxx @@ -275,7 +275,7 @@ IMPL_LINK( RscEnumerateObj, CallBackWriteRc, const NameNode&, rNode, void ) aError = pClass->WriteRcHeader( RSCINST( pClass, rObjNode.GetRscObj() ), aMem, pTypCont, - rObjNode.GetRscId(), 0, true ); + rObjNode.GetRscId(), 0 ); if( aError.IsError() || aError.IsWarning() ) pTypCont->pEH->Error( aError, pClass, rObjNode.GetRscId() ); @@ -393,7 +393,7 @@ ERRTYPE RscTypCont::WriteRc( WriteRcContext& rContext ) // version control RscWriteRc aMem( nByteOrder ); - aVersion.pClass->WriteRcHeader( aVersion, aMem, this, RscId( RSCVERSION_ID ), 0, true ); + aVersion.pClass->WriteRcHeader( aVersion, aMem, this, RscId( RSCVERSION_ID ), 0 ); aEnumRef.aEnumObj.WriteRcFile( aMem, rContext.fOutput ); return aError; diff --git a/rsc/source/parser/rscicpx.cxx b/rsc/source/parser/rscicpx.cxx index fde078d..69651c7 100644 --- a/rsc/source/parser/rscicpx.cxx +++ b/rsc/source/parser/rscicpx.cxx @@ -47,15 +47,6 @@ RscTop * RscTypCont::InitClassMgr() pClassMgr->SetCallPar( *pStdPar1, *pStdPar2, *pStdParType ); // initialize variables - { - RscContWriteSrc * pCont; - - // initialize variables - aBaseLst.push_back( pCont = new RscContExtraData( pHS->getID( "ContExtradata" ), RSC_NOTYPE ) ); - pCont->SetTypeClass( &aShort, &aString ); - nRsc_EXTRADATA = nId = aNmTb.Put( "ExtraData", VARNAME ); - pClassMgr->SetVariable( nId, pCont ); - }; nId = aNmTb.Put( "Comment", VARNAME ); pClassMgr->SetVariable( nId, &aString, nullptr, RSCVAR::NoRc ); diff --git a/rsc/source/res/rscall.cxx b/rsc/source/res/rscall.cxx index 744a42e..84829c7 100644 --- a/rsc/source/res/rscall.cxx +++ b/rsc/source/res/rscall.cxx @@ -26,7 +26,6 @@ Atom nRsc_DELTALANG = InvalidAtom; Atom nRsc_DELTASYSTEM = InvalidAtom; -Atom nRsc_EXTRADATA = InvalidAtom; void InitRscCompiler() { diff --git a/rsc/source/res/rscarray.cxx b/rsc/source/res/rscarray.cxx index 817a8c1..de0e8fe 100644 --- a/rsc/source/res/rscarray.cxx +++ b/rsc/source/res/rscarray.cxx @@ -387,7 +387,7 @@ void RscArray::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscArray::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { ERRTYPE aError; RscArrayInst * pClassData; @@ -415,9 +415,9 @@ ERRTYPE RscArray::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, if( pNode ) aError = pNode->aInst.pClass->WriteRc( pNode->aInst, rMem, pTC, - nDeep, bExtra ); + nDeep ); else - aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep ); return aError; } diff --git a/rsc/source/res/rscclass.cxx b/rsc/source/res/rscclass.cxx index 12fb795..1bbac23 100644 --- a/rsc/source/res/rscclass.cxx +++ b/rsc/source/res/rscclass.cxx @@ -567,8 +567,7 @@ void RscClass::WriteSrc( const RSCINST & rInst, ERRTYPE RscClass::WriteInstRc( const RSCINST & rInst, RscWriteRc & rMem, RscTypCont * pTC, - sal_uInt32 nDeep, - bool bExtra) + sal_uInt32 nDeep ) { sal_uInt32 i = 0; ERRTYPE aError; @@ -595,11 +594,9 @@ ERRTYPE RscClass::WriteInstRc( const RSCINST & rInst, if( !IsDflt( rInst.pData, i ) ) { aTmpI = GetInstData( rInst.pData, i, true ); - // set only for variable extradata with bExtra not false aError = aTmpI.pClass-> - WriteRcHeader( aTmpI, rMem, pTC, - RscId(), nDeep, - (nRsc_EXTRADATA == pVarTypeList[ i ].nVarName) && bExtra ); + WriteRcHeader(aTmpI, rMem, pTC, + RscId(), nDeep); sal_uInt32 nMask = rMem.GetLong( nMaskOff ); nMask |= pVarTypeList[ i ].nMask; rMem.PutAt( nMaskOff, nMask ); @@ -615,11 +612,9 @@ ERRTYPE RscClass::WriteInstRc( const RSCINST & rInst, else aTmpI = GetInstData( rInst.pData, i, true ); - // set only for variable extradata with bExtra not false aError = aTmpI.pClass-> WriteRcHeader( aTmpI, rMem, pTC, - RscId(), nDeep, - (nRsc_EXTRADATA == pVarTypeList[ i ].nVarName) && bExtra ); + RscId(), nDeep ); } } } @@ -630,14 +625,13 @@ ERRTYPE RscClass::WriteInstRc( const RSCINST & rInst, ERRTYPE RscClass::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, RscTypCont * pTC, - sal_uInt32 nDeep, - bool bExtra) + sal_uInt32 nDeep ) { ERRTYPE aError; - aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = RscTop::WriteRc(rInst, rMem, pTC, nDeep); if( aError.IsOk() ) - aError = WriteInstRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = WriteInstRc(rInst, rMem, pTC, nDeep); return aError; } @@ -648,7 +642,7 @@ RscSysDepend::RscSysDepend( Atom nId, RESOURCE_TYPE nTypeId, RscTop * pSuper ) } ERRTYPE RscSysDepend::WriteSysDependRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { ERRTYPE aError; RSCINST aFileName; @@ -659,7 +653,7 @@ ERRTYPE RscSysDepend::WriteSysDependRc( const RSCINST & rInst, RscWriteRc & rMem { RscWriteRc aTmpMem; aError = aFileName.pClass->WriteRcHeader( aFileName, aTmpMem, pTC, - RscId(), nDeep, bExtra ); + RscId(), nDeep ); // Obsolete - need changes in VCL rMem.Put( sal_uInt32(0) ); @@ -672,7 +666,7 @@ ERRTYPE RscSysDepend::WriteSysDependRc( const RSCINST & rInst, RscWriteRc & rMem } rMem.Put( nId ); aError = aFileName.pClass->WriteRcHeader( aFileName, rMem, pTC, - RscId(), nDeep, bExtra ); + RscId(), nDeep ); } else aError = ERR_ERROR; @@ -681,14 +675,14 @@ ERRTYPE RscSysDepend::WriteSysDependRc( const RSCINST & rInst, RscWriteRc & rMem } ERRTYPE RscSysDepend::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { - ERRTYPE aError = RscClass::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + ERRTYPE aError = RscClass::WriteRc( rInst, rMem, pTC, nDeep ); if( this == rInst.pClass ) { // only when it is own class - aError = WriteSysDependRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = WriteSysDependRc( rInst, rMem, pTC, nDeep ); } return aError; } diff --git a/rsc/source/res/rscconst.cxx b/rsc/source/res/rscconst.cxx index 32aa189..845cb23 100644 --- a/rsc/source/res/rscconst.cxx +++ b/rsc/source/res/rscconst.cxx @@ -181,7 +181,7 @@ void RscEnum::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscEnum::WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont *, sal_uInt32, bool ) + RscTypCont *, sal_uInt32 ) { aMem.Put( (sal_Int32)pVarArray[ reinterpret_cast<RscEnumInst *>(rInst.pData)->nValue ].lValue ); return ERR_OK; diff --git a/rsc/source/res/rsccont.cxx b/rsc/source/res/rsccont.cxx index 6c389e7..fbc36d4 100644 --- a/rsc/source/res/rsccont.cxx +++ b/rsc/source/res/rsccont.cxx @@ -677,13 +677,13 @@ void RscBaseCont::ContWriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscBaseCont::ContWriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { RscBaseContInst * pClassData; ERRTYPE aError; - if( bExtra || bNoId ) - { // only write sub resources when bExtra == true + if( bNoId ) + { pClassData = reinterpret_cast<RscBaseContInst *>(rInst.pData + nOffInstData); for (sal_uInt32 i = 0; i < pClassData->nEntries && aError.IsOk(); i++ ) @@ -692,7 +692,7 @@ ERRTYPE RscBaseCont::ContWriteRc( const RSCINST & rInst, RscWriteRc & rMem, WriteRcHeader( pClassData->pEntries[ i ].aInst, rMem, pTC, pClassData->pEntries[ i ].aName, - nDeep, bExtra ); + nDeep ); } } @@ -708,13 +708,13 @@ void RscBaseCont::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscBaseCont::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { ERRTYPE aError; - aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep ); if( aError.IsOk() ) - aError = ContWriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = ContWriteRc( rInst, rMem, pTC, nDeep ); return aError; } @@ -752,37 +752,19 @@ RscCont::RscCont( Atom nId, RESOURCE_TYPE nTypeId ) } ERRTYPE RscCont::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { RscBaseContInst * pClassData; ERRTYPE aError; - aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep ); pClassData = reinterpret_cast<RscBaseContInst *>(rInst.pData + nOffInstData); rMem.Put( pClassData->nEntries ); if( aError.IsOk() ) - aError = ContWriteRc( rInst, rMem, pTC, nDeep, bExtra ); - - return aError; -} - -RscContExtraData::RscContExtraData( Atom nId, RESOURCE_TYPE nTypeId ) - : RscContWriteSrc( nId, nTypeId ) -{ -} - -ERRTYPE RscContExtraData::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) -{ - ERRTYPE aError; - - if( bExtra ) - aError = RscContWriteSrc::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); - else - aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = ContWriteRc( rInst, rMem, pTC, nDeep ); return aError; } diff --git a/rsc/source/res/rscflag.cxx b/rsc/source/res/rscflag.cxx index d1d8afd..6321317 100644 --- a/rsc/source/res/rscflag.cxx +++ b/rsc/source/res/rscflag.cxx @@ -270,7 +270,7 @@ void RscFlag::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscFlag::WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont *, sal_uInt32, bool ) + RscTypCont *, sal_uInt32 ) { sal_Int32 lVal = 0; sal_uInt32 i = 0, Flag = 0, nIndex = 0; diff --git a/rsc/source/res/rscmgr.cxx b/rsc/source/res/rscmgr.cxx index c123a93..39f0b65 100644 --- a/rsc/source/res/rscmgr.cxx +++ b/rsc/source/res/rscmgr.cxx @@ -158,7 +158,7 @@ void RscMgr::WriteSrc( const RSCINST &, FILE *, RscTypCont *, sal_uInt32, ERRTYPE RscMgr::WriteRcHeader( const RSCINST & rInst, RscWriteRc & rMem, RscTypCont * pTC, const RscId &rId, - sal_uInt32 nDeep, bool bExtra ) + sal_uInt32 nDeep ) { RscMgrInst * pClassData; ERRTYPE aError; @@ -196,13 +196,13 @@ ERRTYPE RscMgr::WriteRcHeader( const RSCINST & rInst, RscWriteRc & rMem, if( pTmpRefClass == rInst.pClass ) { aError = aRefI.pClass->WriteRcHeader( aRefI, rMem, pTC, - rId, nDeep, bExtra ); + rId, nDeep ); } else { RSCINST aRefInst = rInst.pClass->Create( nullptr, aRefI ); aError = aRefI.pClass->WriteRcHeader( aRefInst, rMem, pTC, - rId, nDeep, bExtra ); + rId, nDeep ); pTmpRefClass->Destroy( aRefInst ); } } @@ -213,15 +213,15 @@ ERRTYPE RscMgr::WriteRcHeader( const RSCINST & rInst, RscWriteRc & rMem, nOldSize = rMem.IncSize( 16 /*sizeof( RSHEADER_TYPE )*/ ); - aError = rInst.pClass->WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = rInst.pClass->WriteRc( rInst, rMem, pTC, nDeep ); if( aError.IsOk() ) - aError = WriteInstRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = WriteInstRc( rInst, rMem, pTC, nDeep ); nLocalSize = rMem.Size(); if( aError.IsOk() ) { // RscClass is skipped - aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + aError = RscTop::WriteRc( rInst, rMem, pTC, nDeep ); } /* @@ -245,7 +245,7 @@ ERRTYPE RscMgr::WriteRcHeader( const RSCINST & rInst, RscWriteRc & rMem, } ERRTYPE RscMgr::WriteRc( const RSCINST &, RscWriteRc &, - RscTypCont *, sal_uInt32, bool ) + RscTypCont *, sal_uInt32 ) { return ERR_OK; diff --git a/rsc/source/res/rscrange.cxx b/rsc/source/res/rscrange.cxx index 403e7bc..c252c62 100644 --- a/rsc/source/res/rscrange.cxx +++ b/rsc/source/res/rscrange.cxx @@ -117,7 +117,7 @@ void RscRange::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscRange::WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont *, sal_uInt32, bool ) + RscTypCont *, sal_uInt32 ) { if( nMin >= 0 ) { @@ -231,7 +231,7 @@ void RscLongRange::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscLongRange::WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont *, sal_uInt32, bool ) + RscTypCont *, sal_uInt32 ) { sal_Int32 lVal; @@ -372,7 +372,7 @@ void RscIdRange::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscIdRange::WriteRc( const RSCINST & rInst, RscWriteRc & aMem, - RscTypCont *, sal_uInt32, bool ) + RscTypCont *, sal_uInt32 ) { sal_Int32 lVal = reinterpret_cast<RscId*>(rInst.pData)->GetNumber(); diff --git a/rsc/source/res/rscstr.cxx b/rsc/source/res/rscstr.cxx index dc54561..9021308 100644 --- a/rsc/source/res/rscstr.cxx +++ b/rsc/source/res/rscstr.cxx @@ -226,7 +226,7 @@ void RscString::WriteSrc( const RSCINST & rInst, FILE * fOutput, } ERRTYPE RscString::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { ERRTYPE aError; ObjNode * pObjNode = nullptr; @@ -277,7 +277,7 @@ ERRTYPE RscString::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, RSCINST aRefI; aRefI = RSCINST( pRefClass, pObjNode->GetRscObj() ); - aError = aRefI.pClass->WriteRc( aRefI, rMem, pTC, nDeep, bExtra ); + aError = aRefI.pClass->WriteRc( aRefI, rMem, pTC, nDeep ); } else { diff --git a/rsc/source/res/rsctop.cxx b/rsc/source/res/rsctop.cxx index 3d48b8e..3d44779 100644 --- a/rsc/source/res/rsctop.cxx +++ b/rsc/source/res/rsctop.cxx @@ -396,19 +396,19 @@ void RscTop::WriteSrc( const RSCINST & rInst, FILE * fOutput, ERRTYPE RscTop::WriteRcHeader( const RSCINST & rInst, RscWriteRc & rMem, RscTypCont * pTC, const RscId & rId, - sal_uInt32 nDeep, bool bExtra ) + sal_uInt32 nDeep ) { if( pSuperClass ) - return pSuperClass->WriteRcHeader( rInst, rMem, pTC, rId, nDeep, bExtra ); + return pSuperClass->WriteRcHeader( rInst, rMem, pTC, rId, nDeep ); else - return rInst.pClass->WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + return rInst.pClass->WriteRc( rInst, rMem, pTC, nDeep ); } ERRTYPE RscTop::WriteRc( const RSCINST & rInst, RscWriteRc & rMem, - RscTypCont * pTC, sal_uInt32 nDeep, bool bExtra ) + RscTypCont * pTC, sal_uInt32 nDeep ) { if( pSuperClass ) - return pSuperClass->WriteRc( rInst, rMem, pTC, nDeep, bExtra ); + return pSuperClass->WriteRc( rInst, rMem, pTC, nDeep ); else return ERR_OK; } diff --git a/sc/inc/funcdesc.hxx b/sc/inc/funcdesc.hxx index bea5687..632ccf0 100644 --- a/sc/inc/funcdesc.hxx +++ b/sc/inc/funcdesc.hxx @@ -220,7 +220,7 @@ public: sal_uInt16 nCategory; /**< Function category */ sal_uInt16 nArgCount; /**< All parameter count, suppressed and unsuppressed */ sal_uInt16 nVarArgsStart; /**< Start of variable arguments, for numbering */ - OString sHelpId; /**< HelpId of function */ + OString sHelpId; /**< HelpId of function */ bool bIncomplete :1; /**< Incomplete argument info (set for add-in info from configuration) */ bool bHasSuppressedArgs :1; /**< Whether there is any suppressed parameter. */ bool mbHidden :1; /**< Whether function is hidden */ diff --git a/sc/source/core/data/funcdesc.cxx b/sc/source/core/data/funcdesc.cxx index 9c50709..ce67785 100644 --- a/sc/source/core/data/funcdesc.cxx +++ b/sc/source/core/data/funcdesc.cxx @@ -37,13 +37,20 @@ #include <memory> #include <numeric> -class ScFuncRes : public Resource +struct ScFuncDescCore { -public: - ScFuncRes( ResId&, ScFuncDesc*, bool & rbSuppressed ); + sal_uInt16 nOpCode; + sal_uInt16 nFunctionFlags; + sal_uInt16 nCategory; + const char* pHelpId; + sal_uInt16 nArgs; + sal_uInt8 aOptionalArgs[7]; +}; -private: - sal_uInt16 GetNum(); +class ScFuncRes +{ +public: + ScFuncRes(ResId&, const ScFuncDescCore &rEntry, ScFuncDesc*, bool & rbSuppressed); }; // class ScFuncDesc: @@ -379,10 +386,427 @@ bool ScFuncDesc::compareByName(const ScFuncDesc* a, const ScFuncDesc* b) } // class ScFunctionList: - ScFunctionList::ScFunctionList() : nMaxFuncNameLen(0) { + /* + * 16-bit value: + * + * Bit 1: boolean flag whether function is suppressed. Usually 0. This + * may be used to add UI string resources before UI freeze if + * implementation isn't ready yet without displaying them in the + * function wizard, most recent used list and other UI elements. Also + * not available via API then. + * + * Bit 2: boolean flag whether function is hidden in the Function + * Wizard unless used in an expression. + * + * + * Function group (text, math, ...), one of ID_FUNCTION_GRP_... + * + * Help ID, HID_FUNC_... + * + * Number of parameters. VAR_ARGS if variable number, or + * VAR_ARGS+number if number of fixed parameters and variable + * arguments following. Or PAIRED_VAR_ARGS if variable number of + * paired parameters, or PAIRED_VAR_ARGS+number if number of fixed + * parameters and variable paired arguments following. + * + * For every parameter: + * + * Boolean flag whether the parameter is optional. + */ + ScFuncDescCore aDescs[] = + { + { SC_OPCODE_DB_COUNT, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_COUNT_2, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL2, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_AVERAGE, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMITTELWERT, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_GET, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBAUSZUG, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_MAX, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMAX, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_MIN, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMIN, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_PRODUCT, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBPRODUKT, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_STD_DEV, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSTDABW, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_STD_DEV_P, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSTDABWN, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_SUM, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSUMME, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_VAR, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZ, 3, { 0, 0, 0 } }, + { SC_OPCODE_DB_VAR_P, 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZEN, 3, { 0, 0, 0 } }, + { SC_OPCODE_GET_DATE, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATUM, 3, { 0, 0, 0 } }, + { SC_OPCODE_GET_DATE_VALUE, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATWERT, 1, { 0 } }, + { SC_OPCODE_GET_DAY, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAG, 1, { 0 } }, + { SC_OPCODE_GET_DIFF_DATE_360, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAGE360, 3, { 0, 0, 1 } }, + { SC_OPCODE_NETWORKDAYS, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_NETWORKDAYS, 4, { 0, 0, 1, 1 } }, + { SC_OPCODE_NETWORKDAYS_MS, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_NETWORKDAYS_MS, 4, { 0, 0, 1, 1 } }, + { SC_OPCODE_WORKDAY_MS, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WORKDAY_MS, 4, { 0, 0, 1, 1 } }, + { SC_OPCODE_GET_HOUR, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_STUNDE, 1, { 0 } }, + { SC_OPCODE_GET_MIN, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_MINUTE, 1, { 0 } }, + { SC_OPCODE_GET_MONTH, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_MONAT, 1, { 0 } }, + { SC_OPCODE_GET_ACT_TIME, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_JETZT, 0, { } }, + { SC_OPCODE_GET_SEC, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_SEKUNDE, 1, { 0 } }, + { SC_OPCODE_GET_TIME, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ZEIT, 3, { 0, 0, 0 } }, + { SC_OPCODE_GET_TIME_VALUE, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ZEITWERT, 1, { 0 } }, + { SC_OPCODE_GET_ACT_DATE, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_HEUTE, 0, { } }, + { SC_OPCODE_GET_DAY_OF_WEEK, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WOCHENTAG, 2, { 0, 1 } }, + { SC_OPCODE_GET_YEAR, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_JAHR, 1, { 0 } }, + { SC_OPCODE_GET_DIFF_DATE, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAGE, 2, { 0, 0 } }, + { SC_OPCODE_GET_DATEDIF, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATEDIF, 3, { 0, 0, 0 } }, + { SC_OPCODE_WEEK, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_KALENDERWOCHE, 2, { 0, 1 } }, + { SC_OPCODE_ISOWEEKNUM, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ISOWEEKNUM, 1, { 0 } }, + { SC_OPCODE_WEEKNUM_OOO, 2, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WEEKNUM_OOO, 2, { 0, 0 } }, + { SC_OPCODE_EASTERSUNDAY, 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_OSTERSONNTAG, 1, { 0 } }, + { SC_OPCODE_PV, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_BW, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_FV, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_ZW, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_NPER, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_ZZR, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_PMT, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_RMZ, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_RATE, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_ZINS, 6, { 0, 0, 0, 1, 1, 1 } }, + { SC_OPCODE_IPMT, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_ZINSZ, 6, { 0, 0, 0, 0, 1, 1 } }, + { SC_OPCODE_PPMT, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_KAPZ, 6, { 0, 0, 0, 0, 1, 1 } }, + { SC_OPCODE_CUM_PRINC, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_KUMKAPITAL, 6, { 0, 0, 0, 0, 0, 0 } }, + { SC_OPCODE_CUM_IPMT, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_KUMZINSZ, 6, { 0, 0, 0, 0, 0, 0 } }, + { SC_OPCODE_SYD, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_DIA, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_SLN, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_LIA, 3, { 0, 0, 0 } }, + { SC_OPCODE_DDB, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_GDA, 5, { 0, 0, 0, 0, 1 } }, + { SC_OPCODE_DB, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_GDA2, 5, { 0, 0, 0, 0, 1 } }, + { SC_OPCODE_VBD , 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_VDB, 7, { 0, 0, 0, 0, 0, 1, 1 } }, + { SC_OPCODE_EFFECT, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_EFFEKTIV, 2, { 0, 0 } }, + { SC_OPCODE_NOMINAL, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_NOMINAL, 2, { 0, 0 } }, + { SC_OPCODE_NPV, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_NBW, VAR_ARGS+1, { 0, 0 } }, + { SC_OPCODE_IRR, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_IKV, 2, { 0, 1 } }, + { SC_OPCODE_MIRR, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_QIKV, 3, { 0, 0, 0 } }, + { SC_OPCODE_ISPMT, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_ISPMT, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_PDURATION, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_LAUFZEIT, 3, { 0, 0, 0 } }, + { SC_OPCODE_RRI, 0, ID_FUNCTION_GRP_FINANZ, HID_FUNC_ZGZ, 3, { 0, 0, 0 } }, + { SC_OPCODE_IS_REF, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTBEZUG, 1, { 0 } }, + { SC_OPCODE_IS_ERR, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFEHL, 1, { 0 } }, + { SC_OPCODE_IS_ERROR, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFEHLER, 1, { 0 } }, + { SC_OPCODE_IS_EMPTY, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTLEER, 1, { 0 } }, + { SC_OPCODE_IS_LOGICAL, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTLOG, 1, { 0 } }, + { SC_OPCODE_IS_NV, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTNV, 1, { 0 } }, + { SC_OPCODE_IS_NON_STRING, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTKTEXT, 1, { 0 } }, + { SC_OPCODE_IS_STRING, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTTEXT, 1, { 0 } }, + { SC_OPCODE_IS_VALUE, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTZAHL, 1, { 0 } }, + { SC_OPCODE_IS_FORMULA, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFORMEL, 1, { 0 } }, + { SC_OPCODE_FORMULA, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_FORMEL, 1, { 0 } }, + { SC_OPCODE_N, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_N, 1, { 0 } }, + { SC_OPCODE_NO_VALUE, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_NV, 0, { } }, + { SC_OPCODE_TYPE, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_TYP, 1, { 0 } }, + { SC_OPCODE_CELL, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ZELLE, 2, { 0, 1 } }, + { SC_OPCODE_CURRENT, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_AKTUELL, 0, { } }, + { SC_OPCODE_FALSE, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_FALSCH, 0, { } }, + { SC_OPCODE_NOT, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_NICHT, 1, { 0 } }, + { SC_OPCODE_TRUE, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WAHR, 0, { } }, + { SC_OPCODE_IF, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WENN, 3, { 0, 1, 1 } }, + { SC_OPCODE_IF_ERROR, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFERROR, 2, { 0, 0 } }, + { SC_OPCODE_IF_NA, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFNA, 2, { 0, 0 } }, + { SC_OPCODE_OR, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_ODER, VAR_ARGS, { 0 } }, + { SC_OPCODE_XOR, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_XOR, VAR_ARGS, { 0 } }, + { SC_OPCODE_AND, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_UND, VAR_ARGS, { 0 } }, + { SC_OPCODE_ABS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABS, 1, { 0 } }, + { SC_OPCODE_POWER, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_POTENZ, 2, { 0, 0 } }, + { SC_OPCODE_COUNT_EMPTY_CELLS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHLLEEREZELLEN, 1, { 0 } }, + { SC_OPCODE_PI, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PI, 0, { } }, + { SC_OPCODE_SUM, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMME, VAR_ARGS, { 0 } }, + { SC_OPCODE_SUM_SQ, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_QUADRATESUMME, VAR_ARGS, { 0 } }, + { SC_OPCODE_PRODUCT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PRODUKT, VAR_ARGS, { 0 } }, + { SC_OPCODE_SUM_IF, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMMEWENN, 3, { 0, 0, 1 } }, + { SC_OPCODE_AVERAGE_IF, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIF, 3, { 0, 0, 1 } }, + { SC_OPCODE_SUM_IFS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 } }, + { SC_OPCODE_AVERAGE_IFS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 } }, + { SC_OPCODE_COUNT_IFS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COUNTIFS, PAIRED_VAR_ARGS, { 0, 0 } }, + { SC_OPCODE_COUNT_IF, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ZAEHLENWENN, 2, { 0, 0 } }, + { SC_OPCODE_SQRT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_WURZEL, 1, { 0 } }, + { SC_OPCODE_RANDOM, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ZUFALLSZAHL, 0, { } }, + { SC_OPCODE_IS_EVEN, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTGERADE, 1, { 0 } }, + { SC_OPCODE_IS_ODD, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTUNGERADE, 1, { 0 } }, + { SC_OPCODE_COMBIN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KOMBINATIONEN, 2, { 0, 0 } }, + { SC_OPCODE_COMBIN_A, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KOMBINATIONEN2, 2, { 0, 0 } }, + { SC_OPCODE_ARC_COS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCCOS, 1, { 0 } }, + { SC_OPCODE_ARC_SIN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCSIN, 1, { 0 } }, + { SC_OPCODE_ARC_COS_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCOSHYP, 1, { 0 } }, + { SC_OPCODE_ARC_SIN_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARSINHYP, 1, { 0 } }, + { SC_OPCODE_ARC_COT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCCOT, 1, { 0 } }, + { SC_OPCODE_ARC_TAN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCTAN, 1, { 0 } }, + { SC_OPCODE_ARC_COT_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCOTHYP, 1, { 0 } }, + { SC_OPCODE_ARC_TAN_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARTANHYP, 1, { 0 } }, + { SC_OPCODE_COS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COS, 1, { 0 } }, + { SC_OPCODE_SIN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SIN, 1, { 0 } }, + { SC_OPCODE_COT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COT, 1, { 0 } }, + { SC_OPCODE_TAN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TAN, 1, { 0 } }, + { SC_OPCODE_COS_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSHYP, 1, { 0 } }, + { SC_OPCODE_SIN_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SINHYP, 1, { 0 } }, + { SC_OPCODE_COT_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COTHYP, 1, { 0 } }, + { SC_OPCODE_TAN_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TANHYP, 1, { 0 } }, + { SC_OPCODE_ARC_TAN_2, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCTAN2, 2, { 0, 0 } }, + { SC_OPCODE_COSECANT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSECANT, 1, { 0 } }, + { SC_OPCODE_SECANT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SECANT, 1, { 0 } }, + { SC_OPCODE_COSECANT_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSECANTHYP, 1, { 0 } }, + { SC_OPCODE_SECANT_HYP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SECANTHYP, 1, { 0 } }, + { SC_OPCODE_DEG, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_DEG, 1, { 0 } }, + { SC_OPCODE_RAD, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAD, 1, { 0 } }, + { SC_OPCODE_EXP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_EXP, 1, { 0 } }, + { SC_OPCODE_LOG, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG, 2, { 0, 1 } }, + { SC_OPCODE_LN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LN, 1, { 0 } }, + { SC_OPCODE_LOG10, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG10, 1, { 0 } }, + { SC_OPCODE_FACT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FAKULTAET, 1, { 0 } }, + { SC_OPCODE_MOD, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_REST, 2, { 0, 0 } }, + { SC_OPCODE_PLUS_MINUS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_VORZEICHEN, 1, { 0 } }, + { SC_OPCODE_SUB_TOTAL, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TEILERGEBNIS, 2, { 0, 0 } }, + { SC_OPCODE_AGGREGATE, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_AGGREGATE, VAR_ARGS+3, { 0, 0, 0, 1 } }, + { SC_OPCODE_INT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GANZZAHL, 1, { 0 } }, + { SC_OPCODE_TRUNC, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KUERZEN, 2, { 0, 0 } }, + { SC_OPCODE_ROUND, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RUNDEN, 2, { 0, 1 } }, + { SC_OPCODE_ROUND_UP, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_AUFRUNDEN, 2, { 0, 1 } }, + { SC_OPCODE_ROUND_DOWN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABRUNDEN, 2, { 0, 1 } }, + { SC_OPCODE_EVEN, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GERADE, 1, { 0 } }, + { SC_OPCODE_ODD, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UNGERADE, 1, { 0 } }, + { SC_OPCODE_CEIL_MS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_MS, 2, { 0, 0 } }, + { SC_OPCODE_CEIL_PRECISE, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_PRECISE, 2, { 0, 1 } }, + { SC_OPCODE_CEIL_ISO, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_ISO, 2, { 0, 1 } }, + { SC_OPCODE_CEIL, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_OBERGRENZE, 3, { 0, 1, 1 } }, + { SC_OPCODE_CEIL_MATH, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_MATH, 3, { 0, 1, 1 } }, + { SC_OPCODE_FLOOR, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UNTERGRENZE, 3, { 0, 1, 1 } }, + { SC_OPCODE_FLOOR_MS, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_MS, 2, { 0, 0 } }, + { SC_OPCODE_FLOOR_MATH, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_MATH, 3, { 0, 1, 1 } }, + { SC_OPCODE_FLOOR_PRECISE, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_PRECISE, 2, { 0, 1 } }, + { SC_OPCODE_GCD, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GGT, VAR_ARGS, { 0 } }, + { SC_OPCODE_LCM, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KGV, VAR_ARGS, { 0 } }, + { SC_OPCODE_MAT_TRANS, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MTRANS, 1, { 0 } }, + { SC_OPCODE_MAT_MULT, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MMULT, 2, { 0, 0 } }, + { SC_OPCODE_MAT_DET, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MDET, 1, { 0 } }, + { SC_OPCODE_MAT_INV, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MINV, 1, { 0 } }, + { SC_OPCODE_MATRIX_UNIT, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_EINHEITSMATRIX, 1, { 0 } }, + { SC_OPCODE_SUM_PRODUCT, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMENPRODUKT, VAR_ARGS, { 0 } }, + { SC_OPCODE_SUM_X2MY2, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEX2MY2, 2, { 0, 0 } }, + { SC_OPCODE_SUM_X2DY2, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEX2PY2, 2, { 0, 0 } }, + { SC_OPCODE_SUM_XMY2, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEXMY2, 2, { 0, 0 } }, + { SC_OPCODE_FREQUENCY, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_HAEUFIGKEIT, 2, { 0, 0 } }, + { SC_OPCODE_LINEST, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_RGP, 4, { 0, 1, 1, 1 } }, + { SC_OPCODE_LOGEST, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_RKP, 4, { 0, 1, 1, 1 } }, + { SC_OPCODE_TREND, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_TREND, 4, { 0, 1, 1, 1 } }, + { SC_OPCODE_GROWTH, 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_VARIATION, 4, { 0, 1, 1, 1 } }, + { SC_OPCODE_COUNT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHL, VAR_ARGS, { 0 } }, + { SC_OPCODE_COUNT_2, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHL2, VAR_ARGS, { 0 } }, + { SC_OPCODE_MAX, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAX, VAR_ARGS, { 0 } }, + { SC_OPCODE_MAX_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAXA, VAR_ARGS, { 0 } }, + { SC_OPCODE_MIN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MIN, VAR_ARGS, { 0 } }, + { SC_OPCODE_MIN_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MINA, VAR_ARGS, { 0 } }, + { SC_OPCODE_VAR, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZ, VAR_ARGS, { 0 } }, + { SC_OPCODE_VAR_S, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VAR_S, VAR_ARGS, { 0 } }, + { SC_OPCODE_VAR_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZA, VAR_ARGS, { 0 } }, + { SC_OPCODE_VAR_P, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZEN, VAR_ARGS, { 0 } }, + { SC_OPCODE_VAR_P_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VAR_P_MS, VAR_ARGS, { 0 } }, + { SC_OPCODE_VAR_P_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZENA, VAR_ARGS, { 0 } }, + { SC_OPCODE_ST_DEV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABW, VAR_ARGS, { 0 } }, + { SC_OPCODE_ST_DEV_S, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ST_DEV_S, VAR_ARGS, { 0 } }, + { SC_OPCODE_ST_DEV_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWA, VAR_ARGS, { 0 } }, + { SC_OPCODE_ST_DEV_P, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWN, VAR_ARGS, { 0 } }, + { SC_OPCODE_ST_DEV_P_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ST_DEV_P_MS, VAR_ARGS, { 0 } }, + { SC_OPCODE_ST_DEV_P_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWNA, VAR_ARGS, { 0 } }, + { SC_OPCODE_AVERAGE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELWERT, VAR_ARGS, { 0 } }, + { SC_OPCODE_AVERAGE_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELWERTA, VAR_ARGS, { 0 } }, + { SC_OPCODE_DEV_SQ, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SUMQUADABW, VAR_ARGS, { 0 } }, + { SC_OPCODE_AVE_DEV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELABW, VAR_ARGS, { 0 } }, + { SC_OPCODE_SKEW, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SCHIEFE, VAR_ARGS, { 0 } }, + { SC_OPCODE_SKEWP, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SKEWP, VAR_ARGS, { 0 } }, + { SC_OPCODE_KURT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KURT, VAR_ARGS, { 0 } }, + { SC_OPCODE_GEO_MEAN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GEOMITTEL, VAR_ARGS, { 0 } }, + { SC_OPCODE_HAR_MEAN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HARMITTEL, VAR_ARGS, { 0 } }, + { SC_OPCODE_MODAL_VALUE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODALWERT, VAR_ARGS, { 0 } }, + { SC_OPCODE_MODAL_VALUE_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODAL_VALUE_MS, VAR_ARGS, { 0 } }, + { SC_OPCODE_MODAL_VALUE_MULTI, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODAL_VALUE_MULTI, VAR_ARGS, { 0 } }, + { SC_OPCODE_MEDIAN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MEDIAN, VAR_ARGS, { 0 } }, + { SC_OPCODE_PERCENTILE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUANTIL, 2, { 0, 0 } }, + { SC_OPCODE_PERCENTILE_EXC, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTILE_EXC, 2, { 0, 0 } }, + { SC_OPCODE_PERCENTILE_INC, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTILE_INC, 2, { 0, 0 } }, + { SC_OPCODE_QUARTILE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE, 2, { 0, 0 } }, + { SC_OPCODE_QUARTILE_EXC, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE_EXC, 2, { 0, 0 } }, + { SC_OPCODE_QUARTILE_INC, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE_INC, 2, { 0, 0 } }, + { SC_OPCODE_LARGE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KGROESSTE, 2, { 0, 0 } }, + { SC_OPCODE_SMALL, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KKLEINSTE, 2, { 0, 0 } }, + { SC_OPCODE_PERCENT_RANK, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUANTILSRANG, 3, { 0, 0, 1 } }, + { SC_OPCODE_PERCENT_RANK_EXC, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTRANK_EXC, 3, { 0, 0, 1 } }, + { SC_OPCODE_PERCENT_RANK_INC, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTRANK_INC, 3, { 0, 0, 1 } }, + { SC_OPCODE_RANK, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANG, 3, { 0, 0, 1 } }, + { SC_OPCODE_RANK_EQ, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANK_EQ, 3, { 0, 0, 1 } }, + { SC_OPCODE_RANK_AVG, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANK_AVG, 3, { 0, 0, 1 } }, + { SC_OPCODE_TRIM_MEAN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GESTUTZTMITTEL, 2, { 0, 0 } }, + { SC_OPCODE_PROB, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WAHRSCHBEREICH, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_B, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_B, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_PHI, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PHI, 1, { 0 } }, + { SC_OPCODE_GAUSS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAUSS, 1, { 0 } }, + { SC_OPCODE_FISHER, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FISHER, 1, { 0 } }, + { SC_OPCODE_FISHER_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FISHERINV, 1, { 0 } }, + { SC_OPCODE_BINOM_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOMVERT, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_BINOM_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOM_DIST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_NEG_BINOM_VERT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NEGBINOMVERT, 3, { 0, 0, 0 } }, + { SC_OPCODE_NEG_BINOM_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NEGBINOMDIST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_CRIT_BINOM, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KRITBINOM, 3, { 0, 0, 0 } }, + { SC_OPCODE_BINOM_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOM_INV_MS, 3, { 0, 0, 0 } }, + { SC_OPCODE_POISSON_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_POISSON, 3, { 0, 0, 1 } }, + { SC_OPCODE_POISSON_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_POISSON_DIST_MS, 3, { 0, 0, 1 } }, + { SC_OPCODE_NORM_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMVERT, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_NORM_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMDIST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_NORM_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMINV, 3, { 0, 0, 0 } }, + { SC_OPCODE_NORM_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMINV_MS, 3, { 0, 0, 0 } }, + { SC_OPCODE_STD_NORM_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDNORMVERT, 1, { 0 } }, + { SC_OPCODE_STD_NORM_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STD_NORMDIST_MS, 2, { 0, 0 } }, + { SC_OPCODE_S_NORM_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDNORMINV, 1, { 0 } }, + { SC_OPCODE_S_NORM_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STD_NORMINV_MS, 1, { 0 } }, + { SC_OPCODE_LOG_NORM_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGNORMVERT, 4, { 0, 1, 1, 1 } }, + { SC_OPCODE_LOG_NORM_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGNORMDIST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_LOG_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGINV, 3, { 0, 1, 1 } }, + { SC_OPCODE_LOG_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGINV, 3, { 0, 0, 0 } }, + { SC_OPCODE_EXP_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_EXPONVERT, 3, { 0, 0, 0 } }, + { SC_OPCODE_EXP_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_EXP_DIST_MS, 3, { 0, 0, 0 } }, + { SC_OPCODE_GAMMA_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAVERT, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_GAMMA_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMADIST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_GAMMA_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAINV, 3, { 0, 0, 0 } }, + { SC_OPCODE_GAMMA_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAINV_MS, 3, { 0, 0, 0 } }, + { SC_OPCODE_GAMMA_LN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMALN, 1, { 0 } }, + { SC_OPCODE_GAMMA_LN_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMALN_MS, 1, { 0 } }, + { SC_OPCODE_GAMMA, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMA, 1, { 0 } }, + { SC_OPCODE_BETA_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAVERT, 6, { 0, 0, 0, 1, 1, 1 } }, + { SC_OPCODE_BETA_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAINV, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_BETA_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETADIST_MS, 6, { 0, 0, 0, 0, 1, 1 } }, + { SC_OPCODE_BETA_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAINV_MS, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_WEIBULL, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WEIBULL, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_WEIBULL_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WEIBULL_DIST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_HYP_GEOM_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HYPGEOMVERT, 5, { 0, 0, 0, 0, 1 } }, + { SC_OPCODE_HYP_GEOM_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HYP_GEOM_DIST_MS, 5, { 0, 0, 0, 0, 0 } }, + { SC_OPCODE_T_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TVERT, 3, { 0, 0, 0 } }, + { SC_OPCODE_T_DIST_2T, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_2T, 2, { 0, 0 } }, + { SC_OPCODE_T_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_MS, 3, { 0, 0, 0 } }, + { SC_OPCODE_T_DIST_RT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_RT, 2, { 0, 0 } }, + { SC_OPCODE_T_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV, 2, { 0, 0 } }, + { SC_OPCODE_T_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV_MS, 2, { 0, 0 } }, + { SC_OPCODE_T_INV_2T, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV_2T, 2, { 0, 0 } }, + { SC_OPCODE_F_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FVERT, 3, { 0, 0, 0 } }, + { SC_OPCODE_F_DIST_LT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_DIST_LT, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_F_DIST_RT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_DIST_RT, 3, { 0, 0, 0 } }, + { SC_OPCODE_F_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FINV, 3, { 0, 0, 0 } }, + { SC_OPCODE_F_INV_LT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_INV_LT, 3, { 0, 0, 0 } }, + { SC_OPCODE_F_INV_RT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_INV_RT, 3, { 0, 0, 0 } }, + { SC_OPCODE_CHI_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIVERT, 2, { 0, 0 } }, + { SC_OPCODE_CHI_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIVERT_MS, 2, { 0, 0 } }, + { SC_OPCODE_CHISQ_DIST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQDIST, 3, { 0, 0, 1 } }, + { SC_OPCODE_CHISQ_DIST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQDIST_MS, 3, { 0, 0, 0 } }, + { SC_OPCODE_CHI_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIINV, 2, { 0, 0 } }, + { SC_OPCODE_CHI_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIINV_MS, 2, { 0, 0 } }, + { SC_OPCODE_CHISQ_INV, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQINV, 2, { 0, 0 } }, + { SC_OPCODE_CHISQ_INV_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQINV_MS, 2, { 0, 0 } }, + { SC_OPCODE_STANDARD, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDARDISIERUNG, 3, { 0, 0, 0 } }, + { SC_OPCODE_PERMUT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIATIONEN, 2, { 0, 0 } }, + { SC_OPCODE_PERMUTATION_A, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIATIONEN2, 2, { 0, 0 } }, + { SC_OPCODE_CONFIDENCE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KONFIDENZ, 3, { 0, 0, 0 } }, + { SC_OPCODE_CONFIDENCE_N, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CONFIDENCE_N, 3, { 0, 0, 0 } }, + { SC_OPCODE_CONFIDENCE_T, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CONFIDENCE_T, 3, { 0, 0, 0 } }, + { SC_OPCODE_Z_TEST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GTEST, 3, { 0, 0, 1 } }, + { SC_OPCODE_Z_TEST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_Z_TEST_MS, 3, { 0, 0, 1 } }, + { SC_OPCODE_CHI_TEST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHITEST, 2, { 0, 0 } }, + { SC_OPCODE_CHI_TEST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHITEST_MS, 2, { 0, 0 } }, + { SC_OPCODE_F_TEST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FTEST, 2, { 0, 0 } }, + { SC_OPCODE_F_TEST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_TEST_MS, 2, { 0, 0 } }, + { SC_OPCODE_T_TEST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TTEST, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_T_TEST_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TTEST_MS, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_RSQ, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BESTIMMTHEITSMASS, 2, { 0, 0 } }, + { SC_OPCODE_INTERCEPT, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ACHSENABSCHNITT, 2, { 0, 0 } }, + { SC_OPCODE_SLOPE, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STEIGUNG, 2, { 0, 0 } }, + { SC_OPCODE_STEYX, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STFEHLERYX, 2, { 0, 0 } }, + { SC_OPCODE_PEARSON, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PEARSON, 2, { 0, 0 } }, + { SC_OPCODE_CORREL, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KORREL, 2, { 0, 0 } }, + { SC_OPCODE_COVAR, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KOVAR, 2, { 0, 0 } }, + { SC_OPCODE_COVARIANCE_P, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COVARIANCE_P, 2, { 0, 0 } }, + { SC_OPCODE_COVARIANCE_S, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COVARIANCE_S, 2, { 0, 0 } }, + { SC_OPCODE_FORECAST, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SCHAETZER, 3, { 0, 0, 0 } }, + { SC_OPCODE_FORECAST_ETS_ADD, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_ADD, 6, { 0, 0, 0, 1, 1, 1 } }, + { SC_OPCODE_FORECAST_ETS_MUL, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_MUL, 6, { 0, 0, 0, 1, 1, 1 } }, + { SC_OPCODE_FORECAST_ETS_PIA, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_PIA, 7, { 0, 0, 0, 1, 1, 1, 1 } }, + { SC_OPCODE_FORECAST_ETS_PIM, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_PIM, 7, { 0, 0, 0, 1, 1, 1, 1 } }, + { SC_OPCODE_FORECAST_ETS_SEA, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_SEA, 4, { 0, 0, 1, 1 } }, + { SC_OPCODE_FORECAST_ETS_STA, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_STA, 6, { 0, 0, 0, 1, 1, 1 } }, + { SC_OPCODE_FORECAST_ETS_STM, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_STM, 6, { 0, 0, 0, 1, 1, 1 } }, + { SC_OPCODE_FORECAST_LIN, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_LIN, 3, { 0, 0, 0 } }, + { SC_OPCODE_ADDRESS, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ADRESSE, 5, { 0, 0, 1, 1, 1 } }, + { SC_OPCODE_AREAS, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_BEREICHE, 1, { 0 } }, + { SC_OPCODE_CHOOSE, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WAHL, VAR_ARGS+1, { 0, 0 } }, + { SC_OPCODE_COLUMN, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SPALTE, 1, { 1 } }, + { SC_OPCODE_ROW, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ZEILE, 1, { 1 } }, + { SC_OPCODE_SHEET, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TABELLE, 1, { 1 } }, + { SC_OPCODE_COLUMNS, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SPALTEN, 1, { 0 } }, + { SC_OPCODE_ROWS, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ZEILEN, 1, { 0 } }, + { SC_OPCODE_SHEETS, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TABELLEN, 1, { 1 } }, + { SC_OPCODE_H_LOOKUP, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WVERWEIS, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_V_LOOKUP, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SVERWEIS, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_INDEX, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDEX, 4, { 0, 1, 1, 1 } }, + { SC_OPCODE_INDIRECT, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDIREKT, 2, { 0, 1 } }, + { SC_OPCODE_LOOKUP, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERWEIS, 3, { 0, 0, 1 } }, + { SC_OPCODE_MATCH, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERGLEICH, 3, { 0, 0, 1 } }, + { SC_OPCODE_OFFSET, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERSCHIEBUNG, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_ERROR_TYPE, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_FEHLERTYP, 1, { 0 } }, + { SC_OPCODE_ERROR_TYPE_ODF, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ERROR_TYPE_ODF, 1, { 0 } }, + { SC_OPCODE_STYLE, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VORLAGE, 3, { 0, 1, 1 } }, + { SC_OPCODE_DDE, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_DDE, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_HYPERLINK, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_HYPERLINK, 2, { 0, 1 } }, + { SC_OPCODE_GET_PIVOT_DATA, 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_GETPIVOTDATA, VAR_ARGS+2, { 0, 0, 1 } }, + { SC_OPCODE_BAHTTEXT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_BAHTTEXT, 1, { 0 } }, + { SC_OPCODE_JIS, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_JIS, 1, { 0 } }, + { SC_OPCODE_ASC, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ASC, 1, { 0 } }, + { SC_OPCODE_CODE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_CODE, 1, { 0 } }, + { SC_OPCODE_CURRENCY, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_DM, 2, { 0, 1 } }, + { SC_OPCODE_CHAR, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ZEICHEN, 1, { 0 } }, + { SC_OPCODE_CLEAN, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SAEUBERN, 1, { 0 } }, + { SC_OPCODE_CONCAT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_VERKETTEN, VAR_ARGS, { 0 } }, + { SC_OPCODE_CONCAT_MS, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_CONCAT_MS, VAR_ARGS, { 0 } }, + { SC_OPCODE_TEXTJOIN_MS, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXTJOIN_MS, VAR_ARGS + 2, { 0, 0, 0 } }, + { SC_OPCODE_IFS_MS, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFS_MS, PAIRED_VAR_ARGS, { 0, 0 } }, + { SC_OPCODE_SWITCH_MS, 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_SWITCH_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 } }, + { SC_OPCODE_MINIFS_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MINIFS_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 } }, + { SC_OPCODE_MAXIFS_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAXIFS_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 } }, + { SC_OPCODE_EXACT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_IDENTISCH, 2, { 0, 0 } }, + { SC_OPCODE_FIND, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FINDEN, 3, { 0, 0, 1 } }, + { SC_OPCODE_SEARCH, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SUCHEN, 3, { 0, 0, 1 } }, + { SC_OPCODE_TRIM, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GLAETTEN, 1, { 0 } }, + { SC_OPCODE_PROPER, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GROSS2, 1, { 0 } }, + { SC_OPCODE_UPPER, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GROSS, 1, { 0 } }, + { SC_OPCODE_LOWER, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_KLEIN, 1, { 0 } }, + { SC_OPCODE_VALUE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WERT, 1, { 0 } }, + { SC_OPCODE_TEXT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXT, 2, { 0, 0 } }, + { SC_OPCODE_T, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_T, 1, { 0 } }, + { SC_OPCODE_REPLACE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ERSETZEN, 4, { 0, 0, 0, 0 } }, + { SC_OPCODE_FIXED, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FEST, 3, { 0, 0, 1 } }, + { SC_OPCODE_LEN, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LAENGE, 1, { 0 } }, + { SC_OPCODE_LEFT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LINKS, 2, { 0, 1 } }, + { SC_OPCODE_RIGHT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_RECHTS, 2, { 0, 1 } }, + { SC_OPCODE_MID, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEIL, 3, { 0, 0, 0 } }, + { SC_OPCODE_REPT, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WIEDERHOLEN, 2, { 0, 0 } }, + { SC_OPCODE_SUBSTITUTE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WECHSELN, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_BASE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_BASIS, 3, { 0, 0, 1 } }, + { SC_OPCODE_DECIMAL, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_DEZIMAL, 2, { 0, 0 } }, + { SC_OPCODE_CONVERT_OOO, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UMRECHNEN, 3, { 0, 0, 0 } }, + { SC_OPCODE_ROMAN, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ROEMISCH, 2, { 0, 1 } }, + { SC_OPCODE_ARABIC, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ARABISCH, 1, { 0 } }, + { SC_OPCODE_INFO, 0, ID_FUNCTION_GRP_INFO, HID_FUNC_INFO, 1, { 0 } }, + { SC_OPCODE_UNICODE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_UNICODE, 1, { 0 } }, + { SC_OPCODE_UNICHAR, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_UNICHAR, 1, { 0 } }, + { SC_OPCODE_EUROCONVERT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_EUROCONVERT, 5, { 0, 0, 0, 1, 1 } }, + { SC_OPCODE_NUMBERVALUE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_NUMBERVALUE, 3, { 0, 1, 1 } }, + { SC_OPCODE_BITAND, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITAND, 2, { 0, 0 } }, + { SC_OPCODE_BITOR, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITOR, 2, { 0, 0 } }, + { SC_OPCODE_BITXOR, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITXOR, 2, { 0, 0 } }, + { SC_OPCODE_BITRSHIFT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITRSHIFT, 2, { 0, 0 } }, + { SC_OPCODE_BITLSHIFT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITLSHIFT, 2, { 0, 0 } }, + { SC_OPCODE_LENB, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LENB, 1, { 0 } }, + { SC_OPCODE_RIGHTB, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_RIGHTB, 2, { 0, 1 } }, + { SC_OPCODE_LEFTB, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LEFTB, 2, { 0, 1 } }, + { SC_OPCODE_MIDB, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_MIDB, 3, { 0, 0, 0 } }, + { SC_OPCODE_FILTERXML, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FILTERXML, 2, { 0, 0 } }, + { SC_OPCODE_COLOR, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COLOR, 4, { 0, 0, 0, 1 } }, + { SC_OPCODE_WEBSERVICE, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WEBSERVICE, 1, { 0, 0 } }, + { SC_OPCODE_ENCODEURL, 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ENCODEURL, 1, { 0 } }, + { SC_OPCODE_ERF_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ERF_MS, 1, { 0 } }, + { SC_OPCODE_ERFC_MS, 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ERFC_MS, 1, { 0 } }, + { SC_OPCODE_RAWSUBTRACT, 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAWSUBTRACT, VAR_ARGS+2, { 0, 0, 1 } } + }; + ScFuncDesc* pDesc = nullptr; sal_Int32 nStrLen = 0; ::std::list<ScFuncDesc*> tmpFuncList; @@ -394,13 +818,20 @@ ScFunctionList::ScFunctionList() for (sal_uInt16 i = 0; i <= SC_OPCODE_LAST_OPCODE_ID; ++i) { ScResId aRes(RID_SC_FUNC_DESCRIPTIONS_START + i); - aRes.SetRT(RSC_RESOURCE); - // Sub resource of OpCode available? + aRes.SetRT(RSC_STRINGARRAY); + // Opcode Resource available? if (SC_MOD()->GetResMgr()->IsAvailable(aRes)) { pDesc = new ScFuncDesc; bool bSuppressed = false; - ScFuncRes aSubRes( aRes, pDesc, bSuppressed); + + ScFuncDescCore *pEntry = std::find_if(aDescs, aDescs + SAL_N_ELEMENTS(aDescs), + [&i](const ScFuncDescCore &rItem) + { + return rItem.nOpCode == i; + } + ); + ScFuncRes aSubRes(aRes, *pEntry, pDesc, bSuppressed); // Instead of dealing with this exceptional case at 1001 places // we simply don't add an entirely suppressed function to the // list and delete it. @@ -779,18 +1210,17 @@ sal_Unicode ScFunctionMgr::getSingleToken(const formula::IFunctionManager::EToke } // class ScFuncRes: -ScFuncRes::ScFuncRes( ResId &aRes, ScFuncDesc* pDesc, bool & rbSuppressed ) - : Resource(aRes) +ScFuncRes::ScFuncRes(ResId &aRes, const ScFuncDescCore &rEntry, ScFuncDesc* pDesc, bool & rbSuppressed) { const sal_uInt16 nOpCode = aRes.GetId() - RID_SC_FUNC_DESCRIPTIONS_START; - sal_uInt16 nFunctionFlags = GetNum(); + sal_uInt16 nFunctionFlags = rEntry.nFunctionFlags; // Bit 1: entirely suppressed // Bit 2: hidden unless used rbSuppressed = ((nFunctionFlags & 1) != 0); pDesc->mbHidden = ((nFunctionFlags & 2) != 0); - pDesc->nCategory = GetNum(); - pDesc->sHelpId = ReadByteStringRes(); - pDesc->nArgCount = GetNum(); + pDesc->nCategory = rEntry.nCategory; + pDesc->sHelpId = rEntry.pHelpId; + pDesc->nArgCount = rEntry.nArgs; sal_uInt16 nArgs = pDesc->nArgCount; sal_uInt16 nVarArgsSet = 0; if (nArgs >= PAIRED_VAR_ARGS) @@ -803,22 +1233,20 @@ ScFuncRes::ScFuncRes( ResId &aRes, ScFuncDesc* pDesc, bool & rbSuppressed ) nVarArgsSet = 1; nArgs -= VAR_ARGS - nVarArgsSet; } + assert(nArgs <= SAL_N_ELEMENTS(rEntry.aOptionalArgs)); if (nArgs) { pDesc->nVarArgsStart = nArgs - nVarArgsSet; pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs]; for (sal_uInt16 i = 0; i < nArgs; ++i) { - pDesc->pDefArgFlags[i].bOptional = (bool)GetNum(); + pDesc->pDefArgFlags[i].bOptional = (bool)rEntry.aOptionalArgs[i]; } } - // Need to read the value from the resource even if nArgs==0 to advance the - // resource position pointer, so this can't be in the if(nArgs) block above. - sal_uInt16 nSuppressed = GetNum(); - assert(!nSuppressed); (void)nSuppressed; pDesc->pFuncName = new OUString(ScCompiler::GetNativeSymbol(static_cast<OpCode>(nOpCode))); - pDesc->pFuncDesc = new OUString( SC_RESSTR(1) ); + ResStringArray aArr(aRes); + pDesc->pFuncDesc = new OUString(aArr.GetString(0)); if (nArgs) { @@ -828,8 +1256,8 @@ ScFuncRes::ScFuncRes( ResId &aRes, ScFuncDesc* pDesc, bool & rbSuppressed ) pDesc->maDefArgDescs.resize(nArgs); for (sal_uInt16 i = 0; i < nArgs; ++i) { - pDesc->maDefArgNames[i] = SC_RESSTR(2*(i+1) ); - pDesc->maDefArgDescs[i] = SC_RESSTR(2*(i+1)+1); + pDesc->maDefArgNames[i] = aArr.GetString((i*2)+1); + pDesc->maDefArgDescs[i] = aArr.GetString((i*2)+2); // If empty and variable number of arguments and last parameter and // parameter is optional and the previous is not optional, repeat // previous parameter name and description. @@ -851,13 +1279,6 @@ ScFuncRes::ScFuncRes( ResId &aRes, ScFuncDesc* pDesc, bool & rbSuppressed ) } } } - - FreeResource(); -} - -sal_uInt16 ScFuncRes::GetNum() -{ - return ReadShortRes(); } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src index 01d1dae7..ed205af 100644 --- a/sc/source/ui/src/scfuncs.src +++ b/sc/source/ui/src/scfuncs.src @@ -23,46 +23,7 @@ * the function. * * In this sub resource, with index 1 the description of the function is - * given, after that follows an - * - * ExtraData block with: - * - * 16-bit value: - * - * Bit 1: boolean flag whether function is suppressed. Usually 0. This - * may be used to add UI string resources before UI freeze if - * implementation isn't ready yet without displaying them in the - * function wizard, most recent used list and other UI elements. Also - * not available via API then. - * - * Bit 2: boolean flag whether function is hidden in the Function - * Wizard unless used in an expression. - * - * - * Function group (text, math, ...), one of ID_FUNCTION_GRP_... - * - * Help ID, HID_FUNC_... - * - * Number of parameters. VAR_ARGS if variable number, or - * VAR_ARGS+number if number of fixed parameters and variable - * arguments following. Or PAIRED_VAR_ARGS if variable number of - * paired parameters, or PAIRED_VAR_ARGS+number if number of fixed - * parameters and variable paired arguments following. - * - * For every parameter: - * - * Boolean flag whether the parameter is optional. - * - * Number of suppressed parameters. Usually 0. Same meaning and - * mechanism as the flag for the entire function above. - * - * For every suppressed parameter: - * - * The parameter number, offset starting with 0. Variable - * arguments can't be suppressed! - * - * - * ExtraData block followed by two string resources for each parameter, + * given, followed by two string resources for each parameter, * first the type or name of the parameter, second a description of the * parameter. */ @@ -71,13078 +32,4819 @@ #include "formula/compiler.hrc" // -=*# Resource for function DCOUNT #*=- -Resource SC_OPCODE_DB_COUNT+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_COUNT+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Counts the cells of a data range whose contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBANZAHL; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Counts the cells of a data range whose contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DCOUNTA #*=- -Resource SC_OPCODE_DB_COUNT_2+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_COUNT_2+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Counts all non-blank cells of a data range where the content corresponds to the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBANZAHL2; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Counts all non-blank cells of a data range where the content corresponds to the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DAVERAGE #*=- -Resource SC_OPCODE_DB_AVERAGE+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_AVERAGE+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns the average value of all the cells of a data range whose contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBMITTELWERT; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Returns the average value of all the cells of a data range whose contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DGET #*=- -Resource SC_OPCODE_DB_GET+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_GET+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Defines the contents of the cell of a data range which matches the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBAUSZUG; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Defines the contents of the cell of a data range which matches the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DMAX #*=- -Resource SC_OPCODE_DB_MAX+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_MAX+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns the maximum value from all of the cells of a data range which correspond to the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBMAX; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Returns the maximum value from all of the cells of a data range which correspond to the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DMIN #*=- -Resource SC_OPCODE_DB_MIN+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_MIN+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns the minimum of all cells of a data range where the contents correspond to the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBMIN; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Returns the minimum of all cells of a data range where the contents correspond to the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DPRODUCT #*=- -Resource SC_OPCODE_DB_PRODUCT+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_PRODUCT+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Multiplies all cells of a data range where the contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBPRODUKT; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Multiplies all cells of a data range where the contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DSTDEV #*=- -Resource SC_OPCODE_DB_STD_DEV+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_STD_DEV+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Calculates the standard deviation of all cells in a data range whose contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBSTDABW; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Calculates the standard deviation of all cells in a data range whose contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DSTDEVP #*=- -Resource SC_OPCODE_DB_STD_DEV_P+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_STD_DEV_P+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns the standard deviation with regards to the population of all cells of a data range matching the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBSTDABWN; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Returns the standard deviation with regards to the population of all cells of a data range matching the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DSUM #*=- -Resource SC_OPCODE_DB_SUM+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_SUM+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Adds all the cells of a data range where the contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBSUMME; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Adds all the cells of a data range where the contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DVAR #*=- -Resource SC_OPCODE_DB_VAR+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_VAR+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Determines the variance of all the cells in a data range where the contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBVARIANZ; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Determines the variance of all the cells in a data range where the contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DVARP #*=- -Resource SC_OPCODE_DB_VAR_P+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_DB_VAR_P+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Determines variance of a population based on all cells in a data range where contents match the search criteria." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATABASE; - HID_FUNC_DBVARIANZEN; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Database" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The range of cells containing data." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Database field" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "Indicates which database field (column) is to be used for the search criteria." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Search criteria" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Defines the cell range containing the search criteria." ; + < "Determines variance of a population based on all cells in a data range where contents match the search criteria." ; >; + < "Database" ; >; + < "The range of cells containing data." ; >; + < "Database field" ; >; + < "Indicates which database field (column) is to be used for the search criteria." ; >; + < "Search criteria" ; >; + < "Defines the cell range containing the search criteria." ; >; }; }; // -=*# Resource for function DATE #*=- -Resource SC_OPCODE_GET_DATE+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_GET_DATE+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Provides an internal number for the date given." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATETIME; - HID_FUNC_DATUM; - 3; 0; 0; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "year" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "An integer between 1583 and 9956 or 0 and 99 (19xx or 20xx depending on the defined option)." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "month" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "An integer between 1 and 12 representing the month." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "day" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "An integer between 1 and 31 representing the day of the month." ; + < "Provides an internal number for the date given." ; >; + < "year" ; >; + < "An integer between 1583 and 9956 or 0 and 99 (19xx or 20xx depending on the defined option)." ; >; + < "month" ; >; + < "An integer between 1 and 12 representing the month." ; >; + < "day" ; >; + < "An integer between 1 and 31 representing the day of the month." ; >; }; }; // -=*# Resource for function DATE_VALUE #*=- -Resource SC_OPCODE_GET_DATE_VALUE+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_GET_DATE_VALUE+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns an internal number for a text having a possible date format." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATETIME; - HID_FUNC_DATWERT; - 1; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "text" ; - }; - String 3 // Description of Parameter 1 + ItemList [ en-US ] = { - Text [ en-US ] = "A text enclosed in quotation marks which returns a date in a %PRODUCTNAME date format." ; + < "Returns an internal number for a text having a possible date format." ; >; + < "text" ; >; + < "A text enclosed in quotation marks which returns a date in a %PRODUCTNAME date format." ; >; }; }; // -=*# Resource for function DAY #*=- -Resource SC_OPCODE_GET_DAY+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_GET_DAY+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns the sequential date of the month as an integer (1-31) in relation to the date value." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATETIME; - HID_FUNC_TAG; - 1; 0; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Number" ; - }; - String 3 // Description of Parameter 1 + ItemList [ en-US ] = { - Text [ en-US ] = "The internal number for the date." ; + < "Returns the sequential date of the month as an integer (1-31) in relation to the date value." ; >; + < "Number" ; >; + < "The internal number for the date." ; >; }; }; // -=*# Resource for function DAYS360 #*=- -Resource SC_OPCODE_GET_DIFF_DATE_360+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_GET_DIFF_DATE_360+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Calculates the number of days between two dates based on a 360-day year." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATETIME; - HID_FUNC_TAGE360; - 3; 0; 0; 1; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Date_1" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "The start date for calculating the difference in days." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "Date_2" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "The end date for calculating the difference in days." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "Type" ; - }; - String 7 // Description of Parameter 3 + ItemList [ en-US ] = { - Text [ en-US ] = "Method used to form differences: Type = 0 denotes US method (NASD), Type = 1 denotes the European method." ; + < "Calculates the number of days between two dates based on a 360-day year." ; >; + < "Date_1" ; >; + < "The start date for calculating the difference in days." ; >; + < "Date_2" ; >; + < "The end date for calculating the difference in days." ; >; + < "Type" ; >; + < "Method used to form differences: Type = 0 denotes US method (NASD), Type = 1 denotes the European method." ; >; }; }; // -=*# Resource for function NETWORKDAYS #*=- -Resource SC_OPCODE_NETWORKDAYS+RID_SC_FUNC_DESCRIPTIONS_START +StringArray SC_OPCODE_NETWORKDAYS+RID_SC_FUNC_DESCRIPTIONS_START { - String 1 // Description - { - Text [ en-US ] = "Returns the number of workdays between two dates using arguments to indicate weekenddays and holidays." ; - }; - ExtraData = - { - 0; - ID_FUNCTION_GRP_DATETIME; - HID_FUNC_NETWORKDAYS; - 4; 0; 0; 1; 1; - 0; - }; - String 2 // Name of Parameter 1 - { - Text [ en-US ] = "Start Date" ; - }; - String 3 // Description of Parameter 1 - { - Text [ en-US ] = "Start date for calculation." ; - }; - String 4 // Name of Parameter 2 - { - Text [ en-US ] = "End Date" ; - }; - String 5 // Description of Parameter 2 - { - Text [ en-US ] = "End date for calculation." ; - }; - String 6 // Name of Parameter 3 - { - Text [ en-US ] = "list of dates" ; - }; - String 7 // Description of Parameter 3 - { - Text [ en-US ] = "Optional set of one or more dates to be considered as holiday." ; - }; - String 8 // Name of Parameter 4 - { - Text [ en-US ] = "array" ; - }; ... etc. - the rest is truncated
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
