LibreOffice Module sc (master)  1
funcdesc.cxx
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3  * This file is part of the LibreOffice project.
4  *
5  * This Source Code Form is subject to the terms of the Mozilla Public
6  * License, v. 2.0. If a copy of the MPL was not distributed with this
7  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8  *
9  * This file incorporates work covered by the following license notice:
10  *
11  * Licensed to the Apache Software Foundation (ASF) under one or more
12  * contributor license agreements. See the NOTICE file distributed
13  * with this work for additional information regarding copyright
14  * ownership. The ASF licenses this file to you under the Apache
15  * License, Version 2.0 (the "License"); you may not use this file
16  * except in compliance with the License. You may obtain a copy of
17  * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18  */
19 
20 #include <funcdesc.hxx>
21 
22 #include <addincol.hxx>
23 #include <appoptio.hxx>
24 #include <callform.hxx>
25 #include <compiler.hxx>
26 #include <compiler.hrc>
27 #include <global.hxx>
28 #include <scfuncs.hrc>
29 #include <scmod.hxx>
30 #include <scresid.hxx>
31 #include <helpids.h>
32 
33 #include <rtl/ustring.hxx>
34 #include <rtl/ustrbuf.hxx>
36 #include <formula/funcvarargs.h>
37 #include <osl/diagnose.h>
38 
39 #include <memory>
40 
41 namespace {
42 
43 struct ScFuncDescCore
44 {
45  /*
46  * An opcode from include/formula/compiler.hxx
47  */
48  sal_uInt16 nOpCode;
49  /*
50  * Pointer to list of strings
51  */
52  const char** pResource;
53  /*
54  * Count of list of strings
55  */
56  size_t nResourceLen;
57  /*
58  * 16-bit value:
59  *
60  * Bit 1: boolean flag whether function is suppressed. Usually 0. This
61  * may be used to add UI string resources before UI freeze if
62  * implementation isn't ready yet without displaying them in the
63  * function wizard, most recent used list and other UI elements. Also
64  * not available via API then.
65  *
66  * Bit 2: boolean flag whether function is hidden in the Function
67  * Wizard unless used in an expression.
68  */
69  sal_uInt16 nFunctionFlags;
70  /*
71  * Function group (text, math, ...), one of ID_FUNCTION_GRP_...
72  */
73  sal_uInt16 nCategory;
74  /*
75  * Help ID, HID_FUNC_...
76  */
77  const char* pHelpId;
78  /*
79  * Number of parameters. VAR_ARGS if variable number, or
80  * VAR_ARGS+number if number of fixed parameters and variable
81  * arguments following. Or PAIRED_VAR_ARGS if variable number of
82  * paired parameters, or PAIRED_VAR_ARGS+number if number of fixed
83  * parameters and variable paired arguments following.
84  */
85  sal_uInt16 nArgs;
86  /*
87  * For every parameter:
88  * Boolean flag whether the parameter is optional.
89  */
90  sal_uInt8 aOptionalArgs[7];
91  /*
92  * Limited number of maximum (variable) parameters, or 0 if no specific
93  * limit other than the general VAR_ARGS-1 value.
94  */
95  sal_uInt16 nVarArgsLimit;
96 };
97 
98 }
99 
100 static void ScFuncRes(const ScFuncDescCore &rEntry, ScFuncDesc*, bool& rbSuppressed);
101 
103  pDefArgFlags (nullptr),
104  nFIndex (0),
105  nCategory (0),
106  nArgCount (0),
107  nVarArgsStart (0),
108  nVarArgsLimit (0),
109  bIncomplete (false),
110  mbHidden (false)
111 {}
112 
114 {
115  Clear();
116 }
117 
119 {
120  sal_uInt16 nArgs = nArgCount;
121  if (nArgs >= PAIRED_VAR_ARGS)
122  nArgs -= PAIRED_VAR_ARGS - 2;
123  else if (nArgs >= VAR_ARGS)
124  nArgs -= VAR_ARGS - 1;
125  if (nArgs)
126  {
127  delete [] pDefArgFlags;
128  }
129  nArgCount = 0;
130  nVarArgsStart = 0;
131  nVarArgsLimit = 0;
132  maDefArgNames.clear();
133  maDefArgDescs.clear();
134  pDefArgFlags = nullptr;
135 
136  mxFuncName.reset();
137  mxFuncDesc.reset();
138 
139  nFIndex = 0;
140  nCategory = 0;
141  sHelpId.clear();
142  bIncomplete = false;
143  mbHidden = false;
144 }
145 
146 OUString ScFuncDesc::GetParamList() const
147 {
148  OUString sep(ScCompiler::GetNativeSymbol(ocSep));
149 
150  OUStringBuffer aSig;
151 
152  if ( nArgCount > 0 )
153  {
154  if ( nArgCount < VAR_ARGS )
155  {
156  sal_uInt16 nLastSuppressed = nArgCount;
157  sal_uInt16 nLastAdded = nArgCount;
158  for ( sal_uInt16 i=0; i<nArgCount; i++ )
159  {
160  nLastAdded = i;
161  aSig.append(maDefArgNames[i]);
162  if ( i != nArgCount-1 )
163  {
164  aSig.append(sep);
165  aSig.append( " " );
166  }
167  }
168  // If only suppressed parameters follow the last added parameter,
169  // remove one "; "
170  if (nLastSuppressed < nArgCount && nLastAdded < nLastSuppressed &&
171  aSig.getLength() >= 2)
172  aSig.setLength(aSig.getLength() - 2);
173  }
174  else if ( nArgCount < PAIRED_VAR_ARGS)
175  {
176  for ( sal_uInt16 nArg = 0; nArg < nVarArgsStart; nArg++ )
177  {
178  aSig.append(maDefArgNames[nArg]);
179  aSig.append(sep);
180  aSig.append( " " );
181  }
182  /* NOTE: Currently there are no suppressed var args parameters. If
183  * there were, we'd have to cope with it here and above for the fix
184  * parameters. For now parameters are always added, so no special
185  * treatment of a trailing "; " necessary. */
186  aSig.append(maDefArgNames[nVarArgsStart]);
187  aSig.append('1');
188  aSig.append(sep);
189  aSig.append(' ');
190  aSig.append(maDefArgNames[nVarArgsStart]);
191  aSig.append('2');
192  aSig.append(sep);
193  aSig.append(" ... ");
194  }
195  else
196  {
197  for ( sal_uInt16 nArg = 0; nArg < nVarArgsStart; nArg++ )
198  {
199  aSig.append(maDefArgNames[nArg]);
200  aSig.append(sep);
201  aSig.append( " " );
202  }
203 
204  aSig.append(maDefArgNames[nVarArgsStart]);
205  aSig.append('1');
206  aSig.append(sep);
207  aSig.append(maDefArgNames[nVarArgsStart+1]);
208  aSig.append('1');
209  aSig.append(sep);
210  aSig.append( " " );
211  aSig.append(maDefArgNames[nVarArgsStart]);
212  aSig.append('2');
213  aSig.append(sep);
214  aSig.append(maDefArgNames[nVarArgsStart+1]);
215  aSig.append('2');
216  aSig.append(sep);
217  aSig.append( " ... " );
218  }
219  }
220 
221  return aSig.makeStringAndClear();
222 }
223 
224 OUString ScFuncDesc::getSignature() const
225 {
226  OUStringBuffer aSig;
227 
228  if(mxFuncName)
229  {
230  aSig.append(*mxFuncName);
231 
232  OUString aParamList = GetParamList();
233  if( !aParamList.isEmpty() )
234  {
235  aSig.append( "( " );
236  aSig.append(aParamList);
237  // U+00A0 (NBSP) prevents automatic line break
238  aSig.append( u'\x00A0' );
239  aSig.append( ")" );
240  }
241  else
242  aSig.append( "()" );
243  }
244  return aSig.makeStringAndClear();
245 }
246 
247 OUString ScFuncDesc::getFormula( const ::std::vector< OUString >& _aArguments ) const
248 {
249  OUString sep = ScCompiler::GetNativeSymbol(ocSep);
250 
251  OUStringBuffer aFormula;
252 
253  if(mxFuncName)
254  {
255  aFormula.append( *mxFuncName );
256 
257  aFormula.append( "(" );
258  if ( nArgCount > 0 && !_aArguments.empty() && !_aArguments[0].isEmpty())
259  {
260  ::std::vector< OUString >::const_iterator aIter = _aArguments.begin();
261  ::std::vector< OUString >::const_iterator aEnd = _aArguments.end();
262 
263  aFormula.append( *aIter );
264  ++aIter;
265  while( aIter != aEnd && !aIter->isEmpty() )
266  {
267  aFormula.append( sep );
268  aFormula.append( *aIter );
269  ++aIter;
270  }
271  }
272 
273  aFormula.append( ")" );
274  }
275  return aFormula.makeStringAndClear();
276 }
277 
279 {
280  return nArgCount;
281 }
282 
284 {
285  OUString sRet;
286  if ( mxFuncName )
287  sRet = *mxFuncName;
288  return sRet;
289 }
290 
292 {
294 }
295 
297 {
298  OUString sRet;
299  if ( mxFuncDesc )
300  sRet = *mxFuncDesc;
301  return sRet;
302 }
303 
305 {
306  return GetSuppressedArgCount();
307 }
308 
309 void ScFuncDesc::fillVisibleArgumentMapping(::std::vector<sal_uInt16>& _rArguments) const
310 {
311  _rArguments.resize( nArgCount);
312  sal_uInt16 value = 0;
313  for (auto & argument : _rArguments)
314  argument = value++;
315 
316  sal_uInt16 nArgs = nArgCount;
317  if (nArgs >= PAIRED_VAR_ARGS)
318  nArgs -= PAIRED_VAR_ARGS - 2;
319  else if (nArgs >= VAR_ARGS)
320  nArgs -= VAR_ARGS - 1;
321  for (sal_uInt16 i=0; i < nArgs; ++i)
322  {
323  _rArguments.push_back(i);
324  }
325 }
326 
328 {
329  // get the full argument description
330  // (add-in has to be instantiated to get the type information)
331 
332  if ( !(bIncomplete && mxFuncName) )
333  return;
334 
336  OUString aIntName(rAddIns.FindFunction( *mxFuncName, true )); // pFuncName is upper-case
337 
338  if ( !aIntName.isEmpty() )
339  {
340  // GetFuncData with bComplete=true loads the component and updates
341  // the global function list if needed.
342 
343  rAddIns.GetFuncData( aIntName, true );
344  }
345 
346  if ( bIncomplete )
347  {
348  OSL_FAIL( "couldn't initialize add-in function" );
349  const_cast<ScFuncDesc*>(this)->bIncomplete = false; // even if there was an error, don't try again
350  }
351 }
352 
353 OString ScFuncDesc::getHelpId() const
354 {
355  return sHelpId;
356 }
357 
359 {
360  return mbHidden;
361 }
362 
364 {
365  return nArgCount;
366 }
367 
368 sal_uInt32 ScFuncDesc::getVarArgsStart() const
369 {
370  return nVarArgsStart;
371 }
372 
373 sal_uInt32 ScFuncDesc::getVarArgsLimit() const
374 {
375  return nVarArgsLimit;
376 }
377 
378 OUString ScFuncDesc::getParameterName(sal_uInt32 _nPos) const
379 {
380  return maDefArgNames[_nPos];
381 }
382 
383 OUString ScFuncDesc::getParameterDescription(sal_uInt32 _nPos) const
384 {
385  return maDefArgDescs[_nPos];
386 }
387 
388 bool ScFuncDesc::isParameterOptional(sal_uInt32 _nPos) const
389 {
390  return pDefArgFlags[_nPos].bOptional;
391 }
392 
394 {
395  return (ScGlobal::GetCaseCollator()->compareString(*a->mxFuncName, *b->mxFuncName ) < 0);
396 }
397 
398 #define ENTRY(CODE) CODE, SAL_N_ELEMENTS(CODE)
399 
401 {
402  sal_Int32 nMaxFuncNameLen = 0; // Length of longest function name
403 
404  // See ScFuncDescCore definition for format details.
405  // This list must be sorted in order of the opcode, dbgutil builds enable _GLIBCXX_DEBUG
406  // which will concept check that the list is sorted on first use to ensure this holds
407  static const ScFuncDescCore aDescs[] =
408  {
409  { SC_OPCODE_IF, ENTRY(SC_OPCODE_IF_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WENN, 3, { 0, 1, 1 }, 0 },
410  { SC_OPCODE_IF_ERROR, ENTRY(SC_OPCODE_IF_ERROR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFERROR, 2, { 0, 0 }, 0 },
411  { SC_OPCODE_IF_NA, ENTRY(SC_OPCODE_IF_NA_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFNA, 2, { 0, 0 }, 0 },
412  { SC_OPCODE_CHOOSE, ENTRY(SC_OPCODE_CHOOSE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WAHL, VAR_ARGS+1, { 0, 0 }, 31 },
413  { SC_OPCODE_AND, ENTRY(SC_OPCODE_AND_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_UND, VAR_ARGS, { 0 }, 0 },
414  { SC_OPCODE_OR, ENTRY(SC_OPCODE_OR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_ODER, VAR_ARGS, { 0 }, 0 },
415  { SC_OPCODE_PI, ENTRY(SC_OPCODE_PI_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PI, 0, { }, 0 },
416  { SC_OPCODE_RANDOM, ENTRY(SC_OPCODE_RANDOM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ZUFALLSZAHL, 0, { }, 0 },
417  { SC_OPCODE_TRUE, ENTRY(SC_OPCODE_TRUE_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_WAHR, 0, { }, 0 },
418  { SC_OPCODE_FALSE, ENTRY(SC_OPCODE_FALSE_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_FALSCH, 0, { }, 0 },
419  { SC_OPCODE_GET_ACT_DATE, ENTRY(SC_OPCODE_GET_ACT_DATE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_HEUTE, 0, { }, 0 },
420  { SC_OPCODE_GET_ACT_TIME, ENTRY(SC_OPCODE_GET_ACT_TIME_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_JETZT, 0, { }, 0 },
421  { SC_OPCODE_NO_VALUE, ENTRY(SC_OPCODE_NO_VALUE_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_NV, 0, { }, 0 },
422  { SC_OPCODE_CURRENT, ENTRY(SC_OPCODE_CURRENT_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_AKTUELL, 0, { }, 0 },
423  { SC_OPCODE_RANDOM_NV, ENTRY(SC_OPCODE_RANDOM_NV_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAND_NV, 0, { }, 0 },
424  { SC_OPCODE_DEG, ENTRY(SC_OPCODE_DEG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_DEG, 1, { 0 }, 0 },
425  { SC_OPCODE_RAD, ENTRY(SC_OPCODE_RAD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAD, 1, { 0 }, 0 },
426  { SC_OPCODE_SIN, ENTRY(SC_OPCODE_SIN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SIN, 1, { 0 }, 0 },
427  { SC_OPCODE_COS, ENTRY(SC_OPCODE_COS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COS, 1, { 0 }, 0 },
428  { SC_OPCODE_TAN, ENTRY(SC_OPCODE_TAN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TAN, 1, { 0 }, 0 },
429  { SC_OPCODE_COT, ENTRY(SC_OPCODE_COT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COT, 1, { 0 }, 0 },
430  { SC_OPCODE_ARC_SIN, ENTRY(SC_OPCODE_ARC_SIN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCSIN, 1, { 0 }, 0 },
431  { SC_OPCODE_ARC_COS, ENTRY(SC_OPCODE_ARC_COS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCCOS, 1, { 0 }, 0 },
432  { SC_OPCODE_ARC_TAN, ENTRY(SC_OPCODE_ARC_TAN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCTAN, 1, { 0 }, 0 },
433  { SC_OPCODE_ARC_COT, ENTRY(SC_OPCODE_ARC_COT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCCOT, 1, { 0 }, 0 },
434  { SC_OPCODE_SIN_HYP, ENTRY(SC_OPCODE_SIN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SINHYP, 1, { 0 }, 0 },
435  { SC_OPCODE_COS_HYP, ENTRY(SC_OPCODE_COS_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSHYP, 1, { 0 }, 0 },
436  { SC_OPCODE_TAN_HYP, ENTRY(SC_OPCODE_TAN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TANHYP, 1, { 0 }, 0 },
437  { SC_OPCODE_COT_HYP, ENTRY(SC_OPCODE_COT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COTHYP, 1, { 0 }, 0 },
438  { SC_OPCODE_ARC_SIN_HYP, ENTRY(SC_OPCODE_ARC_SIN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARSINHYP, 1, { 0 }, 0 },
439  { SC_OPCODE_ARC_COS_HYP, ENTRY(SC_OPCODE_ARC_COS_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCOSHYP, 1, { 0 }, 0 },
440  { SC_OPCODE_ARC_TAN_HYP, ENTRY(SC_OPCODE_ARC_TAN_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARTANHYP, 1, { 0 }, 0 },
441  { SC_OPCODE_ARC_COT_HYP, ENTRY(SC_OPCODE_ARC_COT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCOTHYP, 1, { 0 }, 0 },
442  { SC_OPCODE_COSECANT, ENTRY(SC_OPCODE_COSECANT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSECANT, 1, { 0 }, 0 },
443  { SC_OPCODE_SECANT, ENTRY(SC_OPCODE_SECANT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SECANT, 1, { 0 }, 0 },
444  { SC_OPCODE_COSECANT_HYP, ENTRY(SC_OPCODE_COSECANT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COSECANTHYP, 1, { 0 }, 0 },
445  { SC_OPCODE_SECANT_HYP, ENTRY(SC_OPCODE_SECANT_HYP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SECANTHYP, 1, { 0 }, 0 },
446  { SC_OPCODE_EXP, ENTRY(SC_OPCODE_EXP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_EXP, 1, { 0 }, 0 },
447  { SC_OPCODE_LN, ENTRY(SC_OPCODE_LN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LN, 1, { 0 }, 0 },
448  { SC_OPCODE_SQRT, ENTRY(SC_OPCODE_SQRT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_WURZEL, 1, { 0 }, 0 },
449  { SC_OPCODE_FACT, ENTRY(SC_OPCODE_FACT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FAKULTAET, 1, { 0 }, 0 },
450  { SC_OPCODE_GET_YEAR, ENTRY(SC_OPCODE_GET_YEAR_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_JAHR, 1, { 0 }, 0 },
451  { SC_OPCODE_GET_MONTH, ENTRY(SC_OPCODE_GET_MONTH_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_MONAT, 1, { 0 }, 0 },
452  { SC_OPCODE_GET_DAY, ENTRY(SC_OPCODE_GET_DAY_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAG, 1, { 0 }, 0 },
453  { SC_OPCODE_GET_HOUR, ENTRY(SC_OPCODE_GET_HOUR_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_STUNDE, 1, { 0 }, 0 },
454  { SC_OPCODE_GET_MIN, ENTRY(SC_OPCODE_GET_MIN_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_MINUTE, 1, { 0 }, 0 },
455  { SC_OPCODE_GET_SEC, ENTRY(SC_OPCODE_GET_SEC_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_SEKUNDE, 1, { 0 }, 0 },
456  { SC_OPCODE_PLUS_MINUS, ENTRY(SC_OPCODE_PLUS_MINUS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_VORZEICHEN, 1, { 0 }, 0 },
457  { SC_OPCODE_ABS, ENTRY(SC_OPCODE_ABS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABS, 1, { 0 }, 0 },
458  { SC_OPCODE_INT, ENTRY(SC_OPCODE_INT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GANZZAHL, 1, { 0 }, 0 },
459  { SC_OPCODE_PHI, ENTRY(SC_OPCODE_PHI_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PHI, 1, { 0 }, 0 },
460  { SC_OPCODE_GAUSS, ENTRY(SC_OPCODE_GAUSS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAUSS, 1, { 0 }, 0 },
461  { SC_OPCODE_IS_EMPTY, ENTRY(SC_OPCODE_IS_EMPTY_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTLEER, 1, { 0 }, 0 },
462  { SC_OPCODE_IS_STRING, ENTRY(SC_OPCODE_IS_STRING_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTTEXT, 1, { 0 }, 0 },
463  { SC_OPCODE_IS_NON_STRING, ENTRY(SC_OPCODE_IS_NON_STRING_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTKTEXT, 1, { 0 }, 0 },
464  { SC_OPCODE_IS_LOGICAL, ENTRY(SC_OPCODE_IS_LOGICAL_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTLOG, 1, { 0 }, 0 },
465  { SC_OPCODE_TYPE, ENTRY(SC_OPCODE_TYPE_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_TYP, 1, { 0 }, 0 },
466  { SC_OPCODE_IS_REF, ENTRY(SC_OPCODE_IS_REF_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTBEZUG, 1, { 0 }, 0 },
467  { SC_OPCODE_IS_VALUE, ENTRY(SC_OPCODE_IS_VALUE_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTZAHL, 1, { 0 }, 0 },
468  { SC_OPCODE_IS_FORMULA, ENTRY(SC_OPCODE_IS_FORMULA_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFORMEL, 1, { 0 }, 0 },
469  { SC_OPCODE_IS_NV, ENTRY(SC_OPCODE_IS_NV_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTNV, 1, { 0 }, 0 },
470  { SC_OPCODE_IS_ERR, ENTRY(SC_OPCODE_IS_ERR_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFEHL, 1, { 0 }, 0 },
471  { SC_OPCODE_IS_ERROR, ENTRY(SC_OPCODE_IS_ERROR_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTFEHLER, 1, { 0 }, 0 },
472  { SC_OPCODE_IS_EVEN, ENTRY(SC_OPCODE_IS_EVEN_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTGERADE, 1, { 0 }, 0 },
473  { SC_OPCODE_IS_ODD, ENTRY(SC_OPCODE_IS_ODD_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ISTUNGERADE, 1, { 0 }, 0 },
474  { SC_OPCODE_N, ENTRY(SC_OPCODE_N_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_N, 1, { 0 }, 0 },
475  { SC_OPCODE_GET_DATE_VALUE, ENTRY(SC_OPCODE_GET_DATE_VALUE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATWERT, 1, { 0 }, 0 },
476  { SC_OPCODE_GET_TIME_VALUE, ENTRY(SC_OPCODE_GET_TIME_VALUE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ZEITWERT, 1, { 0 }, 0 },
477  { SC_OPCODE_CODE, ENTRY(SC_OPCODE_CODE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_CODE, 1, { 0 }, 0 },
478  { SC_OPCODE_TRIM, ENTRY(SC_OPCODE_TRIM_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GLAETTEN, 1, { 0 }, 0 },
479  { SC_OPCODE_UPPER, ENTRY(SC_OPCODE_UPPER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GROSS, 1, { 0 }, 0 },
480  { SC_OPCODE_PROPER, ENTRY(SC_OPCODE_PROPER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_GROSS2, 1, { 0 }, 0 },
481  { SC_OPCODE_LOWER, ENTRY(SC_OPCODE_LOWER_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_KLEIN, 1, { 0 }, 0 },
482  { SC_OPCODE_LEN, ENTRY(SC_OPCODE_LEN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LAENGE, 1, { 0 }, 0 },
483  { SC_OPCODE_T, ENTRY(SC_OPCODE_T_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_T, 1, { 0 }, 0 },
484  { SC_OPCODE_VALUE, ENTRY(SC_OPCODE_VALUE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WERT, 1, { 0 }, 0 },
485  { SC_OPCODE_CLEAN, ENTRY(SC_OPCODE_CLEAN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SAEUBERN, 1, { 0 }, 0 },
486  { SC_OPCODE_CHAR, ENTRY(SC_OPCODE_CHAR_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ZEICHEN, 1, { 0 }, 0 },
487  { SC_OPCODE_LOG10, ENTRY(SC_OPCODE_LOG10_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG10, 1, { 0 }, 0 },
488  { SC_OPCODE_EVEN, ENTRY(SC_OPCODE_EVEN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GERADE, 1, { 0 }, 0 },
489  { SC_OPCODE_ODD, ENTRY(SC_OPCODE_ODD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UNGERADE, 1, { 0 }, 0 },
490  { SC_OPCODE_STD_NORM_DIST, ENTRY(SC_OPCODE_STD_NORM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDNORMVERT, 1, { 0 }, 0 },
491  { SC_OPCODE_FISHER, ENTRY(SC_OPCODE_FISHER_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FISHER, 1, { 0 }, 0 },
492  { SC_OPCODE_FISHER_INV, ENTRY(SC_OPCODE_FISHER_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FISHERINV, 1, { 0 }, 0 },
493  { SC_OPCODE_S_NORM_INV, ENTRY(SC_OPCODE_S_NORM_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDNORMINV, 1, { 0 }, 0 },
494  { SC_OPCODE_GAMMA_LN, ENTRY(SC_OPCODE_GAMMA_LN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMALN, 1, { 0 }, 0 },
495  { SC_OPCODE_ERROR_TYPE, ENTRY(SC_OPCODE_ERROR_TYPE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_FEHLERTYP, 1, { 0 }, 0 },
496  { SC_OPCODE_FORMULA, ENTRY(SC_OPCODE_FORMULA_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_FORMEL, 1, { 0 }, 0 },
497  { SC_OPCODE_ARABIC, ENTRY(SC_OPCODE_ARABIC_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ARABISCH, 1, { 0 }, 0 },
498  { SC_OPCODE_INFO, ENTRY(SC_OPCODE_INFO_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_INFO, 1, { 0 }, 0 },
499  { SC_OPCODE_BAHTTEXT, ENTRY(SC_OPCODE_BAHTTEXT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_BAHTTEXT, 1, { 0 }, 0 },
500  { SC_OPCODE_JIS, ENTRY(SC_OPCODE_JIS_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_JIS, 1, { 0 }, 0 },
501  { SC_OPCODE_ASC, ENTRY(SC_OPCODE_ASC_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ASC, 1, { 0 }, 0 },
502  { SC_OPCODE_UNICODE, ENTRY(SC_OPCODE_UNICODE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_UNICODE, 1, { 0 }, 0 },
503  { SC_OPCODE_UNICHAR, ENTRY(SC_OPCODE_UNICHAR_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_UNICHAR, 1, { 0 }, 0 },
504  { SC_OPCODE_GAMMA, ENTRY(SC_OPCODE_GAMMA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMA, 1, { 0 }, 0 },
505  { SC_OPCODE_GAMMA_LN_MS, ENTRY(SC_OPCODE_GAMMA_LN_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMALN_MS, 1, { 0 }, 0 },
506  { SC_OPCODE_ERF_MS, ENTRY(SC_OPCODE_ERF_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ERF_MS, 1, { 0 }, 0 },
507  { SC_OPCODE_ERFC_MS, ENTRY(SC_OPCODE_ERFC_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ERFC_MS, 1, { 0 }, 0 },
508  { SC_OPCODE_ERROR_TYPE_ODF, ENTRY(SC_OPCODE_ERROR_TYPE_ODF_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ERROR_TYPE_ODF, 1, { 0 }, 0 },
509  { SC_OPCODE_ENCODEURL, ENTRY(SC_OPCODE_ENCODEURL_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ENCODEURL, 1, { 0 }, 0 },
510  { SC_OPCODE_ISOWEEKNUM, ENTRY(SC_OPCODE_ISOWEEKNUM_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ISOWEEKNUM, 1, { 0 }, 0 },
511  { SC_OPCODE_NOT, ENTRY(SC_OPCODE_NOT_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_NICHT, 1, { 0 }, 0 },
512  { SC_OPCODE_ARC_TAN_2, ENTRY(SC_OPCODE_ARC_TAN_2_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ARCTAN2, 2, { 0, 0 }, 0 },
513  { SC_OPCODE_CEIL, ENTRY(SC_OPCODE_CEIL_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_OBERGRENZE, 3, { 0, 1, 1 }, 0 },
514  { SC_OPCODE_FLOOR, ENTRY(SC_OPCODE_FLOOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UNTERGRENZE, 3, { 0, 1, 1 }, 0 },
515  { SC_OPCODE_ROUND, ENTRY(SC_OPCODE_ROUND_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RUNDEN, 2, { 0, 1 }, 0 },
516  { SC_OPCODE_ROUND_UP, ENTRY(SC_OPCODE_ROUND_UP_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_AUFRUNDEN, 2, { 0, 1 }, 0 },
517  { SC_OPCODE_ROUND_DOWN, ENTRY(SC_OPCODE_ROUND_DOWN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ABRUNDEN, 2, { 0, 1 }, 0 },
518  { SC_OPCODE_TRUNC, ENTRY(SC_OPCODE_TRUNC_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KUERZEN, 2, { 0, 0 }, 0 },
519  { SC_OPCODE_LOG, ENTRY(SC_OPCODE_LOG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_LOG, 2, { 0, 1 }, 0 },
520  { SC_OPCODE_POWER, ENTRY(SC_OPCODE_POWER_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_POTENZ, 2, { 0, 0 }, 0 },
521  { SC_OPCODE_GCD, ENTRY(SC_OPCODE_GCD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_GGT, VAR_ARGS, { 0 }, 0 },
522  { SC_OPCODE_LCM, ENTRY(SC_OPCODE_LCM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KGV, VAR_ARGS, { 0 }, 0 },
523  { SC_OPCODE_MOD, ENTRY(SC_OPCODE_MOD_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_REST, 2, { 0, 0 }, 0 },
524  { SC_OPCODE_SUM_PRODUCT, ENTRY(SC_OPCODE_SUM_PRODUCT_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMENPRODUKT, VAR_ARGS, { 0 }, 0 },
525  { SC_OPCODE_SUM_SQ, ENTRY(SC_OPCODE_SUM_SQ_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_QUADRATESUMME, VAR_ARGS, { 0 }, 0 },
526  { SC_OPCODE_SUM_X2MY2, ENTRY(SC_OPCODE_SUM_X2MY2_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEX2MY2, 2, { 0, 0 }, 0 },
527  { SC_OPCODE_SUM_X2DY2, ENTRY(SC_OPCODE_SUM_X2DY2_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEX2PY2, 2, { 0, 0 }, 0 },
528  { SC_OPCODE_SUM_XMY2, ENTRY(SC_OPCODE_SUM_XMY2_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_SUMMEXMY2, 2, { 0, 0 }, 0 },
529  { SC_OPCODE_GET_DATE, ENTRY(SC_OPCODE_GET_DATE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATUM, 3, { 0, 0, 0 }, 0 },
530  { SC_OPCODE_GET_TIME, ENTRY(SC_OPCODE_GET_TIME_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_ZEIT, 3, { 0, 0, 0 }, 0 },
531  { SC_OPCODE_GET_DIFF_DATE, ENTRY(SC_OPCODE_GET_DIFF_DATE_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAGE, 2, { 0, 0 }, 0 },
532  { SC_OPCODE_GET_DIFF_DATE_360, ENTRY(SC_OPCODE_GET_DIFF_DATE_360_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_TAGE360, 3, { 0, 0, 1 }, 0 },
533  { SC_OPCODE_MIN, ENTRY(SC_OPCODE_MIN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MIN, VAR_ARGS, { 0 }, 0 },
534  { SC_OPCODE_MAX, ENTRY(SC_OPCODE_MAX_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAX, VAR_ARGS, { 0 }, 0 },
535  { SC_OPCODE_SUM, ENTRY(SC_OPCODE_SUM_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMME, VAR_ARGS, { 0 }, 0 },
536  { SC_OPCODE_PRODUCT, ENTRY(SC_OPCODE_PRODUCT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_PRODUKT, VAR_ARGS, { 0 }, 0 },
537  { SC_OPCODE_AVERAGE, ENTRY(SC_OPCODE_AVERAGE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELWERT, VAR_ARGS, { 0 }, 0 },
538  { SC_OPCODE_COUNT, ENTRY(SC_OPCODE_COUNT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHL, VAR_ARGS, { 0 }, 0 },
539  { SC_OPCODE_COUNT_2, ENTRY(SC_OPCODE_COUNT_2_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHL2, VAR_ARGS, { 0 }, 0 },
540  { SC_OPCODE_NPV, ENTRY(SC_OPCODE_NPV_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_NBW, VAR_ARGS+1, { 0, 0 }, 0 },
541  { SC_OPCODE_IRR, ENTRY(SC_OPCODE_IRR_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_IKV, 2, { 0, 1 }, 0 },
542  { SC_OPCODE_VAR, ENTRY(SC_OPCODE_VAR_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZ, VAR_ARGS, { 0 }, 0 },
543  { SC_OPCODE_VAR_P, ENTRY(SC_OPCODE_VAR_P_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZEN, VAR_ARGS, { 0 }, 0 },
544  { SC_OPCODE_ST_DEV, ENTRY(SC_OPCODE_ST_DEV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABW, VAR_ARGS, { 0 }, 0 },
545  { SC_OPCODE_ST_DEV_P, ENTRY(SC_OPCODE_ST_DEV_P_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWN, VAR_ARGS, { 0 }, 0 },
546  { SC_OPCODE_B, ENTRY(SC_OPCODE_B_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_B, 4, { 0, 0, 0, 1 }, 0 },
547  { SC_OPCODE_NORM_DIST, ENTRY(SC_OPCODE_NORM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMVERT, 4, { 0, 0, 0, 1 }, 0 },
548  { SC_OPCODE_EXP_DIST, ENTRY(SC_OPCODE_EXP_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_EXPONVERT, 3, { 0, 0, 0 }, 0 },
549  { SC_OPCODE_BINOM_DIST, ENTRY(SC_OPCODE_BINOM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOMVERT, 4, { 0, 0, 0, 0 }, 0 },
550  { SC_OPCODE_POISSON_DIST, ENTRY(SC_OPCODE_POISSON_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_POISSON, 3, { 0, 0, 1 }, 0 },
551  { SC_OPCODE_COMBIN, ENTRY(SC_OPCODE_COMBIN_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KOMBINATIONEN, 2, { 0, 0 }, 0 },
552  { SC_OPCODE_COMBIN_A, ENTRY(SC_OPCODE_COMBIN_A_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_KOMBINATIONEN2, 2, { 0, 0 }, 0 },
553  { SC_OPCODE_PERMUT, ENTRY(SC_OPCODE_PERMUT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIATIONEN, 2, { 0, 0 }, 0 },
554  { SC_OPCODE_PERMUTATION_A, ENTRY(SC_OPCODE_PERMUTATION_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIATIONEN2, 2, { 0, 0 }, 0 },
555  { SC_OPCODE_PV, ENTRY(SC_OPCODE_PV_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_BW, 5, { 0, 0, 0, 1, 1 }, 0 },
556  { SC_OPCODE_SYD, ENTRY(SC_OPCODE_SYD_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_DIA, 4, { 0, 0, 0, 0 }, 0 },
557  { SC_OPCODE_DDB, ENTRY(SC_OPCODE_DDB_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_GDA, 5, { 0, 0, 0, 0, 1 }, 0 },
558  { SC_OPCODE_DB, ENTRY(SC_OPCODE_DB_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_GDA2, 5, { 0, 0, 0, 0, 1 }, 0 },
559  { SC_OPCODE_VBD , ENTRY(SC_OPCODE_VBD_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_VDB, 7, { 0, 0, 0, 0, 0, 1, 1 }, 0 },
560  { SC_OPCODE_PDURATION, ENTRY(SC_OPCODE_PDURATION_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_LAUFZEIT, 3, { 0, 0, 0 }, 0 },
561  { SC_OPCODE_SLN, ENTRY(SC_OPCODE_SLN_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_LIA, 3, { 0, 0, 0 }, 0 },
562  { SC_OPCODE_PMT, ENTRY(SC_OPCODE_PMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_RMZ, 5, { 0, 0, 0, 1, 1 }, 0 },
563  { SC_OPCODE_COLUMNS, ENTRY(SC_OPCODE_COLUMNS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SPALTEN, 1, { 0 }, 0 },
564  { SC_OPCODE_ROWS, ENTRY(SC_OPCODE_ROWS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ZEILEN, 1, { 0 }, 0 },
565  { SC_OPCODE_COLUMN, ENTRY(SC_OPCODE_COLUMN_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SPALTE, 1, { 1 }, 0 },
566  { SC_OPCODE_ROW, ENTRY(SC_OPCODE_ROW_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ZEILE, 1, { 1 }, 0 },
567  { SC_OPCODE_RRI, ENTRY(SC_OPCODE_RRI_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZGZ, 3, { 0, 0, 0 }, 0 },
568  { SC_OPCODE_FV, ENTRY(SC_OPCODE_FV_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZW, 5, { 0, 0, 0, 1, 1 }, 0 },
569  { SC_OPCODE_NPER, ENTRY(SC_OPCODE_NPER_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZZR, 5, { 0, 0, 0, 1, 1 }, 0 },
570  { SC_OPCODE_RATE, ENTRY(SC_OPCODE_RATE_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZINS, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
571  { SC_OPCODE_IPMT, ENTRY(SC_OPCODE_IPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ZINSZ, 6, { 0, 0, 0, 0, 1, 1 }, 0 },
572  { SC_OPCODE_PPMT, ENTRY(SC_OPCODE_PPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KAPZ, 6, { 0, 0, 0, 0, 1, 1 }, 0 },
573  { SC_OPCODE_CUM_IPMT, ENTRY(SC_OPCODE_CUM_IPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KUMZINSZ, 6, { 0, 0, 0, 0, 0, 0 }, 0 },
574  { SC_OPCODE_CUM_PRINC, ENTRY(SC_OPCODE_CUM_PRINC_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_KUMKAPITAL, 6, { 0, 0, 0, 0, 0, 0 }, 0 },
575  { SC_OPCODE_EFFECT, ENTRY(SC_OPCODE_EFFECT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_EFFEKTIV, 2, { 0, 0 }, 0 },
576  { SC_OPCODE_NOMINAL, ENTRY(SC_OPCODE_NOMINAL_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_NOMINAL, 2, { 0, 0 }, 0 },
577  { SC_OPCODE_SUB_TOTAL, ENTRY(SC_OPCODE_SUB_TOTAL_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_TEILERGEBNIS, 2, { 0, 0 }, 0 },
578  { SC_OPCODE_DB_SUM, ENTRY(SC_OPCODE_DB_SUM_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSUMME, 3, { 0, 0, 0 }, 0 },
579  { SC_OPCODE_DB_COUNT, ENTRY(SC_OPCODE_DB_COUNT_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL, 3, { 0, 0, 0 }, 0 },
580  { SC_OPCODE_DB_COUNT_2, ENTRY(SC_OPCODE_DB_COUNT_2_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBANZAHL2, 3, { 0, 0, 0 }, 0 },
581  { SC_OPCODE_DB_AVERAGE, ENTRY(SC_OPCODE_DB_AVERAGE_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMITTELWERT, 3, { 0, 0, 0 }, 0 },
582  { SC_OPCODE_DB_GET, ENTRY(SC_OPCODE_DB_GET_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBAUSZUG, 3, { 0, 0, 0 }, 0 },
583  { SC_OPCODE_DB_MAX, ENTRY(SC_OPCODE_DB_MAX_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMAX, 3, { 0, 0, 0 }, 0 },
584  { SC_OPCODE_DB_MIN, ENTRY(SC_OPCODE_DB_MIN_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBMIN, 3, { 0, 0, 0 }, 0 },
585  { SC_OPCODE_DB_PRODUCT, ENTRY(SC_OPCODE_DB_PRODUCT_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBPRODUKT, 3, { 0, 0, 0 }, 0 },
586  { SC_OPCODE_DB_STD_DEV, ENTRY(SC_OPCODE_DB_STD_DEV_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSTDABW, 3, { 0, 0, 0 }, 0 },
587  { SC_OPCODE_DB_STD_DEV_P, ENTRY(SC_OPCODE_DB_STD_DEV_P_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBSTDABWN, 3, { 0, 0, 0 }, 0 },
588  { SC_OPCODE_DB_VAR, ENTRY(SC_OPCODE_DB_VAR_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZ, 3, { 0, 0, 0 }, 0 },
589  { SC_OPCODE_DB_VAR_P, ENTRY(SC_OPCODE_DB_VAR_P_ARY), 0, ID_FUNCTION_GRP_DATABASE, HID_FUNC_DBVARIANZEN, 3, { 0, 0, 0 }, 0 },
590  { SC_OPCODE_INDIRECT, ENTRY(SC_OPCODE_INDIRECT_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDIREKT, 2, { 0, 1 }, 0 },
591  { SC_OPCODE_ADDRESS, ENTRY(SC_OPCODE_ADDRESS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_ADRESSE, 5, { 0, 0, 1, 1, 1 }, 0 },
592  { SC_OPCODE_MATCH, ENTRY(SC_OPCODE_MATCH_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERGLEICH, 3, { 0, 0, 1 }, 0 },
593  { SC_OPCODE_COUNT_EMPTY_CELLS, ENTRY(SC_OPCODE_COUNT_EMPTY_CELLS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ANZAHLLEEREZELLEN, 1, { 0 }, 0 },
594  { SC_OPCODE_COUNT_IF, ENTRY(SC_OPCODE_COUNT_IF_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ZAEHLENWENN, 2, { 0, 0 }, 0 },
595  { SC_OPCODE_SUM_IF, ENTRY(SC_OPCODE_SUM_IF_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMMEWENN, 3, { 0, 0, 1 }, 0 },
596  { SC_OPCODE_LOOKUP, ENTRY(SC_OPCODE_LOOKUP_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERWEIS, 3, { 0, 0, 1 }, 0 },
597  { SC_OPCODE_V_LOOKUP, ENTRY(SC_OPCODE_V_LOOKUP_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_SVERWEIS, 4, { 0, 0, 0, 1 }, 0 },
598  { SC_OPCODE_H_LOOKUP, ENTRY(SC_OPCODE_H_LOOKUP_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_WVERWEIS, 4, { 0, 0, 0, 1 }, 0 },
599  { SC_OPCODE_OFFSET, ENTRY(SC_OPCODE_OFFSET_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VERSCHIEBUNG, 5, { 0, 0, 0, 1, 1 }, 0 },
600  { SC_OPCODE_INDEX, ENTRY(SC_OPCODE_INDEX_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_INDEX, 4, { 0, 1, 1, 1 }, 0 },
601  { SC_OPCODE_AREAS, ENTRY(SC_OPCODE_AREAS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_BEREICHE, 1, { 0 }, 0 },
602  { SC_OPCODE_CURRENCY, ENTRY(SC_OPCODE_CURRENCY_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_DM, 2, { 0, 1 }, 0 },
603  { SC_OPCODE_REPLACE, ENTRY(SC_OPCODE_REPLACE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ERSETZEN, 4, { 0, 0, 0, 0 }, 0 },
604  { SC_OPCODE_FIXED, ENTRY(SC_OPCODE_FIXED_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FEST, 3, { 0, 0, 1 }, 0 },
605  { SC_OPCODE_FIND, ENTRY(SC_OPCODE_FIND_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FINDEN, 3, { 0, 0, 1 }, 0 },
606  { SC_OPCODE_EXACT, ENTRY(SC_OPCODE_EXACT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_IDENTISCH, 2, { 0, 0 }, 0 },
607  { SC_OPCODE_LEFT, ENTRY(SC_OPCODE_LEFT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LINKS, 2, { 0, 1 }, 0 },
608  { SC_OPCODE_RIGHT, ENTRY(SC_OPCODE_RIGHT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_RECHTS, 2, { 0, 1 }, 0 },
609  { SC_OPCODE_SEARCH, ENTRY(SC_OPCODE_SEARCH_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SUCHEN, 3, { 0, 0, 1 }, 0 },
610  { SC_OPCODE_MID, ENTRY(SC_OPCODE_MID_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEIL, 3, { 0, 0, 0 }, 0 },
611  { SC_OPCODE_TEXT, ENTRY(SC_OPCODE_TEXT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXT, 2, { 0, 0 }, 0 },
612  { SC_OPCODE_SUBSTITUTE, ENTRY(SC_OPCODE_SUBSTITUTE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WECHSELN, 4, { 0, 0, 0, 1 }, 0 },
613  { SC_OPCODE_REPT, ENTRY(SC_OPCODE_REPT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WIEDERHOLEN, 2, { 0, 0 }, 0 },
614  { SC_OPCODE_CONCAT, ENTRY(SC_OPCODE_CONCAT_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_VERKETTEN, VAR_ARGS, { 0 }, 0 },
615  { SC_OPCODE_MAT_DET, ENTRY(SC_OPCODE_MAT_DET_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MDET, 1, { 0 }, 0 },
616  { SC_OPCODE_MAT_INV, ENTRY(SC_OPCODE_MAT_INV_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MINV, 1, { 0 }, 0 },
617  { SC_OPCODE_MAT_MULT, ENTRY(SC_OPCODE_MAT_MULT_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MMULT, 2, { 0, 0 }, 0 },
618  { SC_OPCODE_MAT_TRANS, ENTRY(SC_OPCODE_MAT_TRANS_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_MTRANS, 1, { 0 }, 0 },
619  { SC_OPCODE_MATRIX_UNIT, ENTRY(SC_OPCODE_MATRIX_UNIT_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_EINHEITSMATRIX, 1, { 0 }, 0 },
620  { SC_OPCODE_HYP_GEOM_DIST, ENTRY(SC_OPCODE_HYP_GEOM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HYPGEOMVERT, 5, { 0, 0, 0, 0, 1 }, 0 },
621  { SC_OPCODE_LOG_NORM_DIST, ENTRY(SC_OPCODE_LOG_NORM_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGNORMVERT, 4, { 0, 1, 1, 1 }, 0 },
622  { SC_OPCODE_T_DIST, ENTRY(SC_OPCODE_T_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TVERT, 3, { 0, 0, 0 }, 0 },
623  { SC_OPCODE_F_DIST, ENTRY(SC_OPCODE_F_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FVERT, 3, { 0, 0, 0 }, 0 },
624  { SC_OPCODE_CHI_DIST, ENTRY(SC_OPCODE_CHI_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIVERT, 2, { 0, 0 }, 0 },
625  { SC_OPCODE_WEIBULL, ENTRY(SC_OPCODE_WEIBULL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WEIBULL, 4, { 0, 0, 0, 0 }, 0 },
626  { SC_OPCODE_NEG_BINOM_VERT, ENTRY(SC_OPCODE_NEG_BINOM_VERT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NEGBINOMVERT, 3, { 0, 0, 0 }, 0 },
627  { SC_OPCODE_CRIT_BINOM, ENTRY(SC_OPCODE_CRIT_BINOM_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KRITBINOM, 3, { 0, 0, 0 }, 0 },
628  { SC_OPCODE_KURT, ENTRY(SC_OPCODE_KURT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KURT, VAR_ARGS, { 0 }, 0 },
629  { SC_OPCODE_HAR_MEAN, ENTRY(SC_OPCODE_HAR_MEAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HARMITTEL, VAR_ARGS, { 0 }, 0 },
630  { SC_OPCODE_GEO_MEAN, ENTRY(SC_OPCODE_GEO_MEAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GEOMITTEL, VAR_ARGS, { 0 }, 0 },
631  { SC_OPCODE_STANDARD, ENTRY(SC_OPCODE_STANDARD_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STANDARDISIERUNG, 3, { 0, 0, 0 }, 0 },
632  { SC_OPCODE_AVE_DEV, ENTRY(SC_OPCODE_AVE_DEV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELABW, VAR_ARGS, { 0 }, 0 },
633  { SC_OPCODE_SKEW, ENTRY(SC_OPCODE_SKEW_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SCHIEFE, VAR_ARGS, { 0 }, 0 },
634  { SC_OPCODE_DEV_SQ, ENTRY(SC_OPCODE_DEV_SQ_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SUMQUADABW, VAR_ARGS, { 0 }, 0 },
635  { SC_OPCODE_MEDIAN, ENTRY(SC_OPCODE_MEDIAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MEDIAN, VAR_ARGS, { 0 }, 0 },
636  { SC_OPCODE_MODAL_VALUE, ENTRY(SC_OPCODE_MODAL_VALUE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODALWERT, VAR_ARGS, { 0 }, 0 },
637  { SC_OPCODE_Z_TEST, ENTRY(SC_OPCODE_Z_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GTEST, 3, { 0, 0, 1 }, 0 },
638  { SC_OPCODE_T_TEST, ENTRY(SC_OPCODE_T_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TTEST, 4, { 0, 0, 0, 0 }, 0 },
639  { SC_OPCODE_RANK, ENTRY(SC_OPCODE_RANK_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANG, 3, { 0, 0, 1 }, 0 },
640  { SC_OPCODE_PERCENTILE, ENTRY(SC_OPCODE_PERCENTILE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUANTIL, 2, { 0, 0 }, 0 },
641  { SC_OPCODE_PERCENT_RANK, ENTRY(SC_OPCODE_PERCENT_RANK_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUANTILSRANG, 3, { 0, 0, 1 }, 0 },
642  { SC_OPCODE_LARGE, ENTRY(SC_OPCODE_LARGE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KGROESSTE, 2, { 0, 0 }, 0 },
643  { SC_OPCODE_SMALL, ENTRY(SC_OPCODE_SMALL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KKLEINSTE, 2, { 0, 0 }, 0 },
644  { SC_OPCODE_FREQUENCY, ENTRY(SC_OPCODE_FREQUENCY_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_HAEUFIGKEIT, 2, { 0, 0 }, 0 },
645  { SC_OPCODE_QUARTILE, ENTRY(SC_OPCODE_QUARTILE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE, 2, { 0, 0 }, 0 },
646  { SC_OPCODE_NORM_INV, ENTRY(SC_OPCODE_NORM_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMINV, 3, { 0, 0, 0 }, 0 },
647  { SC_OPCODE_CONFIDENCE, ENTRY(SC_OPCODE_CONFIDENCE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KONFIDENZ, 3, { 0, 0, 0 }, 0 },
648  { SC_OPCODE_F_TEST, ENTRY(SC_OPCODE_F_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FTEST, 2, { 0, 0 }, 0 },
649  { SC_OPCODE_TRIM_MEAN, ENTRY(SC_OPCODE_TRIM_MEAN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GESTUTZTMITTEL, 2, { 0, 0 }, 0 },
650  { SC_OPCODE_PROB, ENTRY(SC_OPCODE_PROB_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WAHRSCHBEREICH, 4, { 0, 0, 0, 1 }, 0 },
651  { SC_OPCODE_CORREL, ENTRY(SC_OPCODE_CORREL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KORREL, 2, { 0, 0 }, 0 },
652  { SC_OPCODE_COVAR, ENTRY(SC_OPCODE_COVAR_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_KOVAR, 2, { 0, 0 }, 0 },
653  { SC_OPCODE_PEARSON, ENTRY(SC_OPCODE_PEARSON_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PEARSON, 2, { 0, 0 }, 0 },
654  { SC_OPCODE_RSQ, ENTRY(SC_OPCODE_RSQ_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BESTIMMTHEITSMASS, 2, { 0, 0 }, 0 },
655  { SC_OPCODE_STEYX, ENTRY(SC_OPCODE_STEYX_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STFEHLERYX, 2, { 0, 0 }, 0 },
656  { SC_OPCODE_SLOPE, ENTRY(SC_OPCODE_SLOPE_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STEIGUNG, 2, { 0, 0 }, 0 },
657  { SC_OPCODE_INTERCEPT, ENTRY(SC_OPCODE_INTERCEPT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ACHSENABSCHNITT, 2, { 0, 0 }, 0 },
658  { SC_OPCODE_TREND, ENTRY(SC_OPCODE_TREND_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_TREND, 4, { 0, 1, 1, 1 }, 0 },
659  { SC_OPCODE_GROWTH, ENTRY(SC_OPCODE_GROWTH_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_VARIATION, 4, { 0, 1, 1, 1 }, 0 },
660  { SC_OPCODE_LINEST, ENTRY(SC_OPCODE_LINEST_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_RGP, 4, { 0, 1, 1, 1 }, 0 },
661  { SC_OPCODE_LOGEST, ENTRY(SC_OPCODE_LOGEST_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_RKP, 4, { 0, 1, 1, 1 }, 0 },
662  { SC_OPCODE_FORECAST, ENTRY(SC_OPCODE_FORECAST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SCHAETZER, 3, { 0, 0, 0 }, 0 },
663  { SC_OPCODE_CHI_INV, ENTRY(SC_OPCODE_CHI_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIINV, 2, { 0, 0 }, 0 },
664  { SC_OPCODE_GAMMA_DIST, ENTRY(SC_OPCODE_GAMMA_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAVERT, 4, { 0, 0, 0, 1 }, 0 },
665  { SC_OPCODE_GAMMA_INV, ENTRY(SC_OPCODE_GAMMA_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAINV, 3, { 0, 0, 0 }, 0 },
666  { SC_OPCODE_T_INV, ENTRY(SC_OPCODE_T_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV, 2, { 0, 0 }, 0 },
667  { SC_OPCODE_F_INV, ENTRY(SC_OPCODE_F_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FINV, 3, { 0, 0, 0 }, 0 },
668  { SC_OPCODE_CHI_TEST, ENTRY(SC_OPCODE_CHI_TEST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHITEST, 2, { 0, 0 }, 0 },
669  { SC_OPCODE_LOG_INV, ENTRY(SC_OPCODE_LOG_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGINV, 3, { 0, 1, 1 }, 0 },
670  { SC_OPCODE_BETA_DIST, ENTRY(SC_OPCODE_BETA_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAVERT, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
671  { SC_OPCODE_BETA_INV, ENTRY(SC_OPCODE_BETA_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAINV, 5, { 0, 0, 0, 1, 1 }, 0 },
672  { SC_OPCODE_WEEK, ENTRY(SC_OPCODE_WEEK_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_KALENDERWOCHE, 2, { 0, 1 }, 0 },
673  { SC_OPCODE_GET_DAY_OF_WEEK, ENTRY(SC_OPCODE_GET_DAY_OF_WEEK_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WOCHENTAG, 2, { 0, 1 }, 0 },
674  { SC_OPCODE_STYLE, ENTRY(SC_OPCODE_STYLE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_VORLAGE, 3, { 0, 1, 1 }, 0 },
675  { SC_OPCODE_DDE, ENTRY(SC_OPCODE_DDE_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_DDE, 4, { 0, 0, 0, 1 }, 0 },
676  { SC_OPCODE_BASE, ENTRY(SC_OPCODE_BASE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_BASIS, 3, { 0, 0, 1 }, 0 },
677  { SC_OPCODE_SHEET, ENTRY(SC_OPCODE_SHEET_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TABELLE, 1, { 1 }, 0 },
678  { SC_OPCODE_SHEETS, ENTRY(SC_OPCODE_SHEETS_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_TABELLEN, 1, { 1 }, 0 },
679  { SC_OPCODE_MIN_A, ENTRY(SC_OPCODE_MIN_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MINA, VAR_ARGS, { 0 }, 0 },
680  { SC_OPCODE_MAX_A, ENTRY(SC_OPCODE_MAX_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAXA, VAR_ARGS, { 0 }, 0 },
681  { SC_OPCODE_AVERAGE_A, ENTRY(SC_OPCODE_AVERAGE_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MITTELWERTA, VAR_ARGS, { 0 }, 0 },
682  { SC_OPCODE_ST_DEV_A, ENTRY(SC_OPCODE_ST_DEV_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWA, VAR_ARGS, { 0 }, 0 },
683  { SC_OPCODE_ST_DEV_P_A, ENTRY(SC_OPCODE_ST_DEV_P_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STABWNA, VAR_ARGS, { 0 }, 0 },
684  { SC_OPCODE_VAR_A, ENTRY(SC_OPCODE_VAR_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZA, VAR_ARGS, { 0 }, 0 },
685  { SC_OPCODE_VAR_P_A, ENTRY(SC_OPCODE_VAR_P_A_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VARIANZENA, VAR_ARGS, { 0 }, 0 },
686  { SC_OPCODE_EASTERSUNDAY, ENTRY(SC_OPCODE_EASTERSUNDAY_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_OSTERSONNTAG, 1, { 0 }, 0 },
687  { SC_OPCODE_DECIMAL, ENTRY(SC_OPCODE_DECIMAL_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_DEZIMAL, 2, { 0, 0 }, 0 },
688  { SC_OPCODE_CONVERT_OOO, ENTRY(SC_OPCODE_CONVERT_OOO_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_UMRECHNEN, 3, { 0, 0, 0 }, 0 },
689  { SC_OPCODE_ROMAN, ENTRY(SC_OPCODE_ROMAN_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_ROEMISCH, 2, { 0, 1 }, 0 },
690  { SC_OPCODE_MIRR, ENTRY(SC_OPCODE_MIRR_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_QIKV, 3, { 0, 0, 0 }, 0 },
691  { SC_OPCODE_CELL, ENTRY(SC_OPCODE_CELL_ARY), 0, ID_FUNCTION_GRP_INFO, HID_FUNC_ZELLE, 2, { 0, 1 }, 0 },
692  { SC_OPCODE_ISPMT, ENTRY(SC_OPCODE_ISPMT_ARY), 0, ID_FUNCTION_GRP_FINANCIAL, HID_FUNC_ISPMT, 4, { 0, 0, 0, 0 }, 0 },
693  { SC_OPCODE_HYPERLINK, ENTRY(SC_OPCODE_HYPERLINK_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_HYPERLINK, 2, { 0, 1 }, 0 },
694  { SC_OPCODE_GET_PIVOT_DATA, ENTRY(SC_OPCODE_GET_PIVOT_DATA_ARY), 0, ID_FUNCTION_GRP_TABLE, HID_FUNC_GETPIVOTDATA, VAR_ARGS+2, { 0, 0, 1 }, 0 },
695  { SC_OPCODE_EUROCONVERT, ENTRY(SC_OPCODE_EUROCONVERT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_EUROCONVERT, 5, { 0, 0, 0, 1, 1 }, 0 },
696  { SC_OPCODE_NUMBERVALUE, ENTRY(SC_OPCODE_NUMBERVALUE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_NUMBERVALUE, 3, { 0, 1, 1 }, 0 },
697  { SC_OPCODE_CHISQ_DIST, ENTRY(SC_OPCODE_CHISQ_DIST_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQDIST, 3, { 0, 0, 1 }, 0 },
698  { SC_OPCODE_CHISQ_INV, ENTRY(SC_OPCODE_CHISQ_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQINV, 2, { 0, 0 }, 0 },
699  { SC_OPCODE_BITAND, ENTRY(SC_OPCODE_BITAND_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITAND, 2, { 0, 0 }, 0 },
700  { SC_OPCODE_BITOR, ENTRY(SC_OPCODE_BITOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITOR, 2, { 0, 0 }, 0 },
701  { SC_OPCODE_BITXOR, ENTRY(SC_OPCODE_BITXOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITXOR, 2, { 0, 0 }, 0 },
702  { SC_OPCODE_BITRSHIFT, ENTRY(SC_OPCODE_BITRSHIFT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITRSHIFT, 2, { 0, 0 }, 0 },
703  { SC_OPCODE_BITLSHIFT, ENTRY(SC_OPCODE_BITLSHIFT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_BITLSHIFT, 2, { 0, 0 }, 0 },
704  { SC_OPCODE_GET_DATEDIF, ENTRY(SC_OPCODE_GET_DATEDIF_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_DATEDIF, 3, { 0, 0, 0 }, 0 },
705  { SC_OPCODE_XOR, ENTRY(SC_OPCODE_XOR_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_XOR, VAR_ARGS, { 0 }, 0 },
706  { SC_OPCODE_AVERAGE_IF, ENTRY(SC_OPCODE_AVERAGE_IF_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIF, 3, { 0, 0, 1 }, 0 },
707  { SC_OPCODE_SUM_IFS, ENTRY(SC_OPCODE_SUM_IFS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_SUMIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 }, 0 },
708  { SC_OPCODE_AVERAGE_IFS, ENTRY(SC_OPCODE_AVERAGE_IFS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_AVERAGEIFS, PAIRED_VAR_ARGS+1, { 0, 0, 0 }, 0 },
709  { SC_OPCODE_COUNT_IFS, ENTRY(SC_OPCODE_COUNT_IFS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COUNTIFS, PAIRED_VAR_ARGS, { 0, 0 }, 0 },
710  { SC_OPCODE_SKEWP, ENTRY(SC_OPCODE_SKEWP_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_SKEWP, VAR_ARGS, { 0 }, 0 },
711  { SC_OPCODE_LENB, ENTRY(SC_OPCODE_LENB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LENB, 1, { 0 }, 0 },
712  { SC_OPCODE_RIGHTB, ENTRY(SC_OPCODE_RIGHTB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_RIGHTB, 2, { 0, 1 }, 0 },
713  { SC_OPCODE_LEFTB, ENTRY(SC_OPCODE_LEFTB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_LEFTB, 2, { 0, 1 }, 0 },
714  { SC_OPCODE_MIDB, ENTRY(SC_OPCODE_MIDB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_MIDB, 3, { 0, 0, 0 }, 0 },
715  { SC_OPCODE_FILTERXML, ENTRY(SC_OPCODE_FILTERXML_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FILTERXML, 2, { 0, 0 }, 0 },
716  { SC_OPCODE_WEBSERVICE, ENTRY(SC_OPCODE_WEBSERVICE_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_WEBSERVICE, 1, { 0, 0 }, 0 },
717  { SC_OPCODE_COVARIANCE_S, ENTRY(SC_OPCODE_COVARIANCE_S_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COVARIANCE_S, 2, { 0, 0 }, 0 },
718  { SC_OPCODE_COVARIANCE_P, ENTRY(SC_OPCODE_COVARIANCE_P_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_COVARIANCE_P, 2, { 0, 0 }, 0 },
719  { SC_OPCODE_ST_DEV_P_MS, ENTRY(SC_OPCODE_ST_DEV_P_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ST_DEV_P_MS, VAR_ARGS, { 0 }, 0 },
720  { SC_OPCODE_ST_DEV_S, ENTRY(SC_OPCODE_ST_DEV_S_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_ST_DEV_S, VAR_ARGS, { 0 }, 0 },
721  { SC_OPCODE_VAR_P_MS, ENTRY(SC_OPCODE_VAR_P_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VAR_P_MS, VAR_ARGS, { 0 }, 0 },
722  { SC_OPCODE_VAR_S, ENTRY(SC_OPCODE_VAR_S_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_VAR_S, VAR_ARGS, { 0 }, 0 },
723  { SC_OPCODE_BETA_DIST_MS, ENTRY(SC_OPCODE_BETA_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETADIST_MS, 6, { 0, 0, 0, 0, 1, 1 }, 0 },
724  { SC_OPCODE_BETA_INV_MS, ENTRY(SC_OPCODE_BETA_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BETAINV_MS, 5, { 0, 0, 0, 1, 1 }, 0 },
725  { SC_OPCODE_BINOM_DIST_MS, ENTRY(SC_OPCODE_BINOM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOM_DIST_MS, 4, { 0, 0, 0, 0 }, 0 },
726  { SC_OPCODE_BINOM_INV, ENTRY(SC_OPCODE_BINOM_INV_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_BINOM_INV_MS, 3, { 0, 0, 0 }, 0 },
727  { SC_OPCODE_CHI_DIST_MS, ENTRY(SC_OPCODE_CHI_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIVERT_MS, 2, { 0, 0 }, 0 },
728  { SC_OPCODE_CHI_INV_MS, ENTRY(SC_OPCODE_CHI_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHIINV_MS, 2, { 0, 0 }, 0 },
729  { SC_OPCODE_CHI_TEST_MS, ENTRY(SC_OPCODE_CHI_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHITEST_MS, 2, { 0, 0 }, 0 },
730  { SC_OPCODE_CHISQ_DIST_MS, ENTRY(SC_OPCODE_CHISQ_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQDIST_MS, 3, { 0, 0, 0 }, 0 },
731  { SC_OPCODE_CHISQ_INV_MS, ENTRY(SC_OPCODE_CHISQ_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CHISQINV_MS, 2, { 0, 0 }, 0 },
732  { SC_OPCODE_CONFIDENCE_N, ENTRY(SC_OPCODE_CONFIDENCE_N_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CONFIDENCE_N, 3, { 0, 0, 0 }, 0 },
733  { SC_OPCODE_CONFIDENCE_T, ENTRY(SC_OPCODE_CONFIDENCE_T_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_CONFIDENCE_T, 3, { 0, 0, 0 }, 0 },
734  { SC_OPCODE_F_DIST_LT, ENTRY(SC_OPCODE_F_DIST_LT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_DIST_LT, 4, { 0, 0, 0, 1 }, 0 },
735  { SC_OPCODE_F_DIST_RT, ENTRY(SC_OPCODE_F_DIST_RT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_DIST_RT, 3, { 0, 0, 0 }, 0 },
736  { SC_OPCODE_F_INV_LT, ENTRY(SC_OPCODE_F_INV_LT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_INV_LT, 3, { 0, 0, 0 }, 0 },
737  { SC_OPCODE_F_INV_RT, ENTRY(SC_OPCODE_F_INV_RT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_INV_RT, 3, { 0, 0, 0 }, 0 },
738  { SC_OPCODE_F_TEST_MS, ENTRY(SC_OPCODE_F_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_F_TEST_MS, 2, { 0, 0 }, 0 },
739  { SC_OPCODE_EXP_DIST_MS, ENTRY(SC_OPCODE_EXP_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_EXP_DIST_MS, 3, { 0, 0, 0 }, 0 },
740  { SC_OPCODE_HYP_GEOM_DIST_MS, ENTRY(SC_OPCODE_HYP_GEOM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_HYP_GEOM_DIST_MS, 5, { 0, 0, 0, 0, 0 }, 0 },
741  { SC_OPCODE_POISSON_DIST_MS, ENTRY(SC_OPCODE_POISSON_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_POISSON_DIST_MS, 3, { 0, 0, 1 }, 0 },
742  { SC_OPCODE_WEIBULL_MS, ENTRY(SC_OPCODE_WEIBULL_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_WEIBULL_DIST_MS, 4, { 0, 0, 0, 0 }, 0 },
743  { SC_OPCODE_GAMMA_DIST_MS, ENTRY(SC_OPCODE_GAMMA_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMADIST_MS, 4, { 0, 0, 0, 0 }, 0 },
744  { SC_OPCODE_GAMMA_INV_MS, ENTRY(SC_OPCODE_GAMMA_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_GAMMAINV_MS, 3, { 0, 0, 0 }, 0 },
745  { SC_OPCODE_LOG_NORM_DIST_MS, ENTRY(SC_OPCODE_LOG_NORM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGNORMDIST_MS, 4, { 0, 0, 0, 0 }, 0 },
746  { SC_OPCODE_LOG_INV_MS, ENTRY(SC_OPCODE_LOG_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_LOGINV, 3, { 0, 0, 0 }, 0 },
747  { SC_OPCODE_NORM_DIST_MS, ENTRY(SC_OPCODE_NORM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMDIST_MS, 4, { 0, 0, 0, 0 }, 0 },
748  { SC_OPCODE_NORM_INV_MS, ENTRY(SC_OPCODE_NORM_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NORMINV_MS, 3, { 0, 0, 0 }, 0 },
749  { SC_OPCODE_STD_NORM_DIST_MS, ENTRY(SC_OPCODE_STD_NORM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STD_NORMDIST_MS, 2, { 0, 0 }, 0 },
750  { SC_OPCODE_S_NORM_INV_MS, ENTRY(SC_OPCODE_S_NORM_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_STD_NORMINV_MS, 1, { 0 }, 0 },
751  { SC_OPCODE_T_DIST_MS, ENTRY(SC_OPCODE_T_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_MS, 3, { 0, 0, 0 }, 0 },
752  { SC_OPCODE_T_DIST_RT, ENTRY(SC_OPCODE_T_DIST_RT_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_RT, 2, { 0, 0 }, 0 },
753  { SC_OPCODE_T_DIST_2T, ENTRY(SC_OPCODE_T_DIST_2T_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TDIST_2T, 2, { 0, 0 }, 0 },
754  { SC_OPCODE_T_INV_2T, ENTRY(SC_OPCODE_T_INV_2T_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV_2T, 2, { 0, 0 }, 0 },
755  { SC_OPCODE_T_INV_MS, ENTRY(SC_OPCODE_T_INV_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TINV_MS, 2, { 0, 0 }, 0 },
756  { SC_OPCODE_T_TEST_MS, ENTRY(SC_OPCODE_T_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_TTEST_MS, 4, { 0, 0, 0, 0 }, 0 },
757  { SC_OPCODE_PERCENTILE_INC, ENTRY(SC_OPCODE_PERCENTILE_INC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTILE_INC, 2, { 0, 0 }, 0 },
758  { SC_OPCODE_PERCENT_RANK_INC, ENTRY(SC_OPCODE_PERCENT_RANK_INC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTRANK_INC, 3, { 0, 0, 1 }, 0 },
759  { SC_OPCODE_QUARTILE_INC, ENTRY(SC_OPCODE_QUARTILE_INC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE_INC, 2, { 0, 0 }, 0 },
760  { SC_OPCODE_RANK_EQ, ENTRY(SC_OPCODE_RANK_EQ_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANK_EQ, 3, { 0, 0, 1 }, 0 },
761  { SC_OPCODE_PERCENTILE_EXC, ENTRY(SC_OPCODE_PERCENTILE_EXC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTILE_EXC, 2, { 0, 0 }, 0 },
762  { SC_OPCODE_PERCENT_RANK_EXC, ENTRY(SC_OPCODE_PERCENT_RANK_EXC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_PERCENTRANK_EXC, 3, { 0, 0, 1 }, 0 },
763  { SC_OPCODE_QUARTILE_EXC, ENTRY(SC_OPCODE_QUARTILE_EXC_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_QUARTILE_EXC, 2, { 0, 0 }, 0 },
764  { SC_OPCODE_RANK_AVG, ENTRY(SC_OPCODE_RANK_AVG_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_RANK_AVG, 3, { 0, 0, 1 }, 0 },
765  { SC_OPCODE_MODAL_VALUE_MS, ENTRY(SC_OPCODE_MODAL_VALUE_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODAL_VALUE_MS, VAR_ARGS, { 0 }, 0 },
766  { SC_OPCODE_MODAL_VALUE_MULTI, ENTRY(SC_OPCODE_MODAL_VALUE_MULTI_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MODAL_VALUE_MULTI, VAR_ARGS, { 0 }, 0 },
767  { SC_OPCODE_NEG_BINOM_DIST_MS, ENTRY(SC_OPCODE_NEG_BINOM_DIST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_NEGBINOMDIST_MS, 4, { 0, 0, 0, 0 }, 0 },
768  { SC_OPCODE_Z_TEST_MS, ENTRY(SC_OPCODE_Z_TEST_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_Z_TEST_MS, 3, { 0, 0, 1 }, 0 },
769  { SC_OPCODE_CEIL_MS, ENTRY(SC_OPCODE_CEIL_MS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_MS, 2, { 0, 0 }, 0 },
770  { SC_OPCODE_CEIL_ISO, ENTRY(SC_OPCODE_CEIL_ISO_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_ISO, 2, { 0, 1 }, 0 },
771  { SC_OPCODE_FLOOR_MS, ENTRY(SC_OPCODE_FLOOR_MS_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_MS, 2, { 0, 0 }, 0 },
772  { SC_OPCODE_NETWORKDAYS_MS, ENTRY(SC_OPCODE_NETWORKDAYS_MS_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_NETWORKDAYS_MS, 4, { 0, 0, 1, 1 }, 0 },
773  { SC_OPCODE_WORKDAY_MS, ENTRY(SC_OPCODE_WORKDAY_MS_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WORKDAY_MS, 4, { 0, 0, 1, 1 }, 0 },
774  { SC_OPCODE_AGGREGATE, ENTRY(SC_OPCODE_AGGREGATE_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_AGGREGATE, VAR_ARGS+3, { 0, 0, 0, 1 }, 0 },
775  { SC_OPCODE_COLOR, ENTRY(SC_OPCODE_COLOR_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_COLOR, 4, { 0, 0, 0, 1 }, 0 },
776  { SC_OPCODE_CEIL_MATH, ENTRY(SC_OPCODE_CEIL_MATH_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_MATH, 3, { 0, 1, 1 }, 0 },
777  { SC_OPCODE_CEIL_PRECISE, ENTRY(SC_OPCODE_CEIL_PRECISE_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_CEIL_PRECISE, 2, { 0, 1 }, 0 },
778  { SC_OPCODE_NETWORKDAYS, ENTRY(SC_OPCODE_NETWORKDAYS_ARY), 0, ID_FUNCTION_GRP_DATETIME, HID_FUNC_NETWORKDAYS, 4, { 0, 0, 1, 1 }, 0 },
779  { SC_OPCODE_FLOOR_MATH, ENTRY(SC_OPCODE_FLOOR_MATH_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_MATH, 3, { 0, 1, 1 }, 0 },
780  { SC_OPCODE_FLOOR_PRECISE, ENTRY(SC_OPCODE_FLOOR_PRECISE_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_FLOOR_PRECISE, 2, { 0, 1 }, 0 },
781  { SC_OPCODE_RAWSUBTRACT, ENTRY(SC_OPCODE_RAWSUBTRACT_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RAWSUBTRACT, VAR_ARGS+2, { 0, 0, 1 }, 0 },
782  { SC_OPCODE_WEEKNUM_OOO, ENTRY(SC_OPCODE_WEEKNUM_OOO_ARY), 2, ID_FUNCTION_GRP_DATETIME, HID_FUNC_WEEKNUM_OOO, 2, { 0, 0 }, 0 },
783  { SC_OPCODE_FORECAST_ETS_ADD, ENTRY(SC_OPCODE_FORECAST_ETS_ADD_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_ADD, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
784  { SC_OPCODE_FORECAST_ETS_SEA, ENTRY(SC_OPCODE_FORECAST_ETS_SEA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_SEA, 4, { 0, 0, 1, 1 }, 0 },
785  { SC_OPCODE_FORECAST_ETS_MUL, ENTRY(SC_OPCODE_FORECAST_ETS_MUL_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_MUL, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
786  { SC_OPCODE_FORECAST_ETS_PIA, ENTRY(SC_OPCODE_FORECAST_ETS_PIA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_PIA, 7, { 0, 0, 0, 1, 1, 1, 1 }, 0 },
787  { SC_OPCODE_FORECAST_ETS_PIM, ENTRY(SC_OPCODE_FORECAST_ETS_PIM_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_PIM, 7, { 0, 0, 0, 1, 1, 1, 1 }, 0 },
788  { SC_OPCODE_FORECAST_ETS_STA, ENTRY(SC_OPCODE_FORECAST_ETS_STA_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_STA, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
789  { SC_OPCODE_FORECAST_ETS_STM, ENTRY(SC_OPCODE_FORECAST_ETS_STM_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_ETS_STM, 6, { 0, 0, 0, 1, 1, 1 }, 0 },
790  { SC_OPCODE_FORECAST_LIN, ENTRY(SC_OPCODE_FORECAST_LIN_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_FORECAST_LIN, 3, { 0, 0, 0 }, 0 },
791  { SC_OPCODE_CONCAT_MS, ENTRY(SC_OPCODE_CONCAT_MS_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_CONCAT_MS, VAR_ARGS, { 0 }, 0 },
792  { SC_OPCODE_TEXTJOIN_MS, ENTRY(SC_OPCODE_TEXTJOIN_MS_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_TEXTJOIN_MS, VAR_ARGS + 2, { 0, 0, 0 }, 0 },
793  { SC_OPCODE_IFS_MS, ENTRY(SC_OPCODE_IFS_MS_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_IFS_MS, PAIRED_VAR_ARGS, { 0, 0 }, 0 },
794  { SC_OPCODE_SWITCH_MS, ENTRY(SC_OPCODE_SWITCH_MS_ARY), 0, ID_FUNCTION_GRP_LOGIC, HID_FUNC_SWITCH_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
795  { SC_OPCODE_MINIFS_MS, ENTRY(SC_OPCODE_MINIFS_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MINIFS_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
796  { SC_OPCODE_MAXIFS_MS, ENTRY(SC_OPCODE_MAXIFS_MS_ARY), 0, ID_FUNCTION_GRP_STATISTIC, HID_FUNC_MAXIFS_MS, PAIRED_VAR_ARGS + 1, { 0, 0, 0 }, 0 },
797  { SC_OPCODE_ROUNDSIG, ENTRY(SC_OPCODE_ROUNDSIG_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_ROUNDSIG, 2, { 0, 0 }, 0 },
798  { SC_OPCODE_REPLACEB, ENTRY(SC_OPCODE_REPLACEB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_REPLACEB, 4, { 0, 0, 0, 0 }, 0 },
799  { SC_OPCODE_FINDB, ENTRY(SC_OPCODE_FINDB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_FINDB, 3, { 0, 0, 1 }, 0 },
800  { SC_OPCODE_SEARCHB, ENTRY(SC_OPCODE_SEARCHB_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_SEARCHB, 3, { 0, 0, 1 }, 0 },
801  { SC_OPCODE_REGEX, ENTRY(SC_OPCODE_REGEX_ARY), 0, ID_FUNCTION_GRP_TEXT, HID_FUNC_REGEX, 4, { 0, 0, 1, 1 }, 0 },
802  { SC_OPCODE_FOURIER, ENTRY(SC_OPCODE_FOURIER_ARY), 0, ID_FUNCTION_GRP_MATRIX, HID_FUNC_FOURIER, 5, { 0, 0, 1, 1, 1 }, 0 },
803  { SC_OPCODE_RANDBETWEEN_NV, ENTRY(SC_OPCODE_RANDBETWEEN_NV_ARY), 0, ID_FUNCTION_GRP_MATH, HID_FUNC_RANDBETWEEN_NV, 2, { 0, 0 }, 0 }
804  };
805 
806  ScFuncDesc* pDesc = nullptr;
807  sal_Int32 nStrLen = 0;
808  ::std::vector<const ScFuncDesc*> tmpFuncVector;
809 
810  // Browse for all possible OpCodes. This is not the fastest method, but
811  // otherwise the sub resources within the resource blocks and the
812  // resource blocks themselves would had to be ordered according to
813  // OpCodes, which is utopian...
814  ScFuncDescCore const * pDescsEnd = aDescs + SAL_N_ELEMENTS(aDescs);
815  for (sal_uInt16 i = 0; i <= SC_OPCODE_LAST_OPCODE_ID; ++i)
816  {
817  const ScFuncDescCore *pEntry = std::lower_bound(aDescs, pDescsEnd, i,
818  [](const ScFuncDescCore &rItem, sal_uInt16 key)
819  {
820  return rItem.nOpCode < key;
821  }
822  );
823 
824  // Opcode Resource available?
825  if (pEntry != pDescsEnd && pEntry->nOpCode == i && pEntry->pResource)
826  {
827  pDesc = new ScFuncDesc;
828  bool bSuppressed = false;
829 
830  ScFuncRes(*pEntry, pDesc, bSuppressed);
831  // Instead of dealing with this exceptional case at 1001 places
832  // we simply don't add an entirely suppressed function to the
833  // list and delete it.
834  if (bSuppressed)
835  delete pDesc;
836  else
837  {
838  pDesc->nFIndex = i;
839  tmpFuncVector.push_back(pDesc);
840 
841  nStrLen = pDesc->mxFuncName->getLength();
842  if (nStrLen > nMaxFuncNameLen)
843  nMaxFuncNameLen = nStrLen;
844  }
845  }
846  }
847 
848  // legacy binary AddIn functions
849 
850  sal_uInt16 nNextId = SC_OPCODE_LAST_OPCODE_ID + 1; // FuncID for AddIn functions
851 
852  // Interpretation of AddIn list
853  OUString aDefArgNameValue = "value";
854  OUString aDefArgNameString = "string";
855  OUString aDefArgNameValues = "values";
856  OUString aDefArgNameStrings = "strings";
857  OUString aDefArgNameCells = "cells";
858  OUString aDefArgNameNone = "none";
859  OUString aDefArgDescValue = "a value";
860  OUString aDefArgDescString = "a string";
861  OUString aDefArgDescValues = "array of values";
862  OUString aDefArgDescStrings = "array of strings";
863  OUString aDefArgDescCells = "range of cells";
864  OUString aDefArgDescNone = "none";
865 
866  OUString aArgName, aArgDesc;
867  const LegacyFuncCollection& rLegacyFuncColl = *ScGlobal::GetLegacyFuncCollection();
868  for (auto const& legacyFunc : rLegacyFuncColl)
869  {
870  const LegacyFuncData *const pLegacyFuncData = legacyFunc.second.get();
871  pDesc = new ScFuncDesc;
872  sal_uInt16 nArgs = pLegacyFuncData->GetParamCount() - 1;
873  pLegacyFuncData->getParamDesc( aArgName, aArgDesc, 0 );
874  pDesc->nFIndex = nNextId++; // ??? OpCode vergeben
876  pDesc->mxFuncName = pLegacyFuncData->GetInternalName().toAsciiUpperCase();
877 
878  OUStringBuffer aBuf(aArgDesc);
879  aBuf.append('\n');
880  aBuf.append("( AddIn: ");
881  aBuf.append(pLegacyFuncData->GetModuleName());
882  aBuf.append(" )");
883  pDesc->mxFuncDesc = aBuf.makeStringAndClear();
884 
885  pDesc->nArgCount = nArgs;
886  if (nArgs)
887  {
888  pDesc->maDefArgNames.clear();
889  pDesc->maDefArgNames.resize(nArgs);
890  pDesc->maDefArgDescs.clear();
891  pDesc->maDefArgDescs.resize(nArgs);
892  pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs];
893  for (sal_uInt16 j = 0; j < nArgs; ++j)
894  {
895  pDesc->pDefArgFlags[j].bOptional = false;
896  pLegacyFuncData->getParamDesc( aArgName, aArgDesc, j+1 );
897  if ( !aArgName.isEmpty() )
898  pDesc->maDefArgNames[j] = aArgName;
899  else
900  {
901  switch (pLegacyFuncData->GetParamType(j+1))
902  {
904  pDesc->maDefArgNames[j] = aDefArgNameValue;
905  break;
907  pDesc->maDefArgNames[j] = aDefArgNameString;
908  break;
910  pDesc->maDefArgNames[j] = aDefArgNameValues;
911  break;
913  pDesc->maDefArgNames[j] = aDefArgNameStrings;
914  break;
916  pDesc->maDefArgNames[j] = aDefArgNameCells;
917  break;
918  default:
919  pDesc->maDefArgNames[j] = aDefArgNameNone;
920  break;
921  }
922  }
923  if ( !aArgDesc.isEmpty() )
924  pDesc->maDefArgDescs[j] = aArgDesc;
925  else
926  {
927  switch (pLegacyFuncData->GetParamType(j+1))
928  {
930  pDesc->maDefArgDescs[j] = aDefArgDescValue;
931  break;
933  pDesc->maDefArgDescs[j] = aDefArgDescString;
934  break;
936  pDesc->maDefArgDescs[j] = aDefArgDescValues;
937  break;
939  pDesc->maDefArgDescs[j] = aDefArgDescStrings;
940  break;
942  pDesc->maDefArgDescs[j] = aDefArgDescCells;
943  break;
944  default:
945  pDesc->maDefArgDescs[j] = aDefArgDescNone;
946  break;
947  }
948  }
949  }
950  }
951 
952  tmpFuncVector.push_back(pDesc);
953  nStrLen = pDesc->mxFuncName->getLength();
954  if ( nStrLen > nMaxFuncNameLen)
955  nMaxFuncNameLen = nStrLen;
956  }
957 
958  // StarOne AddIns
959 
961  long nUnoCount = pUnoAddIns->GetFuncCount();
962  for (long nFunc=0; nFunc<nUnoCount; nFunc++)
963  {
964  pDesc = new ScFuncDesc;
965  pDesc->nFIndex = nNextId++;
966 
967  if ( pUnoAddIns->FillFunctionDesc( nFunc, *pDesc ) )
968  {
969  tmpFuncVector.push_back(pDesc);
970  nStrLen = pDesc->mxFuncName->getLength();
971  if (nStrLen > nMaxFuncNameLen)
972  nMaxFuncNameLen = nStrLen;
973  }
974  else
975  delete pDesc;
976  }
977 
978  aFunctionList.swap(tmpFuncVector);
979 
980  //Initialize iterator
981  aFunctionListIter = aFunctionList.end();
982 }
983 
985 {
986  const ScFuncDesc* pDesc = First();
987  while (pDesc)
988  {
989  delete pDesc;
990  pDesc = Next();
991  }
992 }
993 
995 {
996  const ScFuncDesc* pDesc = nullptr;
998  if(aFunctionListIter != aFunctionList.end())
999  pDesc = *aFunctionListIter;
1000 
1001  return pDesc;
1002 }
1003 
1005 {
1006  const ScFuncDesc* pDesc = nullptr;
1007  if(aFunctionListIter != aFunctionList.end())
1008  {
1009  if((++aFunctionListIter) != aFunctionList.end())
1010  pDesc = *aFunctionListIter;
1011  }
1012  return pDesc;
1013 }
1014 
1015 const ScFuncDesc* ScFunctionList::GetFunction( sal_uInt32 nIndex ) const
1016 {
1017  const ScFuncDesc* pDesc = nullptr;
1018  if(nIndex < aFunctionList.size())
1019  pDesc = aFunctionList.at(nIndex);
1020 
1021  return pDesc;
1022 }
1023 
1024 
1026 {
1027  return m_pCategory->size();
1028 }
1029 
1031 {
1032  if ( m_sName.isEmpty() )
1034  return m_sName;
1035 }
1036 
1038 {
1039  const ScFuncDesc* pDesc = nullptr;
1040  if(_nPos < m_pCategory->size())
1041  pDesc = m_pCategory->at(_nPos);
1042  return pDesc;
1043 }
1044 
1046 {
1047  return m_nCategory;
1048 }
1049 
1050 
1052 {
1053  ScFunctionList* pFuncList
1055 
1056  OSL_ENSURE( pFuncList, "Functionlist not found." );
1057  sal_uInt32 catCount[MAX_FUNCCAT] = {0};
1058 
1059  aCatLists[0].reset( new ::std::vector<const ScFuncDesc*> );
1060  aCatLists[0]->reserve(pFuncList->GetCount());
1061 
1062  // Retrieve all functions, store in cumulative ("All") category, and count
1063  // number of functions in each category
1064  for(const ScFuncDesc* pDesc = pFuncList->First(); pDesc; pDesc = pFuncList->Next())
1065  {
1066  OSL_ENSURE((pDesc->nCategory) < MAX_FUNCCAT, "Unknown category");
1067  if ((pDesc->nCategory) < MAX_FUNCCAT)
1068  ++catCount[pDesc->nCategory];
1069  aCatLists[0]->push_back(pDesc);
1070  }
1071 
1072  // Sort functions in cumulative category by name
1073  ::std::sort(aCatLists[0]->begin(), aCatLists[0]->end(), ScFuncDesc::compareByName);
1074 
1075  // Allocate correct amount of space for categories
1076  for (sal_uInt16 i = 1; i < MAX_FUNCCAT; ++i)
1077  {
1078  aCatLists[i].reset( new ::std::vector<const ScFuncDesc*> );
1079  aCatLists[i]->reserve(catCount[i]);
1080  }
1081 
1082  // Fill categories with the corresponding functions (still sorted by name)
1083  for (auto const& elemList : *aCatLists[0])
1084  {
1085  if ((elemList->nCategory) < MAX_FUNCCAT)
1086  aCatLists[elemList->nCategory]->push_back(elemList);
1087  }
1088 
1089  // Initialize iterators
1090  pCurCatListIter = aCatLists[0]->end();
1091  pCurCatListEnd = aCatLists[0]->end();
1092 }
1093 
1095 {
1096 }
1097 
1098 
1099 const ScFuncDesc* ScFunctionMgr::Get( sal_uInt16 nFIndex ) const
1100 {
1101  const ScFuncDesc* pDesc;
1102  for (pDesc = First(); pDesc; pDesc = Next())
1103  if (pDesc->nFIndex == nFIndex)
1104  break;
1105  return pDesc;
1106 }
1107 
1108 const ScFuncDesc* ScFunctionMgr::First( sal_uInt16 nCategory ) const
1109 {
1110  OSL_ENSURE( nCategory < MAX_FUNCCAT, "Unknown category" );
1111  const ScFuncDesc* pDesc = nullptr;
1112  if ( nCategory < MAX_FUNCCAT )
1113  {
1114  pCurCatListIter = aCatLists[nCategory]->begin();
1115  pCurCatListEnd = aCatLists[nCategory]->end();
1116  pDesc = *pCurCatListIter;
1117  }
1118  else
1119  {
1120  pCurCatListIter = aCatLists[0]->end();
1121  pCurCatListEnd = aCatLists[0]->end();
1122  }
1123  return pDesc;
1124 }
1125 
1127 {
1128  const ScFuncDesc* pDesc = nullptr;
1130  {
1131  if ( (++pCurCatListIter) != pCurCatListEnd )
1132  {
1133  pDesc = *pCurCatListIter;
1134  }
1135  }
1136  return pDesc;
1137 }
1138 
1139 sal_uInt32 ScFunctionMgr::getCount() const
1140 {
1141  return MAX_FUNCCAT - 1;
1142 }
1143 
1144 const formula::IFunctionCategory* ScFunctionMgr::getCategory(sal_uInt32 nCategory) const
1145 {
1146  if ( nCategory < (MAX_FUNCCAT-1) )
1147  {
1148  if (m_aCategories.find(nCategory) == m_aCategories.end())
1149  m_aCategories[nCategory] = std::make_shared<ScFunctionCategory>(aCatLists[nCategory+1].get(),nCategory); // aCatLists[0] is "all"
1150  return m_aCategories[nCategory].get();
1151  }
1152  return nullptr;
1153 }
1154 
1155 void ScFunctionMgr::fillLastRecentlyUsedFunctions(::std::vector< const formula::IFunctionDescription*>& _rLastRUFunctions) const
1156 {
1157  const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
1158  sal_uInt16 nLRUFuncCount = std::min( rAppOpt.GetLRUFuncListCount(), sal_uInt16(LRU_MAX) );
1159  sal_uInt16* pLRUListIds = rAppOpt.GetLRUFuncList();
1160  _rLastRUFunctions.clear();
1161 
1162  if ( pLRUListIds )
1163  {
1164  for (sal_uInt16 i = 0; i < nLRUFuncCount; ++i)
1165  {
1166  _rLastRUFunctions.push_back( Get( pLRUListIds[i] ) );
1167  }
1168  }
1169 }
1170 
1171 OUString ScFunctionMgr::GetCategoryName(sal_uInt32 _nCategoryNumber )
1172 {
1173  if (_nCategoryNumber >= SC_FUNCGROUP_COUNT)
1174  {
1175  OSL_FAIL("Invalid category number!");
1176  return OUString();
1177  }
1178 
1179  return ScResId(RID_FUNCTION_CATEGORIES[_nCategoryNumber]);
1180 }
1181 
1183 {
1184  switch(_eToken)
1185  {
1186  case eOk:
1188  case eClose:
1190  case eSep:
1192  case eArrayOpen:
1194  case eArrayClose:
1196  }
1197  return 0;
1198 }
1199 
1200 static void ScFuncRes(const ScFuncDescCore &rEntry, ScFuncDesc* pDesc, bool& rbSuppressed)
1201 {
1202  const sal_uInt16 nOpCode = rEntry.nOpCode;
1203  sal_uInt16 nFunctionFlags = rEntry.nFunctionFlags;
1204  // Bit 1: entirely suppressed
1205  // Bit 2: hidden unless used
1206  rbSuppressed = ((nFunctionFlags & 1) != 0);
1207  pDesc->mbHidden = ((nFunctionFlags & 2) != 0);
1208  pDesc->nCategory = rEntry.nCategory;
1209  pDesc->sHelpId = rEntry.pHelpId;
1210  pDesc->nArgCount = rEntry.nArgs;
1211  sal_uInt16 nArgs = pDesc->nArgCount;
1212  sal_uInt16 nVarArgsSet = 0;
1213  if (nArgs >= PAIRED_VAR_ARGS)
1214  {
1215  nVarArgsSet = 2;
1216  nArgs -= PAIRED_VAR_ARGS - nVarArgsSet;
1217  }
1218  else if (nArgs >= VAR_ARGS)
1219  {
1220  nVarArgsSet = 1;
1221  nArgs -= VAR_ARGS - nVarArgsSet;
1222  }
1223  assert(nArgs <= SAL_N_ELEMENTS(rEntry.aOptionalArgs));
1224  if (nArgs)
1225  {
1226  pDesc->nVarArgsStart = nArgs - nVarArgsSet;
1227  pDesc->nVarArgsLimit = rEntry.nVarArgsLimit;
1228  pDesc->pDefArgFlags = new ScFuncDesc::ParameterFlags[nArgs];
1229  for (sal_uInt16 i = 0; i < nArgs; ++i)
1230  {
1231  pDesc->pDefArgFlags[i].bOptional = static_cast<bool>(rEntry.aOptionalArgs[i]);
1232  }
1233  }
1234 
1235  pDesc->mxFuncName = ScCompiler::GetNativeSymbol(static_cast<OpCode>(nOpCode));
1236  pDesc->mxFuncDesc = ScResId(rEntry.pResource[0]);
1237 
1238  if (!nArgs)
1239  return;
1240 
1241  pDesc->maDefArgNames.clear();
1242  pDesc->maDefArgNames.resize(nArgs);
1243  pDesc->maDefArgDescs.clear();
1244  pDesc->maDefArgDescs.resize(nArgs);
1245  for (sal_uInt16 i = 0; i < nArgs; ++i)
1246  {
1247  size_t nIndex = (i * 2) + 1;
1248  if (nIndex < rEntry.nResourceLen)
1249  pDesc->maDefArgNames[i] = ScResId(rEntry.pResource[nIndex]);
1250  if (nIndex + 1 < rEntry.nResourceLen)
1251  pDesc->maDefArgDescs[i] = ScResId(rEntry.pResource[nIndex + 1]);
1252  // If empty and variable number of arguments and last parameter and
1253  // parameter is optional and the previous is not optional, repeat
1254  // previous parameter name and description.
1255  if ((pDesc->maDefArgNames[i].isEmpty() || pDesc->maDefArgDescs[i].isEmpty()) &&
1256  nVarArgsSet > 0 && i > nVarArgsSet && (i == nArgs-1 || i == nArgs-2) &&
1257  pDesc->pDefArgFlags[i].bOptional)
1258  {
1259  sal_uInt16 nPrev = i - nVarArgsSet;
1260  if (!pDesc->pDefArgFlags[nPrev].bOptional)
1261  {
1262  if (pDesc->maDefArgNames[i].isEmpty())
1263  pDesc->maDefArgNames[i] = pDesc->maDefArgNames[nPrev];
1264  if (pDesc->maDefArgDescs[i].isEmpty())
1265  pDesc->maDefArgDescs[i] = pDesc->maDefArgDescs[nPrev];
1266  // This also means that variable arguments start one
1267  // parameter set earlier.
1268  pDesc->nVarArgsStart -= nVarArgsSet;
1269  }
1270  }
1271  }
1272 }
1273 
1274 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
#define HID_FUNC_BITLSHIFT
Definition: helpids.h:488
virtual sal_uInt32 getCount() const override
Definition: funcdesc.cxx:1139
sal_uInt32 m_nCategory
index number of this category
Definition: funcdesc.hxx:299
#define HID_FUNC_BITAND
Definition: helpids.h:485
#define SC_OPCODE_CRIT_BINOM
#define HID_FUNC_QUANTILSRANG
Definition: helpids.h:366
#define SC_OPCODE_DB_STD_DEV
#define SC_OPCODE_ABS
#define SC_OPCODE_REPT
#define HID_FUNC_COSECANT
Definition: helpids.h:301
virtual bool isHidden() const override
Returns whether function is hidden and not offered in the Function Wizard unless used in an expressio...
Definition: funcdesc.cxx:358
#define HID_FUNC_F_DIST_LT
Definition: helpids.h:511
#define SC_OPCODE_BITXOR
#define ID_FUNCTION_GRP_INFO
Definition: scfuncs.hxx:25
#define HID_FUNC_TTEST
Definition: helpids.h:406
#define ID_FUNCTION_GRP_ADDINS
Definition: scfuncs.hxx:32
List of spreadsheet functions.
Definition: funcdesc.hxx:242
#define HID_FUNC_ANZAHLLEEREZELLEN
Definition: helpids.h:267
#define HID_FUNC_MITTELWERTA
Definition: helpids.h:417
#define HID_FUNC_MINIFS_MS
Definition: helpids.h:574
#define HID_FUNC_QUARTILE
Definition: helpids.h:363
#define SC_OPCODE_SUM_XMY2
#define SC_OPCODE_TRUNC
#define ID_FUNCTION_GRP_DATETIME
Definition: scfuncs.hxx:23
#define HID_FUNC_PEARSON
Definition: helpids.h:411
#define SC_OPCODE_DB_AVERAGE
#define SC_OPCODE_CEIL_ISO
#define SC_OPCODE_DB
#define SC_OPCODE_COUNT_EMPTY_CELLS
static SC_DLLPUBLIC ScUnoAddInCollection * GetAddInCollection()
Definition: global.cxx:269
#define SC_OPCODE_LENB
#define HID_FUNC_SUMMENPRODUKT
Definition: helpids.h:334
#define SC_OPCODE_LOG
#define SC_OPCODE_COVARIANCE_P
#define SC_OPCODE_PROPER
OUString m_sName
name of this category
Definition: funcdesc.hxx:298
#define SC_OPCODE_LARGE
sal_Int32 nIndex
#define HID_FUNC_BINOMVERT
Definition: helpids.h:375
virtual sal_uInt32 getVarArgsStart() const override
Returns start of variable arguments.
Definition: funcdesc.cxx:368
#define SC_OPCODE_DB_SUM
#define SC_OPCODE_ARC_SIN_HYP
#define SC_OPCODE_LINEST
#define HID_FUNC_KGROESSTE
Definition: helpids.h:364
#define SC_OPCODE_GET_SEC
std::map< sal_uInt32, std::shared_ptr< ScFunctionCategory > > m_aCategories
map of category pos to IFunctionCategory
Definition: funcdesc.hxx:399
#define SC_OPCODE_LN
#define HID_FUNC_WURZEL
Definition: helpids.h:278
#define SC_OPCODE_SUM_X2MY2
#define HID_FUNC_ISTNV
Definition: helpids.h:242
#define SC_OPCODE_ST_DEV
#define SC_OPCODE_RANK_EQ
#define HID_FUNC_FTEST
Definition: helpids.h:405
#define HID_FUNC_LOG10
Definition: helpids.h:310
sal_uInt16 GetParamCount() const
Definition: callform.hxx:76
#define SC_OPCODE_BETA_DIST
#define SC_OPCODE_COVARIANCE_S
#define SC_OPCODE_GET_TIME
#define PAIRED_VAR_ARGS
#define SC_OPCODE_AVERAGE_IF
#define HID_FUNC_GAMMA
Definition: helpids.h:424
#define HID_FUNC_BINOM_DIST_MS
Definition: helpids.h:502
sal_uInt16 GetSuppressedArgCount() const
Returns the number of non-suppressed arguments.
Definition: funcdesc.cxx:278
#define HID_FUNC_LEFTB
Definition: helpids.h:471
#define HID_FUNC_SIN
Definition: helpids.h:293
#define HID_FUNC_ACHSENABSCHNITT
Definition: helpids.h:408
bool bOptional
Parameter is optional.
Definition: funcdesc.hxx:212
#define SC_OPCODE_MID
#define HID_FUNC_ZGZ
Definition: helpids.h:233
#define SC_OPCODE_CHISQ_INV_MS
#define HID_FUNC_BETAINV_MS
Definition: helpids.h:501
#define HID_FUNC_SUMME
Definition: helpids.h:269
#define HID_FUNC_TYP
Definition: helpids.h:249
#define SC_OPCODE_CHISQ_INV
#define HID_FUNC_FEST
Definition: helpids.h:464
#define HID_FUNC_TABELLE
Definition: helpids.h:443
#define HID_FUNC_NICHT
Definition: helpids.h:256
#define HID_FUNC_GAMMADIST_MS
Definition: helpids.h:520
#define SC_OPCODE_SUM_IF
virtual sal_Int32 getSuppressedArgumentCount() const override
Definition: funcdesc.cxx:304
#define SC_OPCODE_VAR_S
#define HID_FUNC_MINV
Definition: helpids.h:332
#define SC_OPCODE_ROMAN
#define HID_FUNC_DIA
Definition: helpids.h:223
#define HID_FUNC_FLOOR_PRECISE
Definition: helpids.h:559
#define SC_OPCODE_SHEETS
#define SC_OPCODE_QUARTILE
#define HID_FUNC_EUROCONVERT
Definition: helpids.h:327
#define HID_FUNC_TAG
Definition: helpids.h:196
#define HID_FUNC_DBSUMME
Definition: helpids.h:190
#define HID_FUNC_FORECAST_ETS_ADD
Definition: helpids.h:562
#define SC_OPCODE_RAD
#define SC_OPCODE_BETA_INV_MS
#define SC_OPCODE_F_DIST_LT
#define HID_FUNC_GROSS
Definition: helpids.h:458
#define SC_OPCODE_FORECAST_ETS_SEA
#define SC_OPCODE_DDE
#define SC_OPCODE_FORECAST_ETS_STA
#define HID_FUNC_VERSCHIEBUNG
Definition: helpids.h:439
#define SC_OPCODE_CHISQ_DIST
#define SC_OPCODE_IS_NV
#define HID_FUNC_GDA2
Definition: helpids.h:226
#define HID_FUNC_PRODUKT
Definition: helpids.h:271
#define HID_FUNC_CHISQINV
Definition: helpids.h:423
const ScUnoAddInFuncData * GetFuncData(const OUString &rName, bool bComplete=false)
Only if bComplete is set, the function reference and argument types are initialized (component may ha...
Definition: addincol.cxx:1105
#define SC_OPCODE_AVERAGE_A
#define SC_OPCODE_VAR_P_MS
#define HID_FUNC_JETZT
Definition: helpids.h:201
#define HID_FUNC_F_INV_RT
Definition: helpids.h:514
#define HID_FUNC_INDIREKT
Definition: helpids.h:436
const ScFuncDesc * Get(sal_uInt16 nFIndex) const
Returns function by index.
Definition: funcdesc.cxx:1099
#define HID_FUNC_ZELLE
Definition: helpids.h:252
#define SC_OPCODE_CODE
const ScFuncDesc * Next() const
Returns the next function of the current category.
Definition: funcdesc.cxx:1126
#define SC_OPCODE_QUARTILE_INC
#define HID_FUNC_LAENGE
Definition: helpids.h:465
#define HID_FUNC_QUARTILE_INC
Definition: helpids.h:538
#define SC_OPCODE_COS_HYP
#define SC_OPCODE_GET_DATE_VALUE
#define SC_OPCODE_FORECAST_ETS_PIM
sal_uInt16 char char * pDesc
Definition: callform.cxx:58
#define HID_FUNC_ISTLEER
Definition: helpids.h:240
#define HID_FUNC_MMULT
Definition: helpids.h:330
#define HID_FUNC_MODAL_VALUE_MS
Definition: helpids.h:542
#define HID_FUNC_FVERT
Definition: helpids.h:395
#define SC_OPCODE_T
#define SC_OPCODE_ERROR_TYPE
#define SC_OPCODE_CHI_TEST_MS
#define SC_OPCODE_MEDIAN
#define SC_OPCODE_BITOR
#define SC_OPCODE_LOG_INV
#define SC_OPCODE_DB_COUNT_2
#define HID_FUNC_NORMDIST_MS
Definition: helpids.h:524
sal_uInt16 GetLRUFuncListCount() const
Definition: appoptio.hxx:48
#define SC_OPCODE_FORECAST_ETS_ADD
#define HID_FUNC_BASIS
Definition: helpids.h:475
#define SC_OPCODE_DB_PRODUCT
#define SC_OPCODE_AREAS
#define SC_OPCODE_REGEX
#define HID_FUNC_CHIVERT_MS
Definition: helpids.h:505
#define SC_OPCODE_BETA_INV
#define HID_FUNC_NORMINV
Definition: helpids.h:380
#define SC_OPCODE_FLOOR_MATH
Stores whether a parameter is optional or suppressed.
Definition: funcdesc.hxx:210
#define HID_FUNC_REST
Definition: helpids.h:312
#define SC_OPCODE_POWER
#define ID_FUNCTION_GRP_LOGIC
Definition: scfuncs.hxx:26
#define SC_OPCODE_HYP_GEOM_DIST_MS
#define HID_FUNC_HYPGEOMVERT
Definition: helpids.h:392
#define HID_FUNC_STUNDE
Definition: helpids.h:198
#define SC_OPCODE_ARC_SIN
#define HID_FUNC_VARIATIONEN
Definition: helpids.h:400
#define SC_OPCODE_COMBIN
#define SC_OPCODE_DEG
#define HID_FUNC_QUADRATESUMME
Definition: helpids.h:270
virtual sal_uInt32 getVarArgsLimit() const override
Returns maximum number of (variable) arguments.
Definition: funcdesc.cxx:373
ocOpen
#define HID_FUNC_IDENTISCH
Definition: helpids.h:453
#define SC_OPCODE_POISSON_DIST
#define HID_FUNC_GGT
Definition: helpids.h:324
#define HID_FUNC_KKLEINSTE
Definition: helpids.h:365
#define SC_OPCODE_VAR
#define HID_FUNC_CHITEST
Definition: helpids.h:404
#define HID_FUNC_WEIBULL_DIST_MS
Definition: helpids.h:519
#define HID_FUNC_WENN
Definition: helpids.h:258
#define SC_OPCODE_CUM_PRINC
#define SC_OPCODE_OR
#define SC_OPCODE_LOOKUP
#define SC_OPCODE_STEYX
aBuf
#define HID_FUNC_STANDNORMINV
Definition: helpids.h:382
#define SC_OPCODE_COUNT_2
#define HID_FUNC_ARCTAN
Definition: helpids.h:289
#define HID_FUNC_CHITEST_MS
Definition: helpids.h:506
#define SC_OPCODE_FLOOR_PRECISE
#define HID_FUNC_RANDBETWEEN_NV
Definition: helpids.h:583
#define SC_OPCODE_S_NORM_INV_MS
#define HID_FUNC_KLEIN
Definition: helpids.h:459
virtual OUString getName() const override
Definition: funcdesc.cxx:1030
#define SC_OPCODE_MATCH
#define HID_FUNC_PERCENTRANK_INC
Definition: helpids.h:537
#define HID_FUNC_VARIANZENA
Definition: helpids.h:421
#define SC_OPCODE_NOMINAL
#define SC_OPCODE_FREQUENCY
#define HID_FUNC_BW
Definition: helpids.h:214
#define SC_OPCODE_TAN
#define HID_FUNC_RAWSUBTRACT
Definition: helpids.h:560
#define ENTRY(CODE)
Definition: funcdesc.cxx:398
#define HID_FUNC_CONCAT_MS
Definition: helpids.h:570
virtual bool isParameterOptional(sal_uInt32 _nPos) const override
Returns true if parameter at given position is optional.
Definition: funcdesc.cxx:388
#define SC_OPCODE_TRIM_MEAN
#define SC_OPCODE_NPV
#define SC_OPCODE_CHI_INV
#define HID_FUNC_WAHL
Definition: helpids.h:428
#define SC_OPCODE_GET_YEAR
#define SC_OPCODE_CEIL_MS
#define SC_OPCODE_MATRIX_UNIT
#define HID_FUNC_JAHR
Definition: helpids.h:207
#define SC_OPCODE_IS_EVEN
#define SC_OPCODE_PERCENTILE_INC
#define HID_FUNC_DEZIMAL
Definition: helpids.h:476
#define HID_FUNC_UND
Definition: helpids.h:262
#define HID_FUNC_FORECAST_ETS_STA
Definition: helpids.h:567
#define SC_OPCODE_TAN_HYP
#define HID_FUNC_ARCSIN
Definition: helpids.h:285
#define SC_OPCODE_EXP_DIST_MS
#define SC_OPCODE_ST_DEV_S
virtual const formula::IFunctionCategory * getCategory(sal_uInt32 nPos) const override
Returns a category.
Definition: funcdesc.cxx:1144
#define SC_OPCODE_IS_REF
virtual sal_Unicode getSingleToken(const formula::IFunctionManager::EToken _eToken) const override
Maps Etoken to character.
Definition: funcdesc.cxx:1182
#define HID_FUNC_ROUNDSIG
Definition: helpids.h:576
static void ScFuncRes(const ScFuncDescCore &rEntry, ScFuncDesc *, bool &rbSuppressed)
Definition: funcdesc.cxx:1200
#define HID_FUNC_FORECAST_ETS_SEA
Definition: helpids.h:566
#define HID_FUNC_N
Definition: helpids.h:247
#define SC_OPCODE_MAT_DET
virtual sal_uInt32 getNumber() const override
Definition: funcdesc.cxx:1045
#define HID_FUNC_MITTELABW
Definition: helpids.h:354
#define SC_OPCODE_FISHER_INV
#define HID_FUNC_KORREL
Definition: helpids.h:412
#define HID_FUNC_MITTELWERT
Definition: helpids.h:352
#define HID_FUNC_DBVARIANZ
Definition: helpids.h:191
#define SC_OPCODE_FORECAST_ETS_PIA
#define HID_FUNC_HEUTE
Definition: helpids.h:205
#define HID_FUNC_AVERAGEIF
Definition: helpids.h:273
#define SC_OPCODE_BITAND
#define HID_FUNC_DATEDIF
Definition: helpids.h:209
#define HID_FUNC_ANZAHL2
Definition: helpids.h:345
#define SC_OPCODE_PROB
#define HID_FUNC_ZZR
Definition: helpids.h:216
#define SC_OPCODE_GAMMA_LN_MS
#define SC_OPCODE_ENCODEURL
virtual OUString getParameterDescription(sal_uInt32 _nPos) const override
Returns description of parameter at given position.
Definition: funcdesc.cxx:383
#define HID_FUNC_SEARCHB
Definition: helpids.h:579
#define HID_FUNC_ST_DEV_S
Definition: helpids.h:497
#define HID_FUNC_ISTBEZUG
Definition: helpids.h:237
#define HID_FUNC_RAD
Definition: helpids.h:306
#define HID_FUNC_POISSON
Definition: helpids.h:378
#define SC_OPCODE_CHI_DIST_MS
#define HID_FUNC_WECHSELN
Definition: helpids.h:474
#define HID_FUNC_FLOOR_MATH
Definition: helpids.h:558
#define SC_OPCODE_IF_ERROR
#define SC_OPCODE_NEG_BINOM_VERT
#define SC_OPCODE_WEBSERVICE
#define SC_OPCODE_T_TEST_MS
#define HID_FUNC_QUARTILE_EXC
Definition: helpids.h:539
virtual ~ScFunctionMgr()
Definition: funcdesc.cxx:1094
#define SC_OPCODE_GAMMA
#define HID_FUNC_VERKETTEN
Definition: helpids.h:452
#define SC_OPCODE_MIN
#define SC_OPCODE_SUM_IFS
#define HID_FUNC_TEILERGEBNIS
Definition: helpids.h:314
#define SC_OPCODE_MODAL_VALUE
#define HID_FUNC_GAMMAVERT
Definition: helpids.h:386
#define HID_FUNC_TEXT
Definition: helpids.h:461
#define SC_OPCODE_LCM
#define HID_FUNC_FORECAST_ETS_MUL
Definition: helpids.h:563
#define SC_OPCODE_PERCENTILE
#define HID_FUNC_QUANTIL
Definition: helpids.h:362
#define SC_FUNCGROUP_COUNT
Definition: funcdesc.hxx:302
#define HID_FUNC_ZEITWERT
Definition: helpids.h:204
#define SC_OPCODE_IRR
#define SC_OPCODE_RANK
bool mbHidden
Whether function is hidden.
Definition: funcdesc.hxx:229
virtual const formula::IFunctionDescription * getFunction(sal_uInt32 _nPos) const override
Gives the _nPos'th function in this category.
Definition: funcdesc.cxx:1037
#define HID_FUNC_KOMBINATIONEN2
Definition: helpids.h:283
#define SC_OPCODE_COT
#define SC_OPCODE_F_TEST
#define SC_OPCODE_SECANT
#define HID_FUNC_ARCOTHYP
Definition: helpids.h:290
#define HID_FUNC_COSECANTHYP
Definition: helpids.h:304
#define SC_OPCODE_ARC_TAN_HYP
#define HID_FUNC_STABWA
Definition: helpids.h:418
#define SC_OPCODE_PERCENTILE_EXC
#define HID_FUNC_B
Definition: helpids.h:370
#define SC_OPCODE_B
bool FillFunctionDesc(long nFunc, ScFuncDesc &rDesc)
Definition: addincol.cxx:1156
#define SC_OPCODE_DECIMAL
#define SC_OPCODE_IS_ERR
#define SC_OPCODE_CONFIDENCE_T
#define SC_OPCODE_MAX_A
#define SC_OPCODE_FISHER
sal_uInt16 sal_Unicode
#define HID_FUNC_STABWNA
Definition: helpids.h:419
#define HID_FUNC_ARCTAN2
Definition: helpids.h:300
::std::vector< const ScFuncDesc * > * m_pCategory
list of functions in this category
Definition: funcdesc.hxx:297
#define SC_OPCODE_PDURATION
#define SC_OPCODE_OFFSET
#define HID_FUNC_TAN
Definition: helpids.h:295
#define SC_OPCODE_CEIL
#define SC_OPCODE_SECANT_HYP
#define HID_FUNC_BETAVERT
Definition: helpids.h:389
#define HID_FUNC_UNGERADE
Definition: helpids.h:321
#define HID_FUNC_SUMMEWENN
Definition: helpids.h:272
#define HID_FUNC_GAMMALN
Definition: helpids.h:388
#define HID_FUNC_GTEST
Definition: helpids.h:403
#define HID_FUNC_GDA
Definition: helpids.h:225
#define SC_OPCODE_COMBIN_A
ocArrayClose
#define HID_FUNC_EXP
Definition: helpids.h:307
#define HID_FUNC_BITOR
Definition: helpids.h:486
#define HID_FUNC_REPLACEB
Definition: helpids.h:577
enumrange< T >::Iterator begin(enumrange< T >)
#define SC_OPCODE_NEG_BINOM_DIST_MS
#define SC_OPCODE_LOGEST
#define HID_FUNC_ISTGERADE
Definition: helpids.h:280
const BorderLinePrimitive2D *pCandidateB assert(pCandidateA)
#define SC_OPCODE_CURRENT
#define HID_FUNC_QIKV
Definition: helpids.h:234
#define HID_FUNC_TVERT
Definition: helpids.h:393
#define HID_FUNC_NBW
Definition: helpids.h:230
#define SC_OPCODE_PERCENT_RANK_EXC
#define HID_FUNC_MONAT
Definition: helpids.h:200
const ScFuncDesc * First()
Definition: funcdesc.cxx:994
sal_uInt16 * GetLRUFuncList() const
Definition: appoptio.hxx:49
#define HID_FUNC_CEIL_ISO
Definition: helpids.h:548
#define SC_OPCODE_DB_MAX
#define SC_OPCODE_SWITCH_MS
#define SC_OPCODE_COLOR
#define HID_FUNC_DBANZAHL
Definition: helpids.h:181
#define HID_FUNC_ABS
Definition: helpids.h:265
#define SC_OPCODE_FILTERXML
#define HID_FUNC_TINV_2T
Definition: helpids.h:531
#define SC_OPCODE_GET_DAY
#define SC_OPCODE_F_INV_RT
#define SC_OPCODE_LOG_INV_MS
#define SC_OPCODE_COT_HYP
#define SC_OPCODE_PRODUCT
#define HID_FUNC_FOURIER
Definition: helpids.h:581
#define SC_OPCODE_T_DIST_MS
#define SC_OPCODE_DB_COUNT
#define SC_OPCODE_FALSE
#define HID_FUNC_MAXIFS_MS
Definition: helpids.h:575
#define SC_OPCODE_GCD
#define SC_OPCODE_DB_STD_DEV_P
#define SC_OPCODE_MAXIFS_MS
#define SC_OPCODE_PERCENT_RANK
#define HID_FUNC_RMZ
Definition: helpids.h:217
#define HID_FUNC_F_INV_LT
Definition: helpids.h:513
#define SC_OPCODE_FINDB
#define HID_FUNC_VORLAGE
Definition: helpids.h:441
#define HID_FUNC_GLAETTEN
Definition: helpids.h:456
#define HID_FUNC_FEHLERTYP
Definition: helpids.h:440
#define HID_FUNC_NEGBINOMDIST_MS
Definition: helpids.h:544
#define SC_OPCODE_NORM_DIST
ParameterFlags * pDefArgFlags
Flags for each parameter.
Definition: funcdesc.hxx:221
#define HID_FUNC_KALENDERWOCHE
Definition: helpids.h:210
#define SC_OPCODE_DB_VAR
#define HID_FUNC_KUERZEN
Definition: helpids.h:316
#define HID_FUNC_FINDB
Definition: helpids.h:578
#define SC_OPCODE_INT
#define SC_OPCODE_IS_LOGICAL
#define SC_OPCODE_F_TEST_MS
#define HID_FUNC_HYP_GEOM_DIST_MS
Definition: helpids.h:517
#define HID_FUNC_ISTKTEXT
Definition: helpids.h:243
#define SC_OPCODE_MAT_MULT
#define SC_OPCODE_IS_EMPTY
virtual OUString getFormula(const ::std::vector< OUString > &_aArguments) const override
Returns the function signature with parameters from the passed string array.
Definition: funcdesc.cxx:247
OUString GetParamList() const
Returns list of all parameter names.
Definition: funcdesc.cxx:146
#define SC_OPCODE_QUARTILE_EXC
static sal_Unicode GetNativeSymbolChar(OpCode eOp)
#define SC_OPCODE_T_INV
#define SC_OPCODE_EVEN
#define SC_OPCODE_ROWS
#define SC_OPCODE_COLUMN
#define HID_FUNC_KUMKAPITAL
Definition: helpids.h:221
#define SC_OPCODE_GET_DATE
#define SC_OPCODE_ARC_COT
#define HID_FUNC_COSHYP
Definition: helpids.h:296
#define SC_OPCODE_SLN
#define SC_OPCODE_CHAR
#define SC_OPCODE_PERCENT_RANK_INC
#define HID_FUNC_REGEX
Definition: helpids.h:580
#define HID_FUNC_BETADIST_MS
Definition: helpids.h:500
#define SC_OPCODE_FORMULA
#define HID_FUNC_ISTFORMEL
Definition: helpids.h:246
#define SC_OPCODE_IS_STRING
#define HID_FUNC_OSTERSONNTAG
Definition: helpids.h:211
#define SC_OPCODE_PPMT
#define HID_FUNC_GANZZAHL
Definition: helpids.h:315
#define SC_OPCODE_TEXTJOIN_MS
#define HID_FUNC_SEKUNDE
Definition: helpids.h:202
#define HID_FUNC_COVARIANCE_S
Definition: helpids.h:495
#define HID_FUNC_LINKS
Definition: helpids.h:466
ocSep
#define HID_FUNC_TREND
Definition: helpids.h:341
#define SC_OPCODE_GET_DIFF_DATE
#define SAL_N_ELEMENTS(arr)
#define HID_FUNC_BETAINV
Definition: helpids.h:390
#define HID_FUNC_UNICHAR
Definition: helpids.h:483
#define HID_FUNC_ZEICHEN
Definition: helpids.h:450
#define SC_OPCODE_T_DIST_2T
#define HID_FUNC_LOG
Definition: helpids.h:308
#define SC_OPCODE_FIXED
#define HID_FUNC_STFEHLERYX
Definition: helpids.h:410
#define HID_FUNC_MINUTE
Definition: helpids.h:199
#define SC_OPCODE_ARC_TAN_2
#define SC_OPCODE_AVE_DEV
#define SC_OPCODE_ROUND_UP
#define HID_FUNC_LAUFZEIT
Definition: helpids.h:232
#define SC_OPCODE_CURRENCY
#define SC_OPCODE_GET_ACT_TIME
#define HID_FUNC_TINV_MS
Definition: helpids.h:532
#define HID_FUNC_ISTFEHLER
Definition: helpids.h:239
#define HID_FUNC_DBSTDABW
Definition: helpids.h:188
#define SC_OPCODE_SUM_X2DY2
#define SC_OPCODE_IS_ODD
#define SC_OPCODE_CORREL
#define HID_FUNC_ZEILE
Definition: helpids.h:430
#define HID_FUNC_TTEST_MS
Definition: helpids.h:533
#define HID_FUNC_GAUSS
Definition: helpids.h:372
#define SC_OPCODE_CONFIDENCE
#define SC_OPCODE_RSQ
#define HID_FUNC_FISHERINV
Definition: helpids.h:374
sal_uInt16 nCategory
Function category.
Definition: funcdesc.hxx:223
#define HID_FUNC_SUMQUADABW
Definition: helpids.h:353
#define SC_OPCODE_GET_TIME_VALUE
#define SC_OPCODE_HYP_GEOM_DIST
ocArrayOpen
#define HID_FUNC_AVERAGEIFS
Definition: helpids.h:275
#define HID_FUNC_ENCODEURL
Definition: helpids.h:492
#define HID_FUNC_SUCHEN
Definition: helpids.h:455
#define SC_OPCODE_MINIFS_MS
#define ID_FUNCTION_GRP_MATH
Definition: scfuncs.hxx:27
#define SC_OPCODE_SIN
#define HID_FUNC_SPALTEN
Definition: helpids.h:431
#define HID_FUNC_ISOWEEKNUM
Definition: helpids.h:212
#define SC_OPCODE_DB_GET
#define SC_OPCODE_ERF_MS
#define SC_OPCODE_NOT
static const OUString & GetNativeSymbol(OpCode eOp)
#define HID_FUNC_VAR_P_MS
Definition: helpids.h:498
#define ID_FUNCTION_GRP_TEXT
Definition: scfuncs.hxx:31
#define HID_FUNC_SUMIFS
Definition: helpids.h:274
#define SC_OPCODE_SKEW
#define HID_FUNC_MTRANS
Definition: helpids.h:329
#define HID_FUNC_FORECAST_ETS_STM
Definition: helpids.h:568
#define SC_OPCODE_S_NORM_INV
#define SC_OPCODE_EFFECT
virtual OUString getSignature() const override
Returns the full function signature.
Definition: funcdesc.cxx:224
#define SC_OPCODE_BITLSHIFT
#define HID_FUNC_DATWERT
Definition: helpids.h:195
#define HID_FUNC_NOMINAL
Definition: helpids.h:229
#define SC_OPCODE_EUROCONVERT
#define HID_FUNC_SWITCH_MS
Definition: helpids.h:573
int i
#define SC_OPCODE_TRIM
#define HID_FUNC_HAEUFIGKEIT
Definition: helpids.h:338
#define SC_OPCODE_MAX
#define HID_FUNC_SUMMEX2PY2
Definition: helpids.h:336
#define SC_OPCODE_SUM
#define SC_OPCODE_COUNT_IFS
#define SC_OPCODE_GET_PIVOT_DATA
#define SC_OPCODE_BITRSHIFT
#define HID_FUNC_CONFIDENCE_N
Definition: helpids.h:509
#define HID_FUNC_VARIATIONEN2
Definition: helpids.h:401
#define HID_FUNC_T
Definition: helpids.h:462
#define SC_OPCODE_MODAL_VALUE_MULTI
#define SC_OPCODE_GAMMA_DIST_MS
#define SC_OPCODE_PV
#define HID_FUNC_ADRESSE
Definition: helpids.h:426
#define HID_FUNC_RECHTS
Definition: helpids.h:467
virtual sal_uInt32 getParameterCount() const override
Returns number of arguments.
Definition: funcdesc.cxx:363
#define HID_FUNC_STANDARDISIERUNG
Definition: helpids.h:399
#define SC_OPCODE_FOURIER
#define SC_OPCODE_CONCAT_MS
#define HID_FUNC_KOMBINATIONEN
Definition: helpids.h:282
#define SC_OPCODE_LOG10
#define SC_OPCODE_COUNT_IF
#define VAR_ARGS
#define SC_OPCODE_STYLE
std::vector< OUString > maDefArgDescs
Description(s) of parameter(s)
Definition: funcdesc.hxx:220
#define HID_FUNC_PHI
Definition: helpids.h:371
#define SC_OPCODE_FORECAST_LIN
#define SC_OPCODE_GET_DATEDIF
#define HID_FUNC_ARTANHYP
Definition: helpids.h:291
#define HID_FUNC_COTHYP
Definition: helpids.h:298
void getParamDesc(OUString &aName, OUString &aDesc, sal_uInt16 nParam) const
name and description of parameter nParam.
Definition: callform.cxx:343
static bool compareByName(const ScFuncDesc *a, const ScFuncDesc *b)
Compares functions by name, respecting special characters.
Definition: funcdesc.cxx:393
#define HID_FUNC_SECANT
Definition: helpids.h:302
#define SC_MOD()
Definition: scmod.hxx:253
#define HID_FUNC_ZINS
Definition: helpids.h:218
#define SC_OPCODE_GET_MIN
const OUString & FindFunction(const OUString &rUpperName, bool bLocalFirst)
User entered name. rUpperName MUST already be upper case!
Definition: addincol.cxx:1070
#define HID_FUNC_GEOMITTEL
Definition: helpids.h:358
#define SC_OPCODE_CONFIDENCE_N
#define SC_OPCODE_BINOM_DIST
#define HID_FUNC_ISTUNGERADE
Definition: helpids.h:281
virtual void fillVisibleArgumentMapping(::std::vector< sal_uInt16 > &_rArguments) const override
Fills a mapping with indexes for non-suppressed arguments.
Definition: funcdesc.cxx:309
#define HID_FUNC_STABW
Definition: helpids.h:350
#define SC_OPCODE_GAMMA_INV
#define HID_FUNC_NV
Definition: helpids.h:248
#define HID_FUNC_GAMMALN_MS
Definition: helpids.h:522
#define SC_OPCODE_GET_HOUR
#define SC_OPCODE_GAMMA_LN
#define HID_FUNC_HYPERLINK
Definition: helpids.h:445
const OUString & GetInternalName() const
Definition: callform.hxx:75
#define HID_FUNC_ISTTEXT
Definition: helpids.h:244
#define HID_FUNC_Z_TEST_MS
Definition: helpids.h:545
#define HID_FUNC_STD_NORMDIST_MS
Definition: helpids.h:526
#define HID_FUNC_CODE
Definition: helpids.h:448
#define HID_FUNC_DBMITTELWERT
Definition: helpids.h:183
#define SC_OPCODE_DB_MIN
#define HID_FUNC_HARMITTEL
Definition: helpids.h:359
#define SC_OPCODE_WEIBULL_MS
#define SC_OPCODE_NUMBERVALUE
#define HID_FUNC_EINHEITSMATRIX
Definition: helpids.h:333
#define SC_OPCODE_ST_DEV_A
#define SC_OPCODE_ERFC_MS
#define SC_OPCODE_WEEK
#define SC_OPCODE_TREND
#define SC_OPCODE_T_TEST
#define HID_FUNC_CEIL_MS
Definition: helpids.h:546
static ScFunctionMgr * GetStarCalcFunctionMgr()
Definition: global.cxx:620
#define SC_OPCODE_F_DIST_RT
ParamType GetParamType(sal_uInt16 nIndex) const
Definition: callform.hxx:77
float u
#define SC_OPCODE_EXACT
#define HID_FUNC_PERCENTILE_INC
Definition: helpids.h:535
#define SC_OPCODE_F_INV
#define SC_OPCODE_LOWER
OUString ScResId(const char *pId)
Definition: scdll.cxx:95
#define HID_FUNC_FINDEN
Definition: helpids.h:454
#define HID_FUNC_KGV
Definition: helpids.h:325
#define SC_OPCODE_LOG_NORM_DIST_MS
#define SC_OPCODE_NORM_DIST_MS
#define HID_FUNC_FLOOR_MS
Definition: helpids.h:549
#define HID_FUNC_FORMEL
Definition: helpids.h:251
#define SC_OPCODE_GET_DIFF_DATE_360
#define HID_FUNC_ARCCOT
Definition: helpids.h:288
#define SC_OPCODE_V_LOOKUP
#define SC_OPCODE_RRI
#define HID_FUNC_VERGLEICH
Definition: helpids.h:438
#define SC_OPCODE_VAR_P
#define SC_OPCODE_IF_NA
#define SC_OPCODE_SLOPE
std::optional< OUString > mxFuncDesc
Description of function.
Definition: funcdesc.hxx:218
#define LRU_MAX
Definition: funcdesc.hxx:35
size
#define SC_OPCODE_FV
#define HID_FUNC_UMRECHNEN
Definition: helpids.h:326
::boost::spirit::classic::rule< ScannerT > argument
#define SC_OPCODE_SEARCHB
#define SC_OPCODE_FIND
std::vector< const ScFuncDesc * >::iterator pCurCatListIter
position in current category
Definition: funcdesc.hxx:400
#define HID_FUNC_BEREICHE
Definition: helpids.h:427
#define HID_FUNC_AKTUELL
Definition: helpids.h:250
static OUString GetCategoryName(sal_uInt32 _nCategoryNumber)
Returns name of category.
Definition: funcdesc.cxx:1171
static CollatorWrapper * GetCaseCollator()
Definition: global.cxx:1039
#define SC_OPCODE_LEFT
#define HID_FUNC_TDIST_MS
Definition: helpids.h:529
#define SC_OPCODE_EASTERSUNDAY
#define HID_FUNC_ERFC_MS
Definition: helpids.h:554
#define HID_FUNC_MIDB
Definition: helpids.h:472
#define SC_OPCODE_EXP
#define HID_FUNC_MEDIAN
Definition: helpids.h:361
#define HID_FUNC_GAMMAINV_MS
Definition: helpids.h:521
#define SC_OPCODE_SUBSTITUTE
virtual OString getHelpId() const override
Returns the help id of the function.
Definition: funcdesc.cxx:353
#define SC_OPCODE_AVERAGE
#define HID_FUNC_SPALTE
Definition: helpids.h:429
#define SC_OPCODE_RANDOM_NV
#define HID_FUNC_STEIGUNG
Definition: helpids.h:409
#define SC_OPCODE_NETWORKDAYS
#define SC_OPCODE_SKEWP
#define HID_FUNC_BESTIMMTHEITSMASS
Definition: helpids.h:407
#define SC_OPCODE_INDIRECT
#define SC_OPCODE_ROUNDSIG
#define HID_FUNC_SCHIEFE
Definition: helpids.h:355
#define HID_FUNC_WOCHENTAG
Definition: helpids.h:206
#define HID_FUNC_CEIL_MATH
Definition: helpids.h:557
#define SC_OPCODE_MIN_A
#define SC_OPCODE_BASE
#define SC_OPCODE_VALUE
#define HID_FUNC_DBANZAHL2
Definition: helpids.h:182
#define HID_FUNC_OBERGRENZE
Definition: helpids.h:322
#define HID_FUNC_VAR_S
Definition: helpids.h:499
#define SC_OPCODE_CONCAT
#define SC_OPCODE_IPMT
#define SC_OPCODE_N
const ScFuncDesc * GetFunction(sal_uInt32 nIndex) const
Definition: funcdesc.cxx:1015
#define HID_FUNC_VARIATION
Definition: helpids.h:342
#define SC_OPCODE_COVAR
#define HID_FUNC_RANG
Definition: helpids.h:367
#define HID_FUNC_WEIBULL
Definition: helpids.h:391
#define HID_FUNC_XOR
Definition: helpids.h:263
#define SC_OPCODE_MODAL_VALUE_MS
#define HID_FUNC_AUFRUNDEN
Definition: helpids.h:318
#define HID_FUNC_GROSS2
Definition: helpids.h:457
enumrange< T >::Iterator end(enumrange< T >)
#define HID_FUNC_ZAEHLENWENN
Definition: helpids.h:277
#define HID_FUNC_STD_NORMINV_MS
Definition: helpids.h:527
#define HID_FUNC_SCHAETZER
Definition: helpids.h:414
#define SC_OPCODE_MOD
#define SC_OPCODE_UNICODE
#define SC_OPCODE_SUM_PRODUCT
virtual const formula::IFunctionCategory * getCategory() const override
Returns the category of the function.
Definition: funcdesc.cxx:291
#define HID_FUNC_ZEIT
Definition: helpids.h:203
#define SC_OPCODE_GAMMA_DIST
#define SC_OPCODE_T_DIST
static ScFunctionList * GetStarCalcFunctionList()
Definition: global.cxx:611
#define SC_OPCODE_RANDOM
#define SC_OPCODE_TRUE
#define HID_FUNC_WEBSERVICE
Definition: helpids.h:491
#define HID_FUNC_ERSETZEN
Definition: helpids.h:463
#define SC_OPCODE_PERMUTATION_A
#define SC_OPCODE_SMALL
#define HID_FUNC_NORMINV_MS
Definition: helpids.h:525
#define SC_OPCODE_CHI_INV_MS
#define HID_FUNC_IFNA
Definition: helpids.h:260
#define HID_FUNC_ODER
Definition: helpids.h:261
#define HID_FUNC_PERCENTRANK_EXC
Definition: helpids.h:536
#define HID_FUNC_INFO
Definition: helpids.h:253
virtual sal_uInt32 getCount() const override
Definition: funcdesc.cxx:1025
#define HID_FUNC_COUNTIFS
Definition: helpids.h:276
#define SC_OPCODE_PMT
std::unique_ptr< std::vector< const ScFuncDesc * > > aCatLists[MAX_FUNCCAT]
array of all categories, 0 is the cumulative ('All') category
Definition: funcdesc.hxx:398
#define ID_FUNCTION_GRP_MATRIX
Definition: scfuncs.hxx:28
#define SC_OPCODE_LAST_OPCODE_ID
#define HID_FUNC_VERWEIS
Definition: helpids.h:437
#define SC_OPCODE_NO_VALUE
#define HID_FUNC_SKEWP
Definition: helpids.h:356
#define HID_FUNC_NORMVERT
Definition: helpids.h:379
#define HID_FUNC_NETWORKDAYS_MS
Definition: helpids.h:551
#define HID_FUNC_SAEUBERN
Definition: helpids.h:451
#define HID_FUNC_COLOR
Definition: helpids.h:493
#define SC_OPCODE_F_INV_LT
#define SC_OPCODE_WORKDAY_MS
#define SC_OPCODE_FORECAST_ETS_STM
#define SC_OPCODE_CELL
#define SC_OPCODE_SEARCH
#define HID_FUNC_BITXOR
Definition: helpids.h:487
#define HID_FUNC_MAXA
Definition: helpids.h:416
#define HID_FUNC_EFFEKTIV
Definition: helpids.h:228
#define SC_OPCODE_ROW
virtual void fillLastRecentlyUsedFunctions(::std::vector< const formula::IFunctionDescription * > &_rLastRUFunctions) const override
Appends the last recently used functions.
Definition: funcdesc.cxx:1155
#define SC_OPCODE_COS
#define SC_OPCODE_XOR
#define HID_FUNC_MDET
Definition: helpids.h:331
#define SC_OPCODE_REPLACEB
#define HID_FUNC_UNTERGRENZE
Definition: helpids.h:323
sal_uInt16 nVarArgsStart
Start of variable arguments, for numbering.
Definition: funcdesc.hxx:225
sal_uInt16 nVarArgsLimit
Limit maximum of (variable) arguments, for numbering.
Definition: funcdesc.hxx:226
#define SC_OPCODE_JIS
#define HID_FUNC_MAX
Definition: helpids.h:346
#define HID_FUNC_CHISQDIST
Definition: helpids.h:422
#define SC_OPCODE_Z_TEST
#define SC_OPCODE_BETA_DIST_MS
#define HID_FUNC_FILTERXML
Definition: helpids.h:490
#define HID_FUNC_KUMZINSZ
Definition: helpids.h:222
std::optional< OUString > mxFuncName
Function name.
Definition: funcdesc.hxx:217
#define SC_OPCODE_GROWTH
#define HID_FUNC_SUMMEX2MY2
Definition: helpids.h:335
#define SC_OPCODE_COSECANT_HYP
#define HID_FUNC_KAPZ
Definition: helpids.h:220
#define SC_OPCODE_RANDBETWEEN_NV
static LegacyFuncCollection * GetLegacyFuncCollection()
Definition: global.cxx:264
#define SC_OPCODE_IS_NON_STRING
#define SC_OPCODE_PEARSON
#define HID_FUNC_ZINSZ
Definition: helpids.h:219
#define HID_FUNC_WERT
Definition: helpids.h:460
#define HID_FUNC_DBVARIANZEN
Definition: helpids.h:192
#define SC_OPCODE_T_INV_2T
#define ID_FUNCTION_GRP_DATABASE
Definition: scfuncs.hxx:22
#define HID_FUNC_LN
Definition: helpids.h:309
#define HID_FUNC_EXPONVERT
Definition: helpids.h:385
#define SC_OPCODE_BINOM_INV
#define HID_FUNC_STABWN
Definition: helpids.h:351
void Clear()
Clears the object.
Definition: funcdesc.cxx:118
#define SC_OPCODE_MAT_INV
#define SC_OPCODE_GET_MONTH
ScFunctionMgr()
Retrieves all calc functions, generates cumulative ('All') category, and the categories.
Definition: funcdesc.cxx:1051
#define ID_FUNCTION_GRP_STATISTIC
Definition: scfuncs.hxx:29
#define MAX_FUNCCAT
Definition: funcdesc.hxx:34
#define SC_OPCODE_FORECAST_ETS_MUL
#define HID_FUNC_IFS_MS
Definition: helpids.h:572
#define SC_OPCODE_CHISQ_DIST_MS
#define SC_OPCODE_BINOM_DIST_MS
unsigned char sal_uInt8
#define SC_OPCODE_AVERAGE_IFS
#define HID_FUNC_TDIST_RT
Definition: helpids.h:530
#define HID_FUNC_FORECAST_ETS_PIA
Definition: helpids.h:564
#define HID_FUNC_ASC
Definition: helpids.h:481
#define SC_OPCODE_ARC_TAN
#define SC_OPCODE_CEIL_MATH
#define HID_FUNC_GESTUTZTMITTEL
Definition: helpids.h:368
#define HID_FUNC_RAND_NV
Definition: helpids.h:582
#define HID_FUNC_DBMIN
Definition: helpids.h:186
#define SC_OPCODE_IS_VALUE
#define HID_FUNC_STANDNORMVERT
Definition: helpids.h:381
#define SC_OPCODE_SIN_HYP
#define SC_OPCODE_GAUSS
#define HID_FUNC_ARCCOS
Definition: helpids.h:284
#define SC_OPCODE_ST_DEV_P_A
#define HID_FUNC_GETPIVOTDATA
Definition: helpids.h:446
#define HID_FUNC_INDEX
Definition: helpids.h:435
#define HID_FUNC_F_DIST_RT
Definition: helpids.h:512
#define SC_OPCODE_PHI
#define HID_FUNC_TEXTJOIN_MS
Definition: helpids.h:571
#define HID_FUNC_FALSCH
Definition: helpids.h:255
#define SC_OPCODE_SUB_TOTAL
#define SC_OPCODE_CLEAN
#define SC_OPCODE_REPLACE
#define SC_OPCODE_AND
#define SC_OPCODE_PERMUT
#define ID_FUNCTION_GRP_FINANCIAL
Definition: scfuncs.hxx:24
#define HID_FUNC_PI
Definition: helpids.h:268
#define HID_FUNC_WAHR
Definition: helpids.h:257
#define HID_FUNC_TABELLEN
Definition: helpids.h:444
#define SC_OPCODE_PI
#define SC_OPCODE_DEV_SQ
#define HID_FUNC_BINOM_INV_MS
Definition: helpids.h:503
#define SC_OPCODE_MAT_TRANS
#define HID_FUNC_ERF_MS
Definition: helpids.h:553
#define HID_FUNC_TEIL
Definition: helpids.h:468
virtual void initArgumentInfo() const override
Requests function data from AddInCollection.
Definition: funcdesc.cxx:327
#define SC_OPCODE_NORM_INV_MS
#define SC_OPCODE_ADDRESS
#define HID_FUNC_LOGINV
Definition: helpids.h:384
#define HID_FUNC_IKV
Definition: helpids.h:231
#define HID_FUNC_TINV
Definition: helpids.h:394
#define HID_FUNC_GAMMAINV
Definition: helpids.h:387
const ScFuncDesc * Next()
Definition: funcdesc.cxx:1004
#define HID_FUNC_TDIST_2T
Definition: helpids.h:528
#define HID_FUNC_ROEMISCH
Definition: helpids.h:477
#define SC_OPCODE_IF
#define SC_OPCODE_SQRT
#define HID_FUNC_JIS
Definition: helpids.h:480
#define SC_OPCODE_ASC
#define HID_FUNC_NETWORKDAYS
Definition: helpids.h:550
#define SC_OPCODE_AGGREGATE
#define SC_OPCODE_UNICHAR
#define SC_OPCODE_ERROR_TYPE_ODF
#define SC_OPCODE_UPPER
#define SC_OPCODE_WEIBULL
#define HID_FUNC_CHISQDIST_MS
Definition: helpids.h:507
#define HID_FUNC_SECANTHYP
Definition: helpids.h:303
#define HID_FUNC_UNICODE
Definition: helpids.h:482
#define HID_FUNC_KRITBINOM
Definition: helpids.h:377
sal_uInt16 nFIndex
Unique function index.
Definition: funcdesc.hxx:222
#define HID_FUNC_DDE
Definition: helpids.h:442
#define SC_OPCODE_INFO
#define HID_FUNC_SVERWEIS
Definition: helpids.h:434
#define SC_OPCODE_F_DIST
#define HID_FUNC_MINA
Definition: helpids.h:415
#define SC_OPCODE_ROUND_DOWN
Any value
#define HID_FUNC_RUNDEN
Definition: helpids.h:317
#define HID_FUNC_RIGHTB
Definition: helpids.h:470
#define HID_FUNC_DBSTDABWN
Definition: helpids.h:189
#define SC_OPCODE_CEIL_PRECISE
#define SC_OPCODE_RANK_AVG
sal_uInt32 GetCount() const
Definition: funcdesc.hxx:248
#define SC_OPCODE_LEFTB
#define SC_OPCODE_SHEET
#define SC_OPCODE_MIDB
#define HID_FUNC_ARCOSHYP
Definition: helpids.h:286
#define SC_OPCODE_Z_TEST_MS
#define HID_FUNC_DEG
Definition: helpids.h:305
#define HID_FUNC_WIEDERHOLEN
Definition: helpids.h:473
virtual OUString getDescription() const override
Returns the description of the function.
Definition: funcdesc.cxx:296
#define HID_FUNC_ZW
Definition: helpids.h:215
#define HID_FUNC_KOVAR
Definition: helpids.h:413
#define SC_OPCODE_CHOOSE
#define HID_FUNC_GERADE
Definition: helpids.h:320
#define HID_FUNC_VDB
Definition: helpids.h:227
OString sHelpId
HelpId of function.
Definition: funcdesc.hxx:227
#define SC_OPCODE_GAMMA_INV_MS
#define HID_FUNC_VARIANZ
Definition: helpids.h:348
#define HID_FUNC_ISPMT
Definition: helpids.h:235
#define HID_FUNC_ARABISCH
Definition: helpids.h:478
#define HID_FUNC_ST_DEV_P_MS
Definition: helpids.h:496
#define SC_OPCODE_CONVERT_OOO
#define HID_FUNC_ZEILEN
Definition: helpids.h:432
#define HID_FUNC_VARIANZEN
Definition: helpids.h:349
#define SC_OPCODE_COSECANT
#define HID_FUNC_ABRUNDEN
Definition: helpids.h:319
#define SC_OPCODE_INTERCEPT
#define HID_FUNC_FORECAST_ETS_PIM
Definition: helpids.h:565
#define SC_OPCODE_STD_NORM_DIST_MS
#define SC_OPCODE_CHI_TEST
#define SC_OPCODE_GEO_MEAN
#define SC_OPCODE_SYD
#define SC_OPCODE_ST_DEV_P_MS
#define HID_FUNC_KURT
Definition: helpids.h:357
#define HID_FUNC_CHISQINV_MS
Definition: helpids.h:508
#define SC_OPCODE_VAR_P_A
#define SC_OPCODE_TEXT
#define HID_FUNC_MODALWERT
Definition: helpids.h:360
#define SC_OPCODE_BAHTTEXT
#define SC_OPCODE_POISSON_DIST_MS
#define SC_OPCODE_HAR_MEAN
#define SC_OPCODE_STD_NORM_DIST
#define HID_FUNC_DATUM
Definition: helpids.h:194
#define HID_FUNC_SUMMEXMY2
Definition: helpids.h:337
#define SC_OPCODE_ARABIC
#define HID_FUNC_BAHTTEXT
Definition: helpids.h:479
#define SC_OPCODE_GET_DAY_OF_WEEK
#define SC_OPCODE_SUM_SQ
#define HID_FUNC_CHIVERT
Definition: helpids.h:397
#define SC_OPCODE_ODD
#define SC_OPCODE_NPER
#define SC_OPCODE_IS_ERROR
virtual OUString getFunctionName() const override
Returns the name of the function.
Definition: funcdesc.cxx:283
std::vector< OUString > maDefArgNames
Parameter name(s)
Definition: funcdesc.hxx:219
#define SC_OPCODE_VBD
#define SC_OPCODE_PLUS_MINUS
#define HID_FUNC_BITRSHIFT
Definition: helpids.h:489
#define SC_OPCODE_ISPMT
#define HID_FUNC_WVERWEIS
Definition: helpids.h:433
if(!pCandidateA->getEnd().equal(pCandidateB->getStart()))
#define HID_FUNC_RANK_AVG
Definition: helpids.h:541
#define SC_OPCODE_RIGHTB
#define SC_OPCODE_H_LOOKUP
#define HID_FUNC_POISSON_DIST_MS
Definition: helpids.h:518
#define HID_FUNC_CONFIDENCE_T
Definition: helpids.h:510
#define HID_FUNC_DBPRODUKT
Definition: helpids.h:187
#define SC_OPCODE_KURT
#define SC_OPCODE_RIGHT
#define HID_FUNC_MIN
Definition: helpids.h:347
#define HID_FUNC_TAGE
Definition: helpids.h:208
#define SC_OPCODE_RATE
#define HID_FUNC_ISTZAHL
Definition: helpids.h:245
#define HID_FUNC_CEIL_PRECISE
Definition: helpids.h:547
#define HID_FUNC_TANHYP
Definition: helpids.h:299
#define HID_FUNC_VARIANZA
Definition: helpids.h:420
#define HID_FUNC_FINV
Definition: helpids.h:396
#define HID_FUNC_DBMAX
Definition: helpids.h:185
#define HID_FUNC_LOGNORMVERT
Definition: helpids.h:383
#define SC_OPCODE_TYPE
#define SC_OPCODE_RAWSUBTRACT
#define HID_FUNC_POTENZ
Definition: helpids.h:266
#define HID_FUNC_KONFIDENZ
Definition: helpids.h:402
#define HID_FUNC_COVARIANCE_P
Definition: helpids.h:494
#define HID_FUNC_CHIINV
Definition: helpids.h:398
#define SC_OPCODE_WEEKNUM_OOO
#define HID_FUNC_RANK_EQ
Definition: helpids.h:540
#define HID_FUNC_DBAUSZUG
Definition: helpids.h:184
#define HID_FUNC_LOGNORMDIST_MS
Definition: helpids.h:523
#define SC_OPCODE_FLOOR_MS
#define SC_OPCODE_T_DIST_RT
::std::vector< const ScFuncDesc * >::iterator aFunctionListIter
position in function list
Definition: funcdesc.hxx:259
#define SC_OPCODE_CHI_DIST
#define HID_FUNC_ERROR_TYPE_ODF
Definition: helpids.h:556
#define SC_OPCODE_ISOWEEKNUM
#define HID_FUNC_LIA
Definition: helpids.h:224
#define HID_FUNC_AGGREGATE
Definition: helpids.h:555
#define HID_FUNC_RKP
Definition: helpids.h:340
virtual OUString getParameterName(sal_uInt32 _nPos) const override
Returns name of parameter at given position.
Definition: funcdesc.cxx:378
#define SC_OPCODE_ARC_COS
#define HID_FUNC_WEEKNUM_OOO
Definition: helpids.h:561
#define HID_FUNC_WORKDAY_MS
Definition: helpids.h:552
#define HID_FUNC_NEGBINOMVERT
Definition: helpids.h:376
#define HID_FUNC_DM
Definition: helpids.h:449
bool bIncomplete
Incomplete argument info (set for add-in info from configuration)
Definition: funcdesc.hxx:228
#define HID_FUNC_MODAL_VALUE_MULTI
Definition: helpids.h:543
#define SC_OPCODE_DB_VAR_P
#define HID_FUNC_PERCENTILE_EXC
Definition: helpids.h:534
const OUString & GetModuleName() const
Definition: callform.cxx:338
#define HID_FUNC_CHIINV_MS
Definition: helpids.h:504
#define HID_FUNC_RGP
Definition: helpids.h:339
#define SC_OPCODE_MIRR
Stores and generates human readable descriptions for spreadsheet-functions, e.g. functions used in fo...
Definition: funcdesc.hxx:41
#define HID_FUNC_ISTLOG
Definition: helpids.h:241
#define HID_FUNC_COS
Definition: helpids.h:292
#define SC_OPCODE_FLOOR
#define HID_FUNC_F_TEST_MS
Definition: helpids.h:515
#define SC_OPCODE_CUM_IPMT
#define HID_FUNC_IFERROR
Definition: helpids.h:259
#define SC_OPCODE_FORECAST
#define SC_OPCODE_INDEX
sal_uInt16 nArgCount
All parameter count, suppressed and unsuppressed.
Definition: funcdesc.hxx:224
#define SC_OPCODE_COUNT
#define SC_OPCODE_NORM_INV
std::vector< const ScFuncDesc * >::iterator pCurCatListEnd
end of current category
Definition: funcdesc.hxx:401
#define HID_FUNC_COT
Definition: helpids.h:294
#define HID_FUNC_ARSINHYP
Definition: helpids.h:287
#define SC_OPCODE_ARC_COT_HYP
#define SC_OPCODE_COLUMNS
#define SC_OPCODE_T_INV_MS
ocClose
#define SC_OPCODE_VAR_A
#define HID_FUNC_EXP_DIST_MS
Definition: helpids.h:516
#define SC_OPCODE_ST_DEV_P
#define HID_FUNC_SINHYP
Definition: helpids.h:297
#define HID_FUNC_FISHER
Definition: helpids.h:373
#define HID_FUNC_ANZAHL
Definition: helpids.h:344
#define SC_OPCODE_GET_ACT_DATE
#define HID_FUNC_NUMBERVALUE
Definition: helpids.h:484
#define SC_OPCODE_ROUND
#define HID_FUNC_TAGE360
Definition: helpids.h:197
virtual ~ScFuncDesc()
Definition: funcdesc.cxx:113
::std::vector< const ScFuncDesc * > aFunctionList
List of functions.
Definition: funcdesc.hxx:258
#define HID_FUNC_ISTFEHL
Definition: helpids.h:238
#define HID_FUNC_VORZEICHEN
Definition: helpids.h:313
#define SC_OPCODE_EXP_DIST
#define SC_OPCODE_IS_FORMULA
#define SC_OPCODE_DDB
#define SC_OPCODE_STANDARD
#define ID_FUNCTION_GRP_TABLE
Definition: scfuncs.hxx:30
const ScFuncDesc * First(sal_uInt16 nCategory=0) const
Returns the first function in category nCategory.
Definition: funcdesc.cxx:1108
#define SC_OPCODE_ARC_COS_HYP
#define HID_FUNC_LENB
Definition: helpids.h:469
#define SC_OPCODE_FACT
#define SC_OPCODE_HYPERLINK
#define SC_OPCODE_IFS_MS
#define HID_FUNC_WAHRSCHBEREICH
Definition: helpids.h:369
#define HID_FUNC_FAKULTAET
Definition: helpids.h:311
#define HID_FUNC_FORECAST_LIN
Definition: helpids.h:569
#define SC_OPCODE_NETWORKDAYS_MS
#define SC_OPCODE_LOG_NORM_DIST
#define SC_OPCODE_LEN
#define HID_FUNC_ZUFALLSZAHL
Definition: helpids.h:279