LCOV - code coverage report
Current view: top level - sc/source/core/tool - addinhelpid.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 27 28 96.4 %
Date: 2012-08-25 Functions: 3 3 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 11 14 78.6 %

           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: */

Generated by: LCOV version 1.10