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