33 class OEmptyFunctionDescription :
public IFunctionDescription
36 OEmptyFunctionDescription(){}
37 virtual ~OEmptyFunctionDescription(){}
39 virtual OUString getFunctionName()
const override {
return OUString(); }
40 virtual const IFunctionCategory* getCategory()
const override {
return nullptr; }
41 virtual OUString getDescription()
const override {
return OUString(); }
42 virtual sal_Int32 getSuppressedArgumentCount()
const override {
return 0; }
43 virtual OUString getFormula(const ::std::vector< OUString >& )
const override {
return OUString(); }
44 virtual void fillVisibleArgumentMapping(::std::vector<sal_uInt16>& )
const override {}
45 virtual void initArgumentInfo()
const override {}
46 virtual OUString getSignature()
const override {
return OUString(); }
47 virtual OUString getHelpId()
const override {
return ""; }
48 virtual bool isHidden()
const override {
return false; }
49 virtual sal_uInt32 getParameterCount()
const override {
return 0; }
50 virtual sal_uInt32 getVarArgsStart()
const override {
return 0; }
51 virtual sal_uInt32 getVarArgsLimit()
const override {
return 0; }
52 virtual OUString getParameterName(sal_uInt32 )
const override {
return OUString(); }
53 virtual OUString getParameterDescription(sal_uInt32 )
const override {
return OUString(); }
54 virtual bool isParameterOptional(sal_uInt32 )
const override {
return false; }
61#define FUNC_NOTFOUND -1
64 :m_rCharClass(m_aSysLocale.GetCharClass())
65 ,m_pFunctionManager(_pFunctionManager)
70 ,arrayClose(_pFunctionManager->getSingleToken(
IFunctionManager::eArrayClose))
84 ::std::vector< OUString>* pArgs )
const
86 sal_Int32 nOldStart = rFStart;
89 rFStart = GetFunctionStart( rFormula, rFStart, bBack, ppFDesc ? &aFname :
nullptr );
95 *pFEnd = GetFunctionEnd( rFormula, rFStart );
100 const sal_uInt32 nCategoryCount = m_pFunctionManager->getCount();
101 for(sal_uInt32 j= 0; j < nCategoryCount && !*ppFDesc; ++j)
115 if ( *ppFDesc && pArgs )
117 GetArgStrings( *pArgs,rFormula, rFStart,
static_cast<sal_uInt16
>((*ppFDesc)->getParameterCount() ));
121 static OEmptyFunctionDescription s_aFunctionDescription;
122 *ppFDesc = &s_aFunctionDescription;
136 ::std::vector< OUString >& _rArgs )
const
138 sal_Int32 nStart = 0;
143 for (
i=0;
i<nArgs && !bLast;
i++ )
151 if ( nEnd != nStart )
152 _rArgs.push_back(OUString(rFormula.substr( nStart, nEnd-1-nStart )));
155 _rArgs.emplace_back();
163 _rArgs.push_back( OUString(rFormula.substr( nStart, nEnd-nStart )) );
165 _rArgs.emplace_back();
170 for ( ;
i<nArgs;
i++ )
171 _rArgs.emplace_back();
176 std::u16string_view rFormula,
178 sal_uInt16 nArgs )
const
195 return c ==
'.' || c ==
'_';
203 OUString* pFuncName )
const
205 sal_Int32 nStrLen = rFormula.getLength();
207 if ( nStrLen < nStart )
211 sal_Int32 nParPos = bBack ? ::std::min( nStart, nStrLen - 1) : nStart;
221 while ( !bFound && (nParPos > 0) )
223 if ( rFormula[nParPos] ==
'"' )
226 while ( (nParPos > 0) && rFormula[nParPos] !=
'"' )
233 bFound = rFormula[nParPos] ==
'(';
241 while ( !bFound && (0 <= nParPos && nParPos < nStrLen) )
243 if ( rFormula[nParPos] ==
'"' )
246 while ( (nParPos < nStrLen) && rFormula[nParPos] !=
'"' )
252 bFound = rFormula[nParPos] ==
'(';
259 if ( bFound && (nParPos > 0) )
275 *pFuncName = rFormula.copy( nFStart, nParPos-nFStart );
282 else if (nParPos > 0)
303 sal_Int32 nStrLen = rStr.size();
305 if ( nStrLen < nStart )
309 bool bInArray =
false;
312 while ( !bFound && (nStart < nStrLen) )
319 while ( (nStart < nStrLen) && rStr[nStart] !=
'"' )
322 else if ( c ==
open )
324 else if ( c ==
close )
327 if ( nParCount == 0 )
329 else if ( nParCount < 0 )
345 if ( !bInArray && nParCount == 0 )
356 return std::min(nStart, nStrLen);
362 sal_Int32 nStrLen = rStr.size();
364 if ( nStrLen < nStart )
368 bool bInArray =
false;
371 while ( !bFound && (nStart < nStrLen) )
378 while ( (nStart < nStrLen) && rStr[nStart] !=
'"' )
381 else if ( c ==
open )
383 bFound = ( nArg == 0 );
386 else if ( c ==
close )
389 bFound = ( nParCount == 0 );
401 if ( !bInArray && nParCount == 1 )
404 bFound = ( nArg == 0 );
bool isLetterNumeric(const OUString &rStr, sal_Int32 nPos) const