[Libreoffice-commits] core.git: rsc/inc rsc/source sc/inc sc/source
Caolán McNamara
caolanm at redhat.com
Fri Feb 17 14:00:31 UTC 2017
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 <caolanm at redhat.com>
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 <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
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
More information about the Libreoffice-commits
mailing list