Bump version to 6.0-36
[LibreOffice.git] / scaddins / source / analysis / analysis.hxx
blob22e82cddfe15df83276d0294ab54d88862c5a0c1
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
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/.
9 * This file incorporates work covered by the following license notice:
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 .
20 #ifndef INCLUDED_SCADDINS_SOURCE_ANALYSIS_ANALYSIS_HXX
21 #define INCLUDED_SCADDINS_SOURCE_ANALYSIS_ANALYSIS_HXX
24 #include <com/sun/star/sheet/XAddIn.hpp>
25 #include <com/sun/star/lang/XServiceName.hpp>
26 #include <com/sun/star/lang/XServiceInfo.hpp>
27 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
28 #include <com/sun/star/sheet/addin/XAnalysis.hpp>
29 #include <com/sun/star/sheet/LocalizedName.hpp>
30 #include <com/sun/star/sheet/XCompatibilityNames.hpp>
31 #include <com/sun/star/sheet/NoConvergenceException.hpp>
33 #include <cppuhelper/implbase.hxx>
35 #include "analysisdefs.hxx"
36 #include "analysishelper.hxx"
38 #include <memory>
40 namespace sca { namespace analysis {
41 class ConvertDataList;
42 } }
44 css::uno::Reference< css::uno::XInterface > SAL_CALL AnalysisAddIn_CreateInstance( const css::uno::Reference< css::lang::XMultiServiceFactory >& );
47 class AnalysisAddIn : public cppu::WeakImplHelper<
48 css::sheet::XAddIn,
49 css::sheet::XCompatibilityNames,
50 css::sheet::addin::XAnalysis,
51 css::lang::XServiceName,
52 css::lang::XServiceInfo >
54 private:
55 css::lang::Locale aFuncLoc;
56 css::lang::Locale* pDefLocales;
57 sca::analysis::FuncDataList* pFD;
58 std::unique_ptr<double[]> pFactDoubles;
59 sca::analysis::ConvertDataList* pCDL;
60 std::locale aResLocale;
62 sca::analysis::ScaAnyConverter aAnyConv;
64 /// @throws css::uno::RuntimeException
65 OUString GetFuncDescrStr(const char** pResId, sal_uInt16 nStrIndex);
66 void InitDefLocales();
67 inline const css::lang::Locale& GetLocale( sal_uInt32 nInd );
68 void InitData();
70 /// Converts an Any to sal_Int32 in the range from 0 to 4 (date calculation mode).
71 ///
72 /// @throws css::uno::RuntimeException
73 /// @throws css::lang::IllegalArgumentException
74 sal_Int32 getDateMode(
75 const css::uno::Reference< css::beans::XPropertySet >& xPropSet,
76 const css::uno::Any& rAny );
78 public:
79 explicit AnalysisAddIn(
80 const css::uno::Reference< css::uno::XComponentContext >& xContext );
82 OUString AnalysisResId(const char* pId);
84 virtual ~AnalysisAddIn() override;
86 /// @throws css::uno::RuntimeException
87 /// @throws css::lang::IllegalArgumentException
88 double FactDouble( sal_Int32 nNum );
90 static OUString getImplementationName_Static();
91 static css::uno::Sequence< OUString > getSupportedServiceNames_Static();
93 // XAddIn
94 virtual OUString SAL_CALL getProgrammaticFuntionName( const OUString& aDisplayName ) override;
95 virtual OUString SAL_CALL getDisplayFunctionName( const OUString& aProgrammaticName ) override;
96 virtual OUString SAL_CALL getFunctionDescription( const OUString& aProgrammaticName ) override;
97 virtual OUString SAL_CALL getDisplayArgumentName( const OUString& aProgrammaticFunctionName, sal_Int32 nArgument ) override;
98 virtual OUString SAL_CALL getArgumentDescription( const OUString& aProgrammaticFunctionName, sal_Int32 nArgument ) override;
99 virtual OUString SAL_CALL getProgrammaticCategoryName( const OUString& aProgrammaticFunctionName ) override;
100 virtual OUString SAL_CALL getDisplayCategoryName( const OUString& aProgrammaticFunctionName ) override;
102 // XCompatibilityNames
103 virtual css::uno::Sequence< css::sheet::LocalizedName > SAL_CALL getCompatibilityNames( const OUString& aProgrammaticName ) override;
105 // XLocalizable
106 virtual void SAL_CALL setLocale( const css::lang::Locale& eLocale ) override;
107 virtual css::lang::Locale SAL_CALL getLocale( ) override;
109 // XServiceName
110 virtual OUString SAL_CALL getServiceName( ) override;
112 // XServiceInfo
113 virtual OUString SAL_CALL getImplementationName( ) override;
114 virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
115 virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames( ) override;
117 // methods from own interfaces start here
119 // XAnalysis
120 // virtual double SAL_CALL get_Test( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nMode, double f1, double f2, double f3 ) throw( css::uno::RuntimeException );
122 virtual sal_Int32 SAL_CALL getWorkday( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nStartDate, sal_Int32 nDays, const css::uno::Any& aHDay ) override;
123 virtual double SAL_CALL getYearfrac( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nStartDate, sal_Int32 nEndDate, const css::uno::Any& aMode ) override;
124 virtual sal_Int32 SAL_CALL getEdate( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nStartDate, sal_Int32 nMonths ) override;
125 virtual sal_Int32 SAL_CALL getWeeknum( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nStartDate, sal_Int32 nMode ) override;
126 virtual sal_Int32 SAL_CALL getEomonth( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nStartDate, sal_Int32 nMonths ) override;
127 virtual sal_Int32 SAL_CALL getNetworkdays( const css::uno::Reference< css::beans::XPropertySet >&, sal_Int32 nStartDate, sal_Int32 nEndDate, const css::uno::Any& aHDay ) override;
129 virtual sal_Int32 SAL_CALL getIseven( sal_Int32 nVal ) override;
130 virtual sal_Int32 SAL_CALL getIsodd( sal_Int32 nVal ) override;
132 virtual double SAL_CALL getMultinomial( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const css::uno::Sequence< css::uno::Sequence< sal_Int32 > >& aVLst, const css::uno::Sequence< css::uno::Any >& aOptVLst ) override;
133 virtual double SAL_CALL getSeriessum( double fX, double fN, double fM, const css::uno::Sequence< css::uno::Sequence< double > >& aCoeffList ) override;
134 virtual double SAL_CALL getQuotient( double fNum, double fDenum ) override;
136 virtual double SAL_CALL getMround( double fNum, double fMult ) override;
137 virtual double SAL_CALL getSqrtpi( double fNum ) override;
139 virtual double SAL_CALL getRandbetween( double fMin, double fMax ) override;
141 virtual double SAL_CALL getGcd( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const css::uno::Sequence< css::uno::Sequence< double > >& aVLst, const css::uno::Sequence< css::uno::Any >& aOptVLst ) override;
142 virtual double SAL_CALL getLcm( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const css::uno::Sequence< css::uno::Sequence< double > >& aVLst, const css::uno::Sequence< css::uno::Any >& aOptVLst ) override;
144 virtual double SAL_CALL getBesseli( double fNum, sal_Int32 nOrder ) override;
145 virtual double SAL_CALL getBesselj( double fNum, sal_Int32 nOrder ) override;
146 virtual double SAL_CALL getBesselk( double fNum, sal_Int32 nOrder ) override;
147 virtual double SAL_CALL getBessely( double fNum, sal_Int32 nOrder ) override;
149 virtual OUString SAL_CALL getBin2Oct( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const OUString& aNum, const css::uno::Any& rPlaces ) override;
150 virtual double SAL_CALL getBin2Dec( const OUString& aNum ) override;
151 virtual OUString SAL_CALL getBin2Hex( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const OUString& aNum, const css::uno::Any& rPlaces ) override;
153 virtual OUString SAL_CALL getOct2Bin( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const OUString& aNum, const css::uno::Any& rPlaces ) override;
154 virtual double SAL_CALL getOct2Dec( const OUString& aNum ) override;
155 virtual OUString SAL_CALL getOct2Hex( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const OUString& aNum, const css::uno::Any& rPlaces ) override;
157 virtual OUString SAL_CALL getDec2Bin( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 fNum, const css::uno::Any& rPlaces ) override;
158 virtual OUString SAL_CALL getDec2Oct( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 fNum, const css::uno::Any& rPlaces ) override;
159 virtual OUString SAL_CALL getDec2Hex( const css::uno::Reference< css::beans::XPropertySet >& xOpt, double fNum, const css::uno::Any& rPlaces ) override;
161 virtual OUString SAL_CALL getHex2Bin( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const OUString& aNum, const css::uno::Any& rPlaces ) override;
162 virtual double SAL_CALL getHex2Dec( const OUString& aNum ) override;
163 virtual OUString SAL_CALL getHex2Oct( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const OUString& aNum, const css::uno::Any& rPlaces ) override;
165 virtual sal_Int32 SAL_CALL getDelta( const css::uno::Reference< css::beans::XPropertySet >& xOpt, double fNum1, const css::uno::Any& rNum2 ) override;
167 virtual double SAL_CALL getErf( const css::uno::Reference< css::beans::XPropertySet >& xOpt, double fLowerLimit, const css::uno::Any& rUpperLimit ) override;
168 virtual double SAL_CALL getErfc( double fLowerLimit ) override;
170 virtual sal_Int32 SAL_CALL getGestep( const css::uno::Reference< css::beans::XPropertySet >& xOpt, double fNum, const css::uno::Any& rStep ) override;
172 virtual double SAL_CALL getFactdouble( sal_Int32 nNum ) override;
174 virtual double SAL_CALL getImabs( const OUString& aNum ) override;
175 virtual double SAL_CALL getImaginary( const OUString& aNum ) override;
176 virtual OUString SAL_CALL getImpower( const OUString& aNum, double fPower ) override;
177 virtual double SAL_CALL getImargument( const OUString& aNum ) override;
178 virtual OUString SAL_CALL getImcos( const OUString& aNum ) override;
179 virtual OUString SAL_CALL getImdiv( const OUString& aDivident, const OUString& aDivisor ) override;
180 virtual OUString SAL_CALL getImexp( const OUString& aNum ) override;
181 virtual OUString SAL_CALL getImconjugate( const OUString& aNum ) override;
182 virtual OUString SAL_CALL getImln( const OUString& aNum ) override;
183 virtual OUString SAL_CALL getImlog10( const OUString& aNum ) override;
184 virtual OUString SAL_CALL getImlog2( const OUString& aNum ) override;
185 virtual OUString SAL_CALL getImproduct( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const css::uno::Sequence< css::uno::Sequence< OUString > >& aNum1, const css::uno::Sequence< css::uno::Any >& aNumList ) override;
186 virtual double SAL_CALL getImreal( const OUString& aNum ) override;
187 virtual OUString SAL_CALL getImsin( const OUString& aNum ) override;
188 virtual OUString SAL_CALL getImsub( const OUString& aNum1, const OUString& aNum2 ) override;
189 virtual OUString SAL_CALL getImsum( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const css::uno::Sequence< css::uno::Sequence< OUString > >& aNum1, const css::uno::Sequence< css::uno::Any >& aFollowingPars ) override;
191 virtual OUString SAL_CALL getImsqrt( const OUString& aNum ) override;
192 virtual OUString SAL_CALL getImtan( const OUString& aNum ) override;
193 virtual OUString SAL_CALL getImsec( const OUString& aNum ) override;
194 virtual OUString SAL_CALL getImcsc( const OUString& aNum ) override;
195 virtual OUString SAL_CALL getImcot( const OUString& aNum ) override;
196 virtual OUString SAL_CALL getImsinh( const OUString& aNum ) override;
197 virtual OUString SAL_CALL getImcosh( const OUString& aNum ) override;
198 virtual OUString SAL_CALL getImsech( const OUString& aNum ) override;
199 virtual OUString SAL_CALL getImcsch( const OUString& aNum ) override;
200 virtual OUString SAL_CALL getComplex( double fReal, double fImaginary, const css::uno::Any& rSuffix ) override;
202 virtual double SAL_CALL getConvert( double fVal, const OUString& aFromUnit, const OUString& aToUnit ) override;
204 virtual double SAL_CALL getAmordegrc( const css::uno::Reference< css::beans::XPropertySet >&, double fCost, sal_Int32 nDate, sal_Int32 nFirstPer, double fRestVal, double fPer, double fRate, const css::uno::Any& rOptBase ) override;
205 virtual double SAL_CALL getAmorlinc( const css::uno::Reference< css::beans::XPropertySet >&, double fCost, sal_Int32 nDate, sal_Int32 nFirstPer, double fRestVal, double fPer, double fRate, const css::uno::Any& rOptBase ) override;
206 virtual double SAL_CALL getAccrint( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nIssue, sal_Int32 nFirstInter, sal_Int32 nSettle, double fRate, const css::uno::Any& rVal, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
207 virtual double SAL_CALL getAccrintm( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nIssue, sal_Int32 nSettle, double fRate, const css::uno::Any& rVal, const css::uno::Any& rOptBase ) override;
208 virtual double SAL_CALL getReceived( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fInvest, double fDisc, const css::uno::Any& rOptBase ) override;
209 virtual double SAL_CALL getDisc( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fPrice, double fRedemp, const css::uno::Any& rOptBase ) override;
210 virtual double SAL_CALL getDuration( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fCoup, double fYield, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
211 virtual double SAL_CALL getEffect( double fNominal, sal_Int32 nPeriods ) override;
212 virtual double SAL_CALL getCumprinc( double fRate, sal_Int32 nNumPeriods, double fVal, sal_Int32 nStartPer, sal_Int32 nEndPer, sal_Int32 nPayType ) override;
213 virtual double SAL_CALL getCumipmt( double fRate, sal_Int32 nNumPeriods, double fVal, sal_Int32 nStartPer, sal_Int32 nEndPer, sal_Int32 nPayType ) override;
214 virtual double SAL_CALL getPrice( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fRate, double fYield, double fRedemp, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
215 virtual double SAL_CALL getPricedisc( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fDisc, double fRedemp, const css::uno::Any& rOptBase ) override;
216 virtual double SAL_CALL getPricemat( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nIssue, double fRate, double fYield, const css::uno::Any& rOptBase ) override;
217 virtual double SAL_CALL getMduration( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fCoup, double fYield, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
218 virtual double SAL_CALL getNominal( double fRate, sal_Int32 nPeriods ) override;
219 virtual double SAL_CALL getDollarfr( double fDollarDec, sal_Int32 nFrac ) override;
220 virtual double SAL_CALL getDollarde( double fDollarFrac, sal_Int32 nFrac ) override;
221 virtual double SAL_CALL getYield( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fCoup, double fPrice, double fRedemp, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
222 virtual double SAL_CALL getYielddisc( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fPrice, double fRedemp, const css::uno::Any& rOptBase ) override;
223 virtual double SAL_CALL getYieldmat( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nIssue, double fRate, double fPrice, const css::uno::Any& rOptBase ) override;
224 virtual double SAL_CALL getTbilleq( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fDisc ) override;
225 virtual double SAL_CALL getTbillprice( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fDisc ) override;
226 virtual double SAL_CALL getTbillyield( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fPrice ) override;
227 virtual double SAL_CALL getOddfprice( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nIssue, sal_Int32 nFirstCoup, double fRate, double fYield, double fRedemp, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
228 virtual double SAL_CALL getOddfyield( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nIssue, sal_Int32 nFirstCoup, double fRate, double fPrice, double fRedemp, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
229 virtual double SAL_CALL getOddlprice( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nLastInterest, double fRate, double fYield, double fRedemp, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
230 virtual double SAL_CALL getOddlyield( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nLastInterest, double fRate, double fPrice, double fRedemp, sal_Int32 nFreq, const css::uno::Any& rOptBase) override;
231 virtual double SAL_CALL getXirr( const css::uno::Reference< css::beans::XPropertySet >& xOpt, const css::uno::Sequence< css::uno::Sequence< double > >& rValues, const css::uno::Sequence< css::uno::Sequence< sal_Int32 > >& rDates, const css::uno::Any& rGuess ) override;
232 virtual double SAL_CALL getXnpv( double fRate, const css::uno::Sequence< css::uno::Sequence< double > >& rValues, const css::uno::Sequence< css::uno::Sequence< sal_Int32 > >& rDates ) override;
233 virtual double SAL_CALL getIntrate( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, double fInvest, double fRedemp, const css::uno::Any& rOptBase ) override;
234 virtual double SAL_CALL getCoupncd( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
235 virtual double SAL_CALL getCoupdays( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
236 virtual double SAL_CALL getCoupdaysnc( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
237 virtual double SAL_CALL getCoupdaybs( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
238 virtual double SAL_CALL getCouppcd( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
239 virtual double SAL_CALL getCoupnum( const css::uno::Reference< css::beans::XPropertySet >& xOpt, sal_Int32 nSettle, sal_Int32 nMat, sal_Int32 nFreq, const css::uno::Any& rOptBase ) override;
240 virtual double SAL_CALL getFvschedule( double fPrinc, const css::uno::Sequence< css::uno::Sequence< double > >& rSchedule ) override;
243 #endif
245 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */