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