LCOV - code coverage report
Current view: top level - libreoffice/sc/source/core/tool - addinhelpid.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 27 28 96.4 %
Date: 2012-12-27 Functions: 3 3 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.10