blob: cd8211baefabf855fedea19ce9490f89fc32db56 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_sc.hxx"
#include "addinhelpid.hxx"
#include "sc.hrc"
// ============================================================================
// A struct containing the built-in function name and the built-in help ID.
struct ScUnoAddInHelpId
{
const sal_Char* pFuncName;
const sal_Char* sHelpId;
};
// ----------------------------------------------------------------------------
// Help IDs for Analysis AddIn. MUST BE SORTED for binary search.
const ScUnoAddInHelpId pAnalysisHelpIds[] =
{
{ "getAccrint" , HID_AAI_FUNC_ACCRINT },
{ "getAccrintm" , HID_AAI_FUNC_ACCRINTM },
{ "getAmordegrc" , HID_AAI_FUNC_AMORDEGRC },
{ "getAmorlinc" , HID_AAI_FUNC_AMORLINC },
{ "getBesseli" , HID_AAI_FUNC_BESSELI },
{ "getBesselj" , HID_AAI_FUNC_BESSELJ },
{ "getBesselk" , HID_AAI_FUNC_BESSELK },
{ "getBessely" , HID_AAI_FUNC_BESSELY },
{ "getBin2Dec" , HID_AAI_FUNC_BIN2DEC },
{ "getBin2Hex" , HID_AAI_FUNC_BIN2HEX },
{ "getBin2Oct" , HID_AAI_FUNC_BIN2OCT },
{ "getComplex" , HID_AAI_FUNC_COMPLEX },
{ "getConvert" , HID_AAI_FUNC_CONVERT },
{ "getCoupdaybs" , HID_AAI_FUNC_COUPDAYBS },
{ "getCoupdays" , HID_AAI_FUNC_COUPDAYS },
{ "getCoupdaysnc" , HID_AAI_FUNC_COUPDAYSNC },
{ "getCoupncd" , HID_AAI_FUNC_COUPNCD },
{ "getCoupnum" , HID_AAI_FUNC_COUPNUM },
{ "getCouppcd" , HID_AAI_FUNC_COUPPCD },
{ "getCumipmt" , HID_AAI_FUNC_CUMIPMT },
{ "getCumprinc" , HID_AAI_FUNC_CUMPRINC },
{ "getDec2Bin" , HID_AAI_FUNC_DEC2BIN },
{ "getDec2Hex" , HID_AAI_FUNC_DEC2HEX },
{ "getDec2Oct" , HID_AAI_FUNC_DEC2OCT },
{ "getDelta" , HID_AAI_FUNC_DELTA },
{ "getDisc" , HID_AAI_FUNC_DISC },
{ "getDollarde" , HID_AAI_FUNC_DOLLARDE },
{ "getDollarfr" , HID_AAI_FUNC_DOLLARFR },
{ "getDuration" , HID_AAI_FUNC_DURATION },
{ "getEdate" , HID_AAI_FUNC_EDATE },
{ "getEffect" , HID_AAI_FUNC_EFFECT },
{ "getEomonth" , HID_AAI_FUNC_EOMONTH },
{ "getErf" , HID_AAI_FUNC_ERF },
{ "getErfc" , HID_AAI_FUNC_ERFC },
{ "getFactdouble" , HID_AAI_FUNC_FACTDOUBLE },
{ "getFvschedule" , HID_AAI_FUNC_FVSCHEDULE },
{ "getGcd" , HID_AAI_FUNC_GCD },
{ "getGestep" , HID_AAI_FUNC_GESTEP },
{ "getHex2Bin" , HID_AAI_FUNC_HEX2BIN },
{ "getHex2Dec" , HID_AAI_FUNC_HEX2DEC },
{ "getHex2Oct" , HID_AAI_FUNC_HEX2OCT },
{ "getImabs" , HID_AAI_FUNC_IMABS },
{ "getImaginary" , HID_AAI_FUNC_IMAGINARY },
{ "getImargument" , HID_AAI_FUNC_IMARGUMENT },
{ "getImconjugate" , HID_AAI_FUNC_IMCONJUGATE },
{ "getImcos" , HID_AAI_FUNC_IMCOS },
{ "getImcosh" , HID_AAI_FUNC_IMCOSH },
{ "getImcot" , HID_AAI_FUNC_IMCOT },
{ "getImcsc" , HID_AAI_FUNC_IMCSC },
{ "getImcsch" , HID_AAI_FUNC_IMCSCH },
{ "getImdiv" , HID_AAI_FUNC_IMDIV },
{ "getImexp" , HID_AAI_FUNC_IMEXP },
{ "getImln" , HID_AAI_FUNC_IMLN },
{ "getImlog10" , HID_AAI_FUNC_IMLOG10 },
{ "getImlog2" , HID_AAI_FUNC_IMLOG2 },
{ "getImpower" , HID_AAI_FUNC_IMPOWER },
{ "getImproduct" , HID_AAI_FUNC_IMPRODUCT },
{ "getImreal" , HID_AAI_FUNC_IMREAL },
{ "getImsec" , HID_AAI_FUNC_IMSEC },
{ "getImsech" , HID_AAI_FUNC_IMSECH },
{ "getImsin" , HID_AAI_FUNC_IMSIN },
{ "getImsinh" , HID_AAI_FUNC_IMSINH },
{ "getImsqrt" , HID_AAI_FUNC_IMSQRT },
{ "getImsub" , HID_AAI_FUNC_IMSUB },
{ "getImsum" , HID_AAI_FUNC_IMSUM },
{ "getImtan" , HID_AAI_FUNC_IMTAN },
{ "getIntrate" , HID_AAI_FUNC_INTRATE },
{ "getIseven" , HID_AAI_FUNC_ISEVEN },
{ "getIsodd" , HID_AAI_FUNC_ISODD },
{ "getLcm" , HID_AAI_FUNC_LCM },
{ "getMduration" , HID_AAI_FUNC_MDURATION },
{ "getMround" , HID_AAI_FUNC_MROUND },
{ "getMultinomial" , HID_AAI_FUNC_MULTINOMIAL },
{ "getNetworkdays" , HID_AAI_FUNC_NETWORKDAYS },
{ "getNominal" , HID_AAI_FUNC_NOMINAL },
{ "getOct2Bin" , HID_AAI_FUNC_OCT2BIN },
{ "getOct2Dec" , HID_AAI_FUNC_OCT2DEZ },
{ "getOct2Hex" , HID_AAI_FUNC_OCT2HEX },
{ "getOddfprice" , HID_AAI_FUNC_ODDFPRICE },
{ "getOddfyield" , HID_AAI_FUNC_ODDFYIELD },
{ "getOddlprice" , HID_AAI_FUNC_ODDLPRICE },
{ "getOddlyield" , HID_AAI_FUNC_ODDLYIELD },
{ "getPrice" , HID_AAI_FUNC_PRICE },
{ "getPricedisc" , HID_AAI_FUNC_PRICEDISC },
{ "getPricemat" , HID_AAI_FUNC_PRICEMAT },
{ "getQuotient" , HID_AAI_FUNC_QUOTIENT },
{ "getRandbetween" , HID_AAI_FUNC_RANDBETWEEN },
{ "getReceived" , HID_AAI_FUNC_RECEIVED },
{ "getSeriessum" , HID_AAI_FUNC_SERIESSUM },
{ "getSqrtpi" , HID_AAI_FUNC_SQRTPI },
{ "getTbilleq" , HID_AAI_FUNC_TBILLEQ },
{ "getTbillprice" , HID_AAI_FUNC_TBILLPRICE },
{ "getTbillyield" , HID_AAI_FUNC_TBILLYIELD },
{ "getWeeknum" , HID_AAI_FUNC_WEEKNUM },
{ "getWorkday" , HID_AAI_FUNC_WORKDAY },
{ "getXirr" , HID_AAI_FUNC_XIRR },
{ "getXnpv" , HID_AAI_FUNC_XNPV },
{ "getYearfrac" , HID_AAI_FUNC_YEARFRAC },
{ "getYield" , HID_AAI_FUNC_YIELD },
{ "getYielddisc" , HID_AAI_FUNC_YIELDDISC },
{ "getYieldmat" , HID_AAI_FUNC_YIELDMAT }
};
// ----------------------------------------------------------------------------
// Help IDs for DateFunc AddIn. MUST BE SORTED for binary search.
const ScUnoAddInHelpId pDateFuncHelpIds[] =
{
{ "getDaysInMonth" , HID_DAI_FUNC_DAYSINMONTH },
{ "getDaysInYear" , HID_DAI_FUNC_DAYSINYEAR },
{ "getDiffMonths" , HID_DAI_FUNC_DIFFMONTHS },
{ "getDiffWeeks" , HID_DAI_FUNC_DIFFWEEKS },
{ "getDiffYears" , HID_DAI_FUNC_DIFFYEARS },
{ "getRot13" , HID_DAI_FUNC_ROT13 },
{ "getWeeksInYear" , HID_DAI_FUNC_WEEKSINYEAR }
};
// ============================================================================
//UNUSED2008-05 ScUnoAddInHelpIdGenerator::ScUnoAddInHelpIdGenerator() :
//UNUSED2008-05 pCurrHelpIds( NULL ),
//UNUSED2008-05 nArrayCount( 0 )
//UNUSED2008-05 {
//UNUSED2008-05 }
ScUnoAddInHelpIdGenerator::ScUnoAddInHelpIdGenerator( const ::rtl::OUString& rServiceName )
{
SetServiceName( rServiceName );
}
void ScUnoAddInHelpIdGenerator::SetServiceName( const ::rtl::OUString& rServiceName )
{
pCurrHelpIds = NULL;
sal_uInt32 nSize = 0;
if( rServiceName.equalsAscii( "com.sun.star.sheet.addin.Analysis" ) )
{
pCurrHelpIds = pAnalysisHelpIds;
nSize = sizeof( pAnalysisHelpIds );
}
else if( rServiceName.equalsAscii( "com.sun.star.sheet.addin.DateFunctions" ) )
{
pCurrHelpIds = pDateFuncHelpIds;
nSize = sizeof( pDateFuncHelpIds );
}
nArrayCount = nSize / sizeof( ScUnoAddInHelpId );
}
rtl::OString ScUnoAddInHelpIdGenerator::GetHelpId( const ::rtl::OUString& rFuncName ) const
{
if( !pCurrHelpIds || !nArrayCount )
return rtl::OString();
const ScUnoAddInHelpId* pFirst = pCurrHelpIds;
const ScUnoAddInHelpId* pLast = pCurrHelpIds + nArrayCount - 1;
while( pFirst <= pLast )
{
const ScUnoAddInHelpId* pMiddle = pFirst + (pLast - pFirst) / 2;
sal_Int32 nResult = rFuncName.compareToAscii( pMiddle->pFuncName );
if( !nResult )
return pMiddle->sHelpId;
else if( nResult < 0 )
pLast = pMiddle - 1;
else
pFirst = pMiddle + 1;
}
return rtl::OString();
}
// ============================================================================