xref: /aoo4110/main/sc/source/core/tool/addinhelpid.cxx (revision b1cdbd2c)
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