Branch data Line data Source code
1 : : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : : /*************************************************************************
3 : : *
4 : : * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 : : *
6 : : * Copyright 2000, 2010 Oracle and/or its affiliates.
7 : : *
8 : : * OpenOffice.org - a multi-platform office productivity suite
9 : : *
10 : : * This file is part of OpenOffice.org.
11 : : *
12 : : * OpenOffice.org is free software: you can redistribute it and/or modify
13 : : * it under the terms of the GNU Lesser General Public License version 3
14 : : * only, as published by the Free Software Foundation.
15 : : *
16 : : * OpenOffice.org is distributed in the hope that it will be useful,
17 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 : : * GNU Lesser General Public License version 3 for more details
20 : : * (a copy is included in the LICENSE file that accompanied this code).
21 : : *
22 : : * You should have received a copy of the GNU Lesser General Public License
23 : : * version 3 along with OpenOffice.org. If not, see
24 : : * <http://www.openoffice.org/license.html>
25 : : * for a copy of the LGPLv3 License.
26 : : *
27 : : ************************************************************************/
28 : :
29 : :
30 : : #include "addinhelpid.hxx"
31 : : #include "sc.hrc"
32 : :
33 : : // ============================================================================
34 : :
35 : : // A struct containing the built-in function name and the built-in help ID.
36 : : struct ScUnoAddInHelpId
37 : : {
38 : : const sal_Char* pFuncName;
39 : : const sal_Char* sHelpId;
40 : : };
41 : :
42 : :
43 : : // ----------------------------------------------------------------------------
44 : :
45 : : // Help IDs for Analysis AddIn. MUST BE SORTED for binary search.
46 : : const ScUnoAddInHelpId pAnalysisHelpIds[] =
47 : : {
48 : : { "getAccrint" , HID_AAI_FUNC_ACCRINT },
49 : : { "getAccrintm" , HID_AAI_FUNC_ACCRINTM },
50 : : { "getAmordegrc" , HID_AAI_FUNC_AMORDEGRC },
51 : : { "getAmorlinc" , HID_AAI_FUNC_AMORLINC },
52 : : { "getBesseli" , HID_AAI_FUNC_BESSELI },
53 : : { "getBesselj" , HID_AAI_FUNC_BESSELJ },
54 : : { "getBesselk" , HID_AAI_FUNC_BESSELK },
55 : : { "getBessely" , HID_AAI_FUNC_BESSELY },
56 : : { "getBin2Dec" , HID_AAI_FUNC_BIN2DEC },
57 : : { "getBin2Hex" , HID_AAI_FUNC_BIN2HEX },
58 : : { "getBin2Oct" , HID_AAI_FUNC_BIN2OCT },
59 : : { "getComplex" , HID_AAI_FUNC_COMPLEX },
60 : : { "getConvert" , HID_AAI_FUNC_CONVERT },
61 : : { "getCoupdaybs" , HID_AAI_FUNC_COUPDAYBS },
62 : : { "getCoupdays" , HID_AAI_FUNC_COUPDAYS },
63 : : { "getCoupdaysnc" , HID_AAI_FUNC_COUPDAYSNC },
64 : : { "getCoupncd" , HID_AAI_FUNC_COUPNCD },
65 : : { "getCoupnum" , HID_AAI_FUNC_COUPNUM },
66 : : { "getCouppcd" , HID_AAI_FUNC_COUPPCD },
67 : : { "getCumipmt" , HID_AAI_FUNC_CUMIPMT },
68 : : { "getCumprinc" , HID_AAI_FUNC_CUMPRINC },
69 : : { "getDec2Bin" , HID_AAI_FUNC_DEC2BIN },
70 : : { "getDec2Hex" , HID_AAI_FUNC_DEC2HEX },
71 : : { "getDec2Oct" , HID_AAI_FUNC_DEC2OCT },
72 : : { "getDelta" , HID_AAI_FUNC_DELTA },
73 : : { "getDisc" , HID_AAI_FUNC_DISC },
74 : : { "getDollarde" , HID_AAI_FUNC_DOLLARDE },
75 : : { "getDollarfr" , HID_AAI_FUNC_DOLLARFR },
76 : : { "getDuration" , HID_AAI_FUNC_DURATION },
77 : : { "getEdate" , HID_AAI_FUNC_EDATE },
78 : : { "getEffect" , HID_AAI_FUNC_EFFECT },
79 : : { "getEomonth" , HID_AAI_FUNC_EOMONTH },
80 : : { "getErf" , HID_AAI_FUNC_ERF },
81 : : { "getErfc" , HID_AAI_FUNC_ERFC },
82 : : { "getFactdouble" , HID_AAI_FUNC_FACTDOUBLE },
83 : : { "getFvschedule" , HID_AAI_FUNC_FVSCHEDULE },
84 : : { "getGcd" , HID_AAI_FUNC_GCD },
85 : : { "getGestep" , HID_AAI_FUNC_GESTEP },
86 : : { "getHex2Bin" , HID_AAI_FUNC_HEX2BIN },
87 : : { "getHex2Dec" , HID_AAI_FUNC_HEX2DEC },
88 : : { "getHex2Oct" , HID_AAI_FUNC_HEX2OCT },
89 : : { "getImabs" , HID_AAI_FUNC_IMABS },
90 : : { "getImaginary" , HID_AAI_FUNC_IMAGINARY },
91 : : { "getImargument" , HID_AAI_FUNC_IMARGUMENT },
92 : : { "getImconjugate" , HID_AAI_FUNC_IMCONJUGATE },
93 : : { "getImcos" , HID_AAI_FUNC_IMCOS },
94 : : { "getImcosh" , HID_AAI_FUNC_IMCOSH },
95 : : { "getImcot" , HID_AAI_FUNC_IMCOT },
96 : : { "getImcsc" , HID_AAI_FUNC_IMCSC },
97 : : { "getImcsch" , HID_AAI_FUNC_IMCSCH },
98 : : { "getImdiv" , HID_AAI_FUNC_IMDIV },
99 : : { "getImexp" , HID_AAI_FUNC_IMEXP },
100 : : { "getImln" , HID_AAI_FUNC_IMLN },
101 : : { "getImlog10" , HID_AAI_FUNC_IMLOG10 },
102 : : { "getImlog2" , HID_AAI_FUNC_IMLOG2 },
103 : : { "getImpower" , HID_AAI_FUNC_IMPOWER },
104 : : { "getImproduct" , HID_AAI_FUNC_IMPRODUCT },
105 : : { "getImreal" , HID_AAI_FUNC_IMREAL },
106 : : { "getImsec" , HID_AAI_FUNC_IMSEC },
107 : : { "getImsech" , HID_AAI_FUNC_IMSECH },
108 : : { "getImsin" , HID_AAI_FUNC_IMSIN },
109 : : { "getImsinh" , HID_AAI_FUNC_IMSINH },
110 : : { "getImsqrt" , HID_AAI_FUNC_IMSQRT },
111 : : { "getImsub" , HID_AAI_FUNC_IMSUB },
112 : : { "getImsum" , HID_AAI_FUNC_IMSUM },
113 : : { "getImtan" , HID_AAI_FUNC_IMTAN },
114 : : { "getIntrate" , HID_AAI_FUNC_INTRATE },
115 : : { "getIseven" , HID_AAI_FUNC_ISEVEN },
116 : : { "getIsodd" , HID_AAI_FUNC_ISODD },
117 : : { "getLcm" , HID_AAI_FUNC_LCM },
118 : : { "getMduration" , HID_AAI_FUNC_MDURATION },
119 : : { "getMround" , HID_AAI_FUNC_MROUND },
120 : : { "getMultinomial" , HID_AAI_FUNC_MULTINOMIAL },
121 : : { "getNetworkdays" , HID_AAI_FUNC_NETWORKDAYS },
122 : : { "getNominal" , HID_AAI_FUNC_NOMINAL },
123 : : { "getOct2Bin" , HID_AAI_FUNC_OCT2BIN },
124 : : { "getOct2Dec" , HID_AAI_FUNC_OCT2DEZ },
125 : : { "getOct2Hex" , HID_AAI_FUNC_OCT2HEX },
126 : : { "getOddfprice" , HID_AAI_FUNC_ODDFPRICE },
127 : : { "getOddfyield" , HID_AAI_FUNC_ODDFYIELD },
128 : : { "getOddlprice" , HID_AAI_FUNC_ODDLPRICE },
129 : : { "getOddlyield" , HID_AAI_FUNC_ODDLYIELD },
130 : : { "getPrice" , HID_AAI_FUNC_PRICE },
131 : : { "getPricedisc" , HID_AAI_FUNC_PRICEDISC },
132 : : { "getPricemat" , HID_AAI_FUNC_PRICEMAT },
133 : : { "getQuotient" , HID_AAI_FUNC_QUOTIENT },
134 : : { "getRandbetween" , HID_AAI_FUNC_RANDBETWEEN },
135 : : { "getReceived" , HID_AAI_FUNC_RECEIVED },
136 : : { "getSeriessum" , HID_AAI_FUNC_SERIESSUM },
137 : : { "getSqrtpi" , HID_AAI_FUNC_SQRTPI },
138 : : { "getTbilleq" , HID_AAI_FUNC_TBILLEQ },
139 : : { "getTbillprice" , HID_AAI_FUNC_TBILLPRICE },
140 : : { "getTbillyield" , HID_AAI_FUNC_TBILLYIELD },
141 : : { "getWeeknum" , HID_AAI_FUNC_WEEKNUM },
142 : : { "getWorkday" , HID_AAI_FUNC_WORKDAY },
143 : : { "getXirr" , HID_AAI_FUNC_XIRR },
144 : : { "getXnpv" , HID_AAI_FUNC_XNPV },
145 : : { "getYearfrac" , HID_AAI_FUNC_YEARFRAC },
146 : : { "getYield" , HID_AAI_FUNC_YIELD },
147 : : { "getYielddisc" , HID_AAI_FUNC_YIELDDISC },
148 : : { "getYieldmat" , HID_AAI_FUNC_YIELDMAT }
149 : : };
150 : :
151 : :
152 : : // ----------------------------------------------------------------------------
153 : :
154 : : // Help IDs for DateFunc AddIn. MUST BE SORTED for binary search.
155 : : const ScUnoAddInHelpId pDateFuncHelpIds[] =
156 : : {
157 : : { "getDaysInMonth" , HID_DAI_FUNC_DAYSINMONTH },
158 : : { "getDaysInYear" , HID_DAI_FUNC_DAYSINYEAR },
159 : : { "getDiffMonths" , HID_DAI_FUNC_DIFFMONTHS },
160 : : { "getDiffWeeks" , HID_DAI_FUNC_DIFFWEEKS },
161 : : { "getDiffYears" , HID_DAI_FUNC_DIFFYEARS },
162 : : { "getRot13" , HID_DAI_FUNC_ROT13 },
163 : : { "getWeeksInYear" , HID_DAI_FUNC_WEEKSINYEAR }
164 : : };
165 : :
166 : :
167 : : // ============================================================================
168 : :
169 : :
170 : 34 : ScUnoAddInHelpIdGenerator::ScUnoAddInHelpIdGenerator( const ::rtl::OUString& rServiceName )
171 : : {
172 : 34 : SetServiceName( rServiceName );
173 : 34 : }
174 : :
175 : 34 : void ScUnoAddInHelpIdGenerator::SetServiceName( const ::rtl::OUString& rServiceName )
176 : : {
177 : 34 : pCurrHelpIds = NULL;
178 : 34 : sal_uInt32 nSize = 0;
179 : :
180 [ + + ]: 34 : if ( rServiceName == "com.sun.star.sheet.addin.Analysis" )
181 : : {
182 : 17 : pCurrHelpIds = pAnalysisHelpIds;
183 : 17 : nSize = sizeof( pAnalysisHelpIds );
184 : : }
185 [ + - ]: 17 : else if ( rServiceName == "com.sun.star.sheet.addin.DateFunctions" )
186 : : {
187 : 17 : pCurrHelpIds = pDateFuncHelpIds;
188 : 17 : nSize = sizeof( pDateFuncHelpIds );
189 : : }
190 : :
191 : 34 : nArrayCount = nSize / sizeof( ScUnoAddInHelpId );
192 : 34 : }
193 : :
194 : 1853 : rtl::OString ScUnoAddInHelpIdGenerator::GetHelpId( const ::rtl::OUString& rFuncName ) const
195 : : {
196 [ + - ][ - + ]: 1853 : if( !pCurrHelpIds || !nArrayCount )
197 : 0 : return rtl::OString();
198 : :
199 : 1853 : const ScUnoAddInHelpId* pFirst = pCurrHelpIds;
200 : 1853 : const ScUnoAddInHelpId* pLast = pCurrHelpIds + nArrayCount - 1;
201 : :
202 [ + + ]: 10336 : while( pFirst <= pLast )
203 : : {
204 : 10319 : const ScUnoAddInHelpId* pMiddle = pFirst + (pLast - pFirst) / 2;
205 : 10319 : sal_Int32 nResult = rFuncName.compareToAscii( pMiddle->pFuncName );
206 [ + + ]: 10319 : if( !nResult )
207 : 1836 : return pMiddle->sHelpId;
208 [ + + ]: 8483 : else if( nResult < 0 )
209 : 3876 : pLast = pMiddle - 1;
210 : : else
211 : 4607 : pFirst = pMiddle + 1;
212 : : }
213 : :
214 : 1853 : return rtl::OString();
215 : : }
216 : :
217 : :
218 : : // ============================================================================
219 : :
220 : : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|