1b3f79822SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3b3f79822SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4b3f79822SAndrew Rist * or more contributor license agreements. See the NOTICE file
5b3f79822SAndrew Rist * distributed with this work for additional information
6b3f79822SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7b3f79822SAndrew Rist * to you under the Apache License, Version 2.0 (the
8b3f79822SAndrew Rist * "License"); you may not use this file except in compliance
9b3f79822SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11b3f79822SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13b3f79822SAndrew Rist * Unless required by applicable law or agreed to in writing,
14b3f79822SAndrew Rist * software distributed under the License is distributed on an
15b3f79822SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16b3f79822SAndrew Rist * KIND, either express or implied. See the License for the
17b3f79822SAndrew Rist * specific language governing permissions and limitations
18b3f79822SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20b3f79822SAndrew Rist *************************************************************/
21b3f79822SAndrew Rist
22b3f79822SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_sc.hxx"
26cdf0e10cSrcweir
27cdf0e10cSrcweir #include "addinhelpid.hxx"
28cdf0e10cSrcweir #include "sc.hrc"
29cdf0e10cSrcweir
30cdf0e10cSrcweir // ============================================================================
31cdf0e10cSrcweir
32cdf0e10cSrcweir // A struct containing the built-in function name and the built-in help ID.
33cdf0e10cSrcweir struct ScUnoAddInHelpId
34cdf0e10cSrcweir {
35cdf0e10cSrcweir const sal_Char* pFuncName;
36cdf0e10cSrcweir const sal_Char* sHelpId;
37cdf0e10cSrcweir };
38cdf0e10cSrcweir
39cdf0e10cSrcweir
40cdf0e10cSrcweir // ----------------------------------------------------------------------------
41cdf0e10cSrcweir
42cdf0e10cSrcweir // Help IDs for Analysis AddIn. MUST BE SORTED for binary search.
43cdf0e10cSrcweir const ScUnoAddInHelpId pAnalysisHelpIds[] =
44cdf0e10cSrcweir {
45cdf0e10cSrcweir { "getAccrint" , HID_AAI_FUNC_ACCRINT },
46cdf0e10cSrcweir { "getAccrintm" , HID_AAI_FUNC_ACCRINTM },
47cdf0e10cSrcweir { "getAmordegrc" , HID_AAI_FUNC_AMORDEGRC },
48cdf0e10cSrcweir { "getAmorlinc" , HID_AAI_FUNC_AMORLINC },
49cdf0e10cSrcweir { "getBesseli" , HID_AAI_FUNC_BESSELI },
50cdf0e10cSrcweir { "getBesselj" , HID_AAI_FUNC_BESSELJ },
51cdf0e10cSrcweir { "getBesselk" , HID_AAI_FUNC_BESSELK },
52cdf0e10cSrcweir { "getBessely" , HID_AAI_FUNC_BESSELY },
53cdf0e10cSrcweir { "getBin2Dec" , HID_AAI_FUNC_BIN2DEC },
54cdf0e10cSrcweir { "getBin2Hex" , HID_AAI_FUNC_BIN2HEX },
55cdf0e10cSrcweir { "getBin2Oct" , HID_AAI_FUNC_BIN2OCT },
56cdf0e10cSrcweir { "getComplex" , HID_AAI_FUNC_COMPLEX },
57cdf0e10cSrcweir { "getConvert" , HID_AAI_FUNC_CONVERT },
58cdf0e10cSrcweir { "getCoupdaybs" , HID_AAI_FUNC_COUPDAYBS },
59cdf0e10cSrcweir { "getCoupdays" , HID_AAI_FUNC_COUPDAYS },
60cdf0e10cSrcweir { "getCoupdaysnc" , HID_AAI_FUNC_COUPDAYSNC },
61cdf0e10cSrcweir { "getCoupncd" , HID_AAI_FUNC_COUPNCD },
62cdf0e10cSrcweir { "getCoupnum" , HID_AAI_FUNC_COUPNUM },
63cdf0e10cSrcweir { "getCouppcd" , HID_AAI_FUNC_COUPPCD },
64cdf0e10cSrcweir { "getCumipmt" , HID_AAI_FUNC_CUMIPMT },
65cdf0e10cSrcweir { "getCumprinc" , HID_AAI_FUNC_CUMPRINC },
66cdf0e10cSrcweir { "getDec2Bin" , HID_AAI_FUNC_DEC2BIN },
67cdf0e10cSrcweir { "getDec2Hex" , HID_AAI_FUNC_DEC2HEX },
68cdf0e10cSrcweir { "getDec2Oct" , HID_AAI_FUNC_DEC2OCT },
69cdf0e10cSrcweir { "getDelta" , HID_AAI_FUNC_DELTA },
70cdf0e10cSrcweir { "getDisc" , HID_AAI_FUNC_DISC },
71cdf0e10cSrcweir { "getDollarde" , HID_AAI_FUNC_DOLLARDE },
72cdf0e10cSrcweir { "getDollarfr" , HID_AAI_FUNC_DOLLARFR },
73cdf0e10cSrcweir { "getDuration" , HID_AAI_FUNC_DURATION },
74cdf0e10cSrcweir { "getEdate" , HID_AAI_FUNC_EDATE },
75cdf0e10cSrcweir { "getEffect" , HID_AAI_FUNC_EFFECT },
76cdf0e10cSrcweir { "getEomonth" , HID_AAI_FUNC_EOMONTH },
77cdf0e10cSrcweir { "getErf" , HID_AAI_FUNC_ERF },
78cdf0e10cSrcweir { "getErfc" , HID_AAI_FUNC_ERFC },
79cdf0e10cSrcweir { "getFactdouble" , HID_AAI_FUNC_FACTDOUBLE },
80cdf0e10cSrcweir { "getFvschedule" , HID_AAI_FUNC_FVSCHEDULE },
81cdf0e10cSrcweir { "getGcd" , HID_AAI_FUNC_GCD },
82cdf0e10cSrcweir { "getGestep" , HID_AAI_FUNC_GESTEP },
83cdf0e10cSrcweir { "getHex2Bin" , HID_AAI_FUNC_HEX2BIN },
84cdf0e10cSrcweir { "getHex2Dec" , HID_AAI_FUNC_HEX2DEC },
85cdf0e10cSrcweir { "getHex2Oct" , HID_AAI_FUNC_HEX2OCT },
86cdf0e10cSrcweir { "getImabs" , HID_AAI_FUNC_IMABS },
87cdf0e10cSrcweir { "getImaginary" , HID_AAI_FUNC_IMAGINARY },
88cdf0e10cSrcweir { "getImargument" , HID_AAI_FUNC_IMARGUMENT },
89cdf0e10cSrcweir { "getImconjugate" , HID_AAI_FUNC_IMCONJUGATE },
90cdf0e10cSrcweir { "getImcos" , HID_AAI_FUNC_IMCOS },
91*feb8f109SRegina Henschel { "getImcosh" , HID_AAI_FUNC_IMCOSH },
92*feb8f109SRegina Henschel { "getImcot" , HID_AAI_FUNC_IMCOT },
93*feb8f109SRegina Henschel { "getImcsc" , HID_AAI_FUNC_IMCSC },
94*feb8f109SRegina Henschel { "getImcsch" , HID_AAI_FUNC_IMCSCH },
95cdf0e10cSrcweir { "getImdiv" , HID_AAI_FUNC_IMDIV },
96cdf0e10cSrcweir { "getImexp" , HID_AAI_FUNC_IMEXP },
97cdf0e10cSrcweir { "getImln" , HID_AAI_FUNC_IMLN },
98cdf0e10cSrcweir { "getImlog10" , HID_AAI_FUNC_IMLOG10 },
99cdf0e10cSrcweir { "getImlog2" , HID_AAI_FUNC_IMLOG2 },
100cdf0e10cSrcweir { "getImpower" , HID_AAI_FUNC_IMPOWER },
101cdf0e10cSrcweir { "getImproduct" , HID_AAI_FUNC_IMPRODUCT },
102cdf0e10cSrcweir { "getImreal" , HID_AAI_FUNC_IMREAL },
103*feb8f109SRegina Henschel { "getImsec" , HID_AAI_FUNC_IMSEC },
104*feb8f109SRegina Henschel { "getImsech" , HID_AAI_FUNC_IMSECH },
105cdf0e10cSrcweir { "getImsin" , HID_AAI_FUNC_IMSIN },
106*feb8f109SRegina Henschel { "getImsinh" , HID_AAI_FUNC_IMSINH },
107cdf0e10cSrcweir { "getImsqrt" , HID_AAI_FUNC_IMSQRT },
108cdf0e10cSrcweir { "getImsub" , HID_AAI_FUNC_IMSUB },
109cdf0e10cSrcweir { "getImsum" , HID_AAI_FUNC_IMSUM },
110*feb8f109SRegina Henschel { "getImtan" , HID_AAI_FUNC_IMTAN },
111cdf0e10cSrcweir { "getIntrate" , HID_AAI_FUNC_INTRATE },
112cdf0e10cSrcweir { "getIseven" , HID_AAI_FUNC_ISEVEN },
113cdf0e10cSrcweir { "getIsodd" , HID_AAI_FUNC_ISODD },
114cdf0e10cSrcweir { "getLcm" , HID_AAI_FUNC_LCM },
115cdf0e10cSrcweir { "getMduration" , HID_AAI_FUNC_MDURATION },
116cdf0e10cSrcweir { "getMround" , HID_AAI_FUNC_MROUND },
117cdf0e10cSrcweir { "getMultinomial" , HID_AAI_FUNC_MULTINOMIAL },
118cdf0e10cSrcweir { "getNetworkdays" , HID_AAI_FUNC_NETWORKDAYS },
119cdf0e10cSrcweir { "getNominal" , HID_AAI_FUNC_NOMINAL },
120cdf0e10cSrcweir { "getOct2Bin" , HID_AAI_FUNC_OCT2BIN },
121cdf0e10cSrcweir { "getOct2Dec" , HID_AAI_FUNC_OCT2DEZ },
122cdf0e10cSrcweir { "getOct2Hex" , HID_AAI_FUNC_OCT2HEX },
123cdf0e10cSrcweir { "getOddfprice" , HID_AAI_FUNC_ODDFPRICE },
124cdf0e10cSrcweir { "getOddfyield" , HID_AAI_FUNC_ODDFYIELD },
125cdf0e10cSrcweir { "getOddlprice" , HID_AAI_FUNC_ODDLPRICE },
126cdf0e10cSrcweir { "getOddlyield" , HID_AAI_FUNC_ODDLYIELD },
127cdf0e10cSrcweir { "getPrice" , HID_AAI_FUNC_PRICE },
128cdf0e10cSrcweir { "getPricedisc" , HID_AAI_FUNC_PRICEDISC },
129cdf0e10cSrcweir { "getPricemat" , HID_AAI_FUNC_PRICEMAT },
130cdf0e10cSrcweir { "getQuotient" , HID_AAI_FUNC_QUOTIENT },
131cdf0e10cSrcweir { "getRandbetween" , HID_AAI_FUNC_RANDBETWEEN },
132cdf0e10cSrcweir { "getReceived" , HID_AAI_FUNC_RECEIVED },
133cdf0e10cSrcweir { "getSeriessum" , HID_AAI_FUNC_SERIESSUM },
134cdf0e10cSrcweir { "getSqrtpi" , HID_AAI_FUNC_SQRTPI },
135cdf0e10cSrcweir { "getTbilleq" , HID_AAI_FUNC_TBILLEQ },
136cdf0e10cSrcweir { "getTbillprice" , HID_AAI_FUNC_TBILLPRICE },
137cdf0e10cSrcweir { "getTbillyield" , HID_AAI_FUNC_TBILLYIELD },
138cdf0e10cSrcweir { "getWeeknum" , HID_AAI_FUNC_WEEKNUM },
139cdf0e10cSrcweir { "getWorkday" , HID_AAI_FUNC_WORKDAY },
140cdf0e10cSrcweir { "getXirr" , HID_AAI_FUNC_XIRR },
141cdf0e10cSrcweir { "getXnpv" , HID_AAI_FUNC_XNPV },
142cdf0e10cSrcweir { "getYearfrac" , HID_AAI_FUNC_YEARFRAC },
143cdf0e10cSrcweir { "getYield" , HID_AAI_FUNC_YIELD },
144cdf0e10cSrcweir { "getYielddisc" , HID_AAI_FUNC_YIELDDISC },
145cdf0e10cSrcweir { "getYieldmat" , HID_AAI_FUNC_YIELDMAT }
146cdf0e10cSrcweir };
147cdf0e10cSrcweir
148cdf0e10cSrcweir
149cdf0e10cSrcweir // ----------------------------------------------------------------------------
150cdf0e10cSrcweir
151cdf0e10cSrcweir // Help IDs for DateFunc AddIn. MUST BE SORTED for binary search.
152cdf0e10cSrcweir const ScUnoAddInHelpId pDateFuncHelpIds[] =
153cdf0e10cSrcweir {
154cdf0e10cSrcweir { "getDaysInMonth" , HID_DAI_FUNC_DAYSINMONTH },
155cdf0e10cSrcweir { "getDaysInYear" , HID_DAI_FUNC_DAYSINYEAR },
156cdf0e10cSrcweir { "getDiffMonths" , HID_DAI_FUNC_DIFFMONTHS },
157cdf0e10cSrcweir { "getDiffWeeks" , HID_DAI_FUNC_DIFFWEEKS },
158cdf0e10cSrcweir { "getDiffYears" , HID_DAI_FUNC_DIFFYEARS },
159cdf0e10cSrcweir { "getRot13" , HID_DAI_FUNC_ROT13 },
160cdf0e10cSrcweir { "getWeeksInYear" , HID_DAI_FUNC_WEEKSINYEAR }
161cdf0e10cSrcweir };
162cdf0e10cSrcweir
163cdf0e10cSrcweir
164cdf0e10cSrcweir // ============================================================================
165cdf0e10cSrcweir
166cdf0e10cSrcweir //UNUSED2008-05 ScUnoAddInHelpIdGenerator::ScUnoAddInHelpIdGenerator() :
167cdf0e10cSrcweir //UNUSED2008-05 pCurrHelpIds( NULL ),
168cdf0e10cSrcweir //UNUSED2008-05 nArrayCount( 0 )
169cdf0e10cSrcweir //UNUSED2008-05 {
170cdf0e10cSrcweir //UNUSED2008-05 }
171cdf0e10cSrcweir
ScUnoAddInHelpIdGenerator(const::rtl::OUString & rServiceName)172cdf0e10cSrcweir ScUnoAddInHelpIdGenerator::ScUnoAddInHelpIdGenerator( const ::rtl::OUString& rServiceName )
173cdf0e10cSrcweir {
174cdf0e10cSrcweir SetServiceName( rServiceName );
175cdf0e10cSrcweir }
176cdf0e10cSrcweir
SetServiceName(const::rtl::OUString & rServiceName)177cdf0e10cSrcweir void ScUnoAddInHelpIdGenerator::SetServiceName( const ::rtl::OUString& rServiceName )
178cdf0e10cSrcweir {
179cdf0e10cSrcweir pCurrHelpIds = NULL;
180cdf0e10cSrcweir sal_uInt32 nSize = 0;
181cdf0e10cSrcweir
182cdf0e10cSrcweir if( rServiceName.equalsAscii( "com.sun.star.sheet.addin.Analysis" ) )
183cdf0e10cSrcweir {
184cdf0e10cSrcweir pCurrHelpIds = pAnalysisHelpIds;
185cdf0e10cSrcweir nSize = sizeof( pAnalysisHelpIds );
186cdf0e10cSrcweir }
187cdf0e10cSrcweir else if( rServiceName.equalsAscii( "com.sun.star.sheet.addin.DateFunctions" ) )
188cdf0e10cSrcweir {
189cdf0e10cSrcweir pCurrHelpIds = pDateFuncHelpIds;
190cdf0e10cSrcweir nSize = sizeof( pDateFuncHelpIds );
191cdf0e10cSrcweir }
192cdf0e10cSrcweir
193cdf0e10cSrcweir nArrayCount = nSize / sizeof( ScUnoAddInHelpId );
194cdf0e10cSrcweir }
195cdf0e10cSrcweir
GetHelpId(const::rtl::OUString & rFuncName) const196cdf0e10cSrcweir rtl::OString ScUnoAddInHelpIdGenerator::GetHelpId( const ::rtl::OUString& rFuncName ) const
197cdf0e10cSrcweir {
198cdf0e10cSrcweir if( !pCurrHelpIds || !nArrayCount )
199cdf0e10cSrcweir return rtl::OString();
200cdf0e10cSrcweir
201cdf0e10cSrcweir const ScUnoAddInHelpId* pFirst = pCurrHelpIds;
202cdf0e10cSrcweir const ScUnoAddInHelpId* pLast = pCurrHelpIds + nArrayCount - 1;
203cdf0e10cSrcweir
204cdf0e10cSrcweir while( pFirst <= pLast )
205cdf0e10cSrcweir {
206cdf0e10cSrcweir const ScUnoAddInHelpId* pMiddle = pFirst + (pLast - pFirst) / 2;
207cdf0e10cSrcweir sal_Int32 nResult = rFuncName.compareToAscii( pMiddle->pFuncName );
208cdf0e10cSrcweir if( !nResult )
209cdf0e10cSrcweir return pMiddle->sHelpId;
210cdf0e10cSrcweir else if( nResult < 0 )
211cdf0e10cSrcweir pLast = pMiddle - 1;
212cdf0e10cSrcweir else
213cdf0e10cSrcweir pFirst = pMiddle + 1;
214cdf0e10cSrcweir }
215cdf0e10cSrcweir
216cdf0e10cSrcweir return rtl::OString();
217cdf0e10cSrcweir }
218cdf0e10cSrcweir
219cdf0e10cSrcweir
220cdf0e10cSrcweir // ============================================================================
221