LCOV - code coverage report
Current view: top level - sw/source/core/doc - SwStyleNameMapper.cxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 259 264 98.1 %
Date: 2014-11-03 Functions: 42 43 97.7 %
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             : #include <numeric>
      21             : #include <boost/tuple/tuple.hpp>
      22             : 
      23             : #include <SwStyleNameMapper.hxx>
      24             : #include <tools/resmgr.hxx>
      25             : #include <poolfmt.hxx>
      26             : #include <rcid.hrc>
      27             : 
      28             : #ifdef _NEED_TO_DEBUG_MAPPING
      29             : #include <stdlib.h>
      30             : #endif
      31             : 
      32             : extern ResMgr* pSwResMgr;
      33             : // Initialise UI names to 0
      34             : ::std::vector<OUString> *SwStyleNameMapper::pTextUINameArray = 0,
      35             :                 *SwStyleNameMapper::pListsUINameArray = 0,
      36             :                 *SwStyleNameMapper::pExtraUINameArray = 0,
      37             :                 *SwStyleNameMapper::pRegisterUINameArray = 0,
      38             :                 *SwStyleNameMapper::pDocUINameArray = 0,
      39             :                 *SwStyleNameMapper::pHTMLUINameArray = 0,
      40             :                 *SwStyleNameMapper::pFrmFmtUINameArray = 0,
      41             :                 *SwStyleNameMapper::pChrFmtUINameArray = 0,
      42             :                 *SwStyleNameMapper::pHTMLChrFmtUINameArray = 0,
      43             :                 *SwStyleNameMapper::pPageDescUINameArray = 0,
      44             :                 *SwStyleNameMapper::pNumRuleUINameArray = 0,
      45             : 
      46             : // Initialise programmatic names to 0
      47             :                 *SwStyleNameMapper::pTextProgNameArray = 0,
      48             :                 *SwStyleNameMapper::pListsProgNameArray = 0,
      49             :                 *SwStyleNameMapper::pExtraProgNameArray = 0,
      50             :                 *SwStyleNameMapper::pRegisterProgNameArray = 0,
      51             :                 *SwStyleNameMapper::pDocProgNameArray = 0,
      52             :                 *SwStyleNameMapper::pHTMLProgNameArray = 0,
      53             :                 *SwStyleNameMapper::pFrmFmtProgNameArray = 0,
      54             :                 *SwStyleNameMapper::pChrFmtProgNameArray = 0,
      55             :                 *SwStyleNameMapper::pHTMLChrFmtProgNameArray = 0,
      56             :                 *SwStyleNameMapper::pPageDescProgNameArray = 0,
      57             :                 *SwStyleNameMapper::pNumRuleProgNameArray = 0;
      58             : 
      59             : NameToIdHash    *SwStyleNameMapper::pParaUIMap = 0,
      60             :                 *SwStyleNameMapper::pCharUIMap = 0,
      61             :                 *SwStyleNameMapper::pPageUIMap = 0,
      62             :                 *SwStyleNameMapper::pFrameUIMap = 0,
      63             :                 *SwStyleNameMapper::pNumRuleUIMap = 0,
      64             : 
      65             :                 *SwStyleNameMapper::pParaProgMap = 0,
      66             :                 *SwStyleNameMapper::pCharProgMap = 0,
      67             :                 *SwStyleNameMapper::pPageProgMap = 0,
      68             :                 *SwStyleNameMapper::pFrameProgMap = 0,
      69             :                 *SwStyleNameMapper::pNumRuleProgMap = 0;
      70             : 
      71             : // SwTableEntry so we can pass the length to the String CTOR
      72             : struct SwTableEntry
      73             : {
      74             :     sal_uInt8 nLength;
      75             :     const sal_Char *pChar;
      76             : };
      77             : 
      78             : namespace
      79             : {
      80             : 
      81             : #define ENTRY( s ) { sizeof (s)-1, s }
      82             : 
      83             : // Hard coded Programmatic Name tables
      84             : const struct SwTableEntry TextProgNameTable [] =
      85             : {
      86             :     ENTRY( "Standard" ), // RES_POOLCOLL_STANDARD
      87             :     ENTRY( "Text body" ),
      88             :     ENTRY( "First line indent" ),
      89             :     ENTRY( "Hanging indent" ),
      90             :     ENTRY( "Text body indent" ),
      91             :     ENTRY( "Salutation" ),
      92             :     ENTRY( "Signature" ),
      93             :     ENTRY( "List Indent" ), // RES_POOLCOLL_CONFRONTATION
      94             :     ENTRY( "Marginalia" ),
      95             :     ENTRY( "Heading" ),
      96             :     ENTRY( "Heading 1" ),
      97             :     ENTRY( "Heading 2" ),
      98             :     ENTRY( "Heading 3" ),
      99             :     ENTRY( "Heading 4" ),
     100             :     ENTRY( "Heading 5" ),
     101             :     ENTRY( "Heading 6" ),
     102             :     ENTRY( "Heading 7" ),
     103             :     ENTRY( "Heading 8" ),
     104             :     ENTRY( "Heading 9" ),
     105             :     ENTRY( "Heading 10" ), // RES_POOLCOLL_TEXT_END
     106             :     { 0, NULL }
     107             : };
     108             : 
     109             : const struct SwTableEntry ListsProgNameTable [] =
     110             : {
     111             :     ENTRY( "List" ), // STR_POCO_PRGM_NUMBUL_BASE
     112             :     ENTRY( "Numbering 1 Start" ), // STR_POCO_PRGM_NUM_LEVEL1S
     113             :     ENTRY( "Numbering 1" ),
     114             :     ENTRY( "Numbering 1 End" ),
     115             :     ENTRY( "Numbering 1 Cont." ),
     116             :     ENTRY( "Numbering 2 Start" ),
     117             :     ENTRY( "Numbering 2" ),
     118             :     ENTRY( "Numbering 2 End" ),
     119             :     ENTRY( "Numbering 2 Cont." ),
     120             :     ENTRY( "Numbering 3 Start" ),
     121             :     ENTRY( "Numbering 3" ),
     122             :     ENTRY( "Numbering 3 End" ),
     123             :     ENTRY( "Numbering 3 Cont." ),
     124             :     ENTRY( "Numbering 4 Start" ),
     125             :     ENTRY( "Numbering 4" ),
     126             :     ENTRY( "Numbering 4 End" ),
     127             :     ENTRY( "Numbering 4 Cont." ),
     128             :     ENTRY( "Numbering 5 Start" ),
     129             :     ENTRY( "Numbering 5" ),
     130             :     ENTRY( "Numbering 5 End" ),
     131             :     ENTRY( "Numbering 5 Cont." ),
     132             :     ENTRY( "List 1 Start" ),
     133             :     ENTRY( "List 1" ),
     134             :     ENTRY( "List 1 End" ),
     135             :     ENTRY( "List 1 Cont." ),
     136             :     ENTRY( "List 2 Start" ),
     137             :     ENTRY( "List 2" ),
     138             :     ENTRY( "List 2 End" ),
     139             :     ENTRY( "List 2 Cont." ),
     140             :     ENTRY( "List 3 Start" ),
     141             :     ENTRY( "List 3" ),
     142             :     ENTRY( "List 3 End" ),
     143             :     ENTRY( "List 3 Cont." ),
     144             :     ENTRY( "List 4 Start" ),
     145             :     ENTRY( "List 4" ),
     146             :     ENTRY( "List 4 End" ),
     147             :     ENTRY( "List 4 Cont." ),
     148             :     ENTRY( "List 5 Start" ),
     149             :     ENTRY( "List 5" ),
     150             :     ENTRY( "List 5 End" ),
     151             :     ENTRY( "List 5 Cont." ), // STR_POCO_PRGM_BUL_NONUM5
     152             :     { 0, NULL }
     153             : };
     154             : 
     155             : const struct SwTableEntry ExtraProgNameTable [] =
     156             : {
     157             :     ENTRY( "Header" ), // RES_POOLCOLL_EXTRA_BEGIN
     158             :     ENTRY( "Header left" ),
     159             :     ENTRY( "Header right" ),
     160             :     ENTRY( "Footer" ),
     161             :     ENTRY( "Footer left" ),
     162             :     ENTRY( "Footer right" ),
     163             :     ENTRY( "Table Contents" ),
     164             :     ENTRY( "Table Heading" ),
     165             :     ENTRY( "Caption" ),
     166             :     ENTRY( "Illustration" ),
     167             :     ENTRY( "Table" ),
     168             :     ENTRY( "Text" ),
     169             :     ENTRY( "Frame contents" ),
     170             :     ENTRY( "Footnote" ),
     171             :     ENTRY( "Addressee" ),
     172             :     ENTRY( "Sender" ),
     173             :     ENTRY( "Endnote" ),
     174             :     ENTRY( "Drawing" ), // RES_POOLCOLL_LABEL_DRAWING
     175             :     { 0, NULL }
     176             : };
     177             : 
     178             : const struct SwTableEntry RegisterProgNameTable [] =
     179             : {
     180             :     ENTRY( "Index" ), // STR_POCO_PRGM_REGISTER_BASE
     181             :     ENTRY( "Index Heading" ), // STR_POCO_PRGM_TOX_IDXH
     182             :     ENTRY( "Index 1" ),
     183             :     ENTRY( "Index 2" ),
     184             :     ENTRY( "Index 3" ),
     185             :     ENTRY( "Index Separator" ),
     186             :     ENTRY( "Contents Heading" ),
     187             :     ENTRY( "Contents 1" ),
     188             :     ENTRY( "Contents 2" ),
     189             :     ENTRY( "Contents 3" ),
     190             :     ENTRY( "Contents 4" ),
     191             :     ENTRY( "Contents 5" ),
     192             :     ENTRY( "User Index Heading" ),
     193             :     ENTRY( "User Index 1" ),
     194             :     ENTRY( "User Index 2" ),
     195             :     ENTRY( "User Index 3" ),
     196             :     ENTRY( "User Index 4" ),
     197             :     ENTRY( "User Index 5" ),
     198             :     ENTRY( "Contents 6" ),
     199             :     ENTRY( "Contents 7" ),
     200             :     ENTRY( "Contents 8" ),
     201             :     ENTRY( "Contents 9" ),
     202             :     ENTRY( "Contents 10" ),
     203             :     ENTRY( "Illustration Index Heading" ),
     204             :     ENTRY( "Illustration Index 1" ),
     205             :     ENTRY( "Object index heading" ),
     206             :     ENTRY( "Object index 1" ),
     207             :     ENTRY( "Table index heading" ),
     208             :     ENTRY( "Table index 1" ),
     209             :     ENTRY( "Bibliography Heading" ),
     210             :     ENTRY( "Bibliography 1" ),
     211             :     ENTRY( "User Index 6" ),
     212             :     ENTRY( "User Index 7" ),
     213             :     ENTRY( "User Index 8" ),
     214             :     ENTRY( "User Index 9" ),
     215             :     ENTRY( "User Index 10" ), // STR_POCO_PRGM_TOX_USER10
     216             :     { 0, NULL }
     217             : };
     218             : 
     219             : const struct SwTableEntry DocProgNameTable [] =
     220             : {
     221             :     ENTRY( "Title" ), // STR_POCO_PRGM_DOC_TITEL
     222             :     ENTRY( "Subtitle" ),
     223             :     { 0, NULL }
     224             : };
     225             : 
     226             : const struct SwTableEntry HTMLProgNameTable [] =
     227             : {
     228             :     ENTRY( "Quotations" ),
     229             :     ENTRY( "Preformatted Text" ),
     230             :     ENTRY( "Horizontal Line" ),
     231             :     ENTRY( "List Contents" ),
     232             :     ENTRY( "List Heading" ), // STR_POCO_PRGM_HTML_DT
     233             :     { 0, NULL }
     234             : };
     235             : 
     236             : const struct SwTableEntry FrmFmtProgNameTable [] =
     237             : {
     238             :     ENTRY( "Frame" ), // RES_POOLFRM_FRAME
     239             :     ENTRY( "Graphics" ),
     240             :     ENTRY( "OLE" ),
     241             :     ENTRY( "Formula" ),
     242             :     ENTRY( "Marginalia" ),
     243             :     ENTRY( "Watermark" ),
     244             :     ENTRY( "Labels" ), // RES_POOLFRM_LABEL
     245             :     { 0, NULL }
     246             : };
     247             : 
     248             : const struct SwTableEntry ChrFmtProgNameTable [] =
     249             : {
     250             :     ENTRY( "Footnote Symbol" ), // RES_POOLCHR_FOOTNOTE
     251             :     ENTRY( "Page Number" ),
     252             :     ENTRY( "Caption characters" ),
     253             :     ENTRY( "Drop Caps" ),
     254             :     ENTRY( "Numbering Symbols" ),
     255             :     ENTRY( "Bullet Symbols" ),
     256             :     ENTRY( "Internet link" ),
     257             :     ENTRY( "Visited Internet Link" ),
     258             :     ENTRY( "Placeholder" ),
     259             :     ENTRY( "Index Link" ),
     260             :     ENTRY( "Endnote Symbol" ),
     261             :     ENTRY( "Line numbering" ),
     262             :     ENTRY( "Main index entry" ),
     263             :     ENTRY( "Footnote anchor" ),
     264             :     ENTRY( "Endnote anchor" ),
     265             :     ENTRY( "Rubies" ), // RES_POOLCHR_RUBYTEXT
     266             :     ENTRY( "Vertical Numbering Symbols" ), // RES_POOLCHR_VERT_NUMBER
     267             :     { 0, NULL }
     268             : };
     269             : 
     270             : const struct SwTableEntry HTMLChrFmtProgNameTable [] =
     271             : {
     272             :     ENTRY( "Emphasis" ), // RES_POOLCHR_HTML_EMPHASIS
     273             :     ENTRY( "Citation" ),
     274             :     ENTRY( "Strong Emphasis" ),
     275             :     ENTRY( "Source Text" ),
     276             :     ENTRY( "Example" ),
     277             :     ENTRY( "User Entry" ),
     278             :     ENTRY( "Variable" ),
     279             :     ENTRY( "Definition" ),
     280             :     ENTRY( "Teletype" ), // RES_POOLCHR_HTML_TELETYPE
     281             :     { 0, NULL }
     282             : };
     283             : 
     284             : const struct SwTableEntry PageDescProgNameTable [] =
     285             : {
     286             :     ENTRY( "Standard" ), // STR_POOLPAGE_PRGM_STANDARD
     287             :     ENTRY( "First Page" ),
     288             :     ENTRY( "Left Page" ),
     289             :     ENTRY( "Right Page" ),
     290             :     ENTRY( "Envelope" ),
     291             :     ENTRY( "Index" ),
     292             :     ENTRY( "HTML" ),
     293             :     ENTRY( "Footnote" ),
     294             :     ENTRY( "Endnote" ), // STR_POOLPAGE_PRGM_ENDNOTE
     295             :     ENTRY( "Landscape" ),
     296             :     { 0, NULL }
     297             : };
     298             : 
     299             : const struct SwTableEntry NumRuleProgNameTable [] =
     300             : {
     301             :     ENTRY( "Numbering 1" ), // STR_POOLNUMRULE_PRGM_NUM1
     302             :     ENTRY( "Numbering 2" ),
     303             :     ENTRY( "Numbering 3" ),
     304             :     ENTRY( "Numbering 4" ),
     305             :     ENTRY( "Numbering 5" ),
     306             :     ENTRY( "List 1" ),
     307             :     ENTRY( "List 2" ),
     308             :     ENTRY( "List 3" ),
     309             :     ENTRY( "List 4" ),
     310             :     ENTRY( "List 5" ), // STR_POOLNUMRULE_PRGM_BUL5
     311             :     { 0, NULL }
     312             : };
     313             : #undef ENTRY
     314             : 
     315             : static ::std::vector<OUString>*
     316         862 : lcl_NewUINameArray(sal_uInt16 nStt, sal_uInt16 const nEnd)
     317             : {
     318         862 :     ::std::vector<OUString> *const pNameArray = new ::std::vector<OUString>;
     319         862 :     pNameArray->reserve(nEnd - nStt);
     320       16066 :     while( nStt < nEnd )
     321             :     {
     322       14342 :         const ResId aRId( nStt, *pSwResMgr );
     323       14342 :         pNameArray->push_back(OUString(aRId));
     324       14342 :         ++nStt;
     325             :     }
     326         862 :     return pNameArray;
     327             : }
     328             : 
     329             : static ::std::vector<OUString>*
     330         826 : lcl_NewProgNameArray(const SwTableEntry *pTable, sal_uInt8 const nCount)
     331             : {
     332         826 :     ::std::vector<OUString> *const pProgNameArray = new ::std::vector<OUString>;
     333         826 :     pProgNameArray->reserve(nCount);
     334       15362 :     while (pTable->nLength)
     335             :     {
     336             :         pProgNameArray->push_back(OUString(
     337       13710 :                 pTable->pChar, pTable->nLength, RTL_TEXTENCODING_ASCII_US));
     338       13710 :         pTable++;
     339             :     }
     340         826 :     return pProgNameArray;
     341             : }
     342             : 
     343             : static OUString
     344        3476 : lcl_GetSpecialExtraName(const OUString& rExtraName, const bool bIsUIName )
     345             : {
     346             :     const ::std::vector<OUString>& rExtraArr = bIsUIName
     347             :         ? SwStyleNameMapper::GetExtraUINameArray()
     348        3476 :         : SwStyleNameMapper::GetExtraProgNameArray();
     349             :     static const sal_uInt16 nIds[] =
     350             :     {
     351             :         RES_POOLCOLL_LABEL_DRAWING - RES_POOLCOLL_EXTRA_BEGIN,
     352             :         RES_POOLCOLL_LABEL_ABB - RES_POOLCOLL_EXTRA_BEGIN,
     353             :         RES_POOLCOLL_LABEL_TABLE - RES_POOLCOLL_EXTRA_BEGIN,
     354             :         RES_POOLCOLL_LABEL_FRAME- RES_POOLCOLL_EXTRA_BEGIN,
     355             :         0
     356             :     };
     357             :     const sal_uInt16 * pIds;
     358        9226 :     for ( pIds = nIds; *pIds; ++pIds)
     359             :     {
     360        9016 :         if (rExtraName == rExtraArr[ *pIds ])
     361             :         {
     362             :             return bIsUIName
     363         252 :                 ? SwStyleNameMapper::GetExtraProgNameArray()[*pIds]
     364        3518 :                 : SwStyleNameMapper::GetExtraUINameArray()[*pIds];
     365             :         }
     366             :     }
     367         210 :     return rExtraName;
     368             : }
     369             : 
     370      376328 : static bool lcl_SuffixIsUser(const OUString & rString)
     371             : {
     372      376328 :     const sal_Unicode *pChar = rString.getStr();
     373      376328 :     sal_Int32 nLen = rString.getLength();
     374      376328 :     bool bRet = false;
     375      664280 :     if( nLen > 8 &&
     376      339620 :         pChar[nLen-7] == ' ' &&
     377       79898 :         pChar[nLen-6] == '(' &&
     378       55608 :         pChar[nLen-5] == 'u' &&
     379       54756 :         pChar[nLen-4] == 's' &&
     380       54756 :         pChar[nLen-3] == 'e' &&
     381       54756 :         pChar[nLen-2] == 'r' &&
     382       27378 :         pChar[nLen-1] == ')' )
     383       27378 :         bRet = true;
     384      376328 :     return bRet;
     385             : }
     386             : 
     387      296872 : static void lcl_CheckSuffixAndDelete(OUString & rString)
     388             : {
     389      296872 :     if (lcl_SuffixIsUser(rString))
     390             :     {
     391       27378 :         rString = rString.copy(0, rString.getLength() - 7);
     392             :     }
     393      296872 : }
     394             : 
     395             : typedef boost::tuple<sal_uInt16, sal_uInt16, const ::std::vector<OUString>& (*)() > NameArrayIndexTuple_t;
     396             : 
     397        1661 : static sal_uInt16 lcl_AccumulateIndexCount( sal_uInt16 nSum, NameArrayIndexTuple_t const tuple ){
     398             :     // Return running sum + (index end) - (index start)
     399        1661 :     return nSum + boost::get<1>( tuple ) - boost::get<0>( tuple );
     400             : }
     401             : }
     402             : 
     403             : #ifdef _NEED_TO_DEBUG_MAPPING
     404             : void SwStyleNameMapper::testNameTable( SwGetPoolIdFromName const nFamily, sal_uInt16 const nStartIndex, sal_uInt16 const nEndIndex )
     405             : {
     406             :     sal_uInt16 nIndex;
     407             :     sal_uInt16 nId;
     408             : 
     409             :     for ( nIndex = 0, nId = nStartIndex ; nId < nEndIndex ; nId++,nIndex++ )
     410             :     {
     411             :         OUString aString, bString;
     412             :         FillUIName ( nId, aString );
     413             :         bString = GetProgName ( nFamily, aString );
     414             :         sal_uInt16 nNewId = GetPoolIdFromProgName ( bString, nFamily );
     415             :         FillProgName ( nNewId, aString );
     416             :         bString = GetUIName ( aString, nFamily );
     417             :         nNewId = GetPoolIdFromUIName ( aString, nFamily );
     418             :         if ( nNewId != nId )
     419             :             abort();
     420             :     }
     421             : }
     422             : #endif
     423             : 
     424     1496776 : const NameToIdHash & SwStyleNameMapper::getHashTable ( SwGetPoolIdFromName eFlags, bool bProgName )
     425             : {
     426             :     // pHashPointer is a pointer to a pointer which stores the UI/prog name array
     427     1496776 :     NameToIdHash **pHashPointer = 0;
     428             :     // Stores tuples representing (index start, index end, pointer to function which returns ref to name array)
     429     1496776 :     ::std::vector<NameArrayIndexTuple_t> vIndexes;
     430             : 
     431     1496776 :     switch ( eFlags )
     432             :     {
     433             :         case nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL:
     434             :         {
     435      791646 :             pHashPointer = bProgName ? &pParaProgMap : &pParaUIMap;
     436      791646 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_TEXT_BEGIN, RES_POOLCOLL_TEXT_END, bProgName ? &GetTextProgNameArray : &GetTextUINameArray) );
     437      791646 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_LISTS_BEGIN, RES_POOLCOLL_LISTS_END, bProgName ? &GetListsProgNameArray : &GetListsUINameArray) );
     438      791646 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_EXTRA_BEGIN, RES_POOLCOLL_EXTRA_END, bProgName ? &GetExtraProgNameArray : &GetExtraUINameArray) );
     439      791646 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_REGISTER_BEGIN, RES_POOLCOLL_REGISTER_END, bProgName ? &GetRegisterProgNameArray : &GetRegisterUINameArray) );
     440      791646 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_DOC_BEGIN, RES_POOLCOLL_DOC_END, bProgName ? &GetDocProgNameArray : &GetDocUINameArray) );
     441      791646 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_HTML_BEGIN, RES_POOLCOLL_HTML_END, bProgName ? &GetHTMLProgNameArray : &GetHTMLUINameArray) );
     442             :         }
     443      791646 :         break;
     444             :         case nsSwGetPoolIdFromName::GET_POOLID_CHRFMT:
     445             :         {
     446      405088 :             pHashPointer = bProgName ? &pCharProgMap : &pCharUIMap;
     447      405088 :             vIndexes.push_back( boost::make_tuple(RES_POOLCHR_NORMAL_BEGIN, RES_POOLCHR_NORMAL_END, bProgName ? &GetChrFmtProgNameArray : &GetChrFmtUINameArray) );
     448      405088 :             vIndexes.push_back( boost::make_tuple(RES_POOLCHR_HTML_BEGIN, RES_POOLCHR_HTML_END, bProgName ? &GetHTMLChrFmtProgNameArray : &GetHTMLChrFmtUINameArray) );
     449             :         }
     450      405088 :         break;
     451             :         case nsSwGetPoolIdFromName::GET_POOLID_FRMFMT:
     452             :         {
     453       13152 :             pHashPointer = bProgName ? &pFrameProgMap : &pFrameUIMap;
     454       13152 :             vIndexes.push_back( boost::make_tuple(RES_POOLFRM_BEGIN, RES_POOLFRM_END, bProgName ? &GetFrmFmtProgNameArray : &GetFrmFmtUINameArray) );
     455             :         }
     456       13152 :         break;
     457             :         case nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC:
     458             :         {
     459       43298 :             pHashPointer = bProgName ? &pPageProgMap : &pPageUIMap;
     460       43298 :             vIndexes.push_back( boost::make_tuple(RES_POOLPAGE_BEGIN, RES_POOLPAGE_END, bProgName ? &GetPageDescProgNameArray : &GetPageDescUINameArray) );
     461             :         }
     462       43298 :         break;
     463             :         case nsSwGetPoolIdFromName::GET_POOLID_NUMRULE:
     464             :         {
     465      243592 :             pHashPointer = bProgName ? &pNumRuleProgMap : &pNumRuleUIMap;
     466      243592 :             vIndexes.push_back( boost::make_tuple(RES_POOLNUMRULE_BEGIN, RES_POOLNUMRULE_END, bProgName ? &GetNumRuleProgNameArray : &GetNumRuleUINameArray) );
     467             :         }
     468      243592 :         break;
     469             :         default:
     470             :         {
     471             :             assert(false && "unknown pool family");
     472             :         }
     473           0 :         break;
     474             :     }
     475             : 
     476             :     // Proceed if we have a pointer to a hash, and the hash hasn't already been populated
     477             :     assert(pHashPointer && "null hash pointer");
     478     1496776 :     if (!*pHashPointer )
     479             :     {
     480             :         // Compute the size of the hash we need to build
     481         679 :         sal_uInt16 nSize = std::accumulate( vIndexes.begin(), vIndexes.end(), 0, lcl_AccumulateIndexCount );
     482             : 
     483         679 :         NameToIdHash *pHash = new NameToIdHash( nSize );
     484        2340 :         for ( ::std::vector<NameArrayIndexTuple_t>::iterator entry = vIndexes.begin(); entry != vIndexes.end(); ++entry )
     485             :         {
     486             :             // Get a pointer to the function which will populate pStrings
     487        1661 :             const ::std::vector<OUString>& (*pStringsFetchFunc)() = boost::get<2>( *entry );
     488        1661 :             if ( pStringsFetchFunc )
     489             :             {
     490        1661 :                 const ::std::vector<OUString>& pStrings = pStringsFetchFunc();
     491             :                 sal_uInt16 nIndex, nId;
     492       29255 :                 for ( nIndex = 0, nId = boost::get<0>( *entry ) ; nId < boost::get<1>( *entry ) ; nId++, nIndex++ )
     493       27594 :                     (*pHash)[pStrings[nIndex]] = nId;
     494             :             }
     495             :         }
     496             : 
     497         679 :         *pHashPointer = pHash;
     498             :     }
     499             : 
     500             : #ifdef _NEED_TO_DEBUG_MAPPING
     501             :     static bool bTested = false;
     502             :     if ( !bTested )
     503             :     {
     504             :         bTested = true;
     505             : 
     506             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_TEXT_BEGIN, RES_POOLCOLL_TEXT_END );
     507             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_LISTS_BEGIN, RES_POOLCOLL_LISTS_END );
     508             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_EXTRA_BEGIN, RES_POOLCOLL_EXTRA_END );
     509             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_REGISTER_BEGIN, RES_POOLCOLL_REGISTER_END );
     510             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_DOC_BEGIN, RES_POOLCOLL_DOC_END );
     511             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_HTML_BEGIN, RES_POOLCOLL_HTML_END );
     512             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, RES_POOLCHR_NORMAL_BEGIN, RES_POOLCHR_NORMAL_END );
     513             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, RES_POOLCHR_HTML_BEGIN, RES_POOLCHR_HTML_END );
     514             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_FRMFMT, RES_POOLFRM_BEGIN, RES_POOLFRM_END );
     515             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC, RES_POOLPAGE_BEGIN, RES_POOLPAGE_END );
     516             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_NUMRULE, RES_POOLNUMRULE_BEGIN, RES_POOLNUMRULE_END );
     517             :     }
     518             : #endif
     519     1496776 :     return **pHashPointer;
     520             : }
     521             : 
     522             : // This gets the UI name from the programmatic name
     523         642 : const OUString& SwStyleNameMapper::GetUIName(const OUString& rName,
     524             :                                              SwGetPoolIdFromName const eFlags)
     525             : {
     526         642 :     sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
     527         642 :     return nId != USHRT_MAX ? GetUIName( nId, rName ) : rName;
     528             : }
     529             : 
     530             : // Get the programmatic name from the UI name
     531         688 : const OUString& SwStyleNameMapper::GetProgName(
     532             :         const OUString& rName, SwGetPoolIdFromName const eFlags)
     533             : {
     534         688 :     sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
     535         688 :     return nId != USHRT_MAX ? GetProgName( nId, rName ) : rName;
     536             : }
     537             : 
     538             : // Get the programmatic name from the UI name in rName and put it into rFillName
     539      192394 : void SwStyleNameMapper::FillProgName(
     540             :         const OUString& rName, OUString& rFillName,
     541             :         SwGetPoolIdFromName const eFlags, bool const bDisambiguate)
     542             : {
     543      192394 :     sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
     544      192394 :     if ( bDisambiguate && nId == USHRT_MAX )
     545             :     {
     546             :         // rName isn't in our UI name table...check if it's in the programmatic one
     547       79486 :         nId = GetPoolIdFromProgName ( rName, eFlags );
     548             : 
     549       79486 :         rFillName = rName;
     550      158972 :         if (nId == USHRT_MAX )
     551             :         {
     552             :             // It isn't ...make sure the suffix isn't already " (user)"...if it is,
     553             :             // we need to add another one
     554       79456 :             if (lcl_SuffixIsUser(rFillName))
     555           0 :                 rFillName += " (user)";
     556             :         }
     557             :         else
     558             :         {
     559             :             // It's in the programmatic name table...append suffix
     560          30 :             rFillName += " (user)";
     561             :         }
     562             :     }
     563             :     else
     564             :     {
     565             :         // If we aren't trying to disambiguate, then just do a normal fill
     566      112908 :         fillNameFromId(nId, rFillName, true);
     567             :     }
     568      192394 : }
     569             : 
     570             : // Get the UI name from the programmatic name in rName and put it into rFillName
     571      478882 : void SwStyleNameMapper::FillUIName(
     572             :         const OUString& rName, OUString& rFillName,
     573             :         SwGetPoolIdFromName const eFlags, bool const bDisambiguate)
     574             : {
     575      478882 :     sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
     576      478882 :     if ( bDisambiguate && nId == USHRT_MAX )
     577             :     {
     578      296872 :         rFillName = rName;
     579             :         // rName isn't in our Prog name table...check if it has a " (user)" suffix, if so remove it
     580      296872 :         lcl_CheckSuffixAndDelete ( rFillName );
     581             :     }
     582             :     else
     583             :     {
     584             :         // If we aren't trying to disambiguate, then just do a normal fill
     585      182010 :         fillNameFromId(nId, rFillName, false);
     586             :     }
     587      478882 : }
     588             : 
     589      297054 : const OUString& SwStyleNameMapper::getNameFromId(
     590             :         sal_uInt16 const nId, const OUString& rFillName, bool const bProgName)
     591             : {
     592      297054 :     sal_uInt16 nStt = 0;
     593      297054 :     const ::std::vector<OUString>* pStrArr = 0;
     594             : 
     595      297054 :     switch( (USER_FMT | COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID) & nId )
     596             :     {
     597             :     case COLL_TEXT_BITS:
     598      160680 :         if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
     599             :         {
     600      160680 :             pStrArr = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
     601      160680 :             nStt = RES_POOLCOLL_TEXT_BEGIN;
     602             :         }
     603      160680 :         break;
     604             :     case COLL_LISTS_BITS:
     605       12604 :         if( RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END )
     606             :         {
     607       12604 :             pStrArr = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
     608       12604 :             nStt = RES_POOLCOLL_LISTS_BEGIN;
     609             :         }
     610       12604 :         break;
     611             :     case COLL_EXTRA_BITS:
     612       28262 :         if( RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END )
     613             :         {
     614       28262 :             pStrArr = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
     615       28262 :             nStt = RES_POOLCOLL_EXTRA_BEGIN;
     616             :         }
     617       28262 :         break;
     618             :     case COLL_REGISTER_BITS:
     619       16178 :         if( RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END )
     620             :         {
     621       16178 :             pStrArr = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
     622       16178 :             nStt = RES_POOLCOLL_REGISTER_BEGIN;
     623             :         }
     624       16178 :         break;
     625             :     case COLL_DOC_BITS:
     626        3426 :         if( RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END )
     627             :         {
     628        3426 :             pStrArr = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
     629        3426 :             nStt = RES_POOLCOLL_DOC_BEGIN;
     630             :         }
     631        3426 :         break;
     632             :     case COLL_HTML_BITS:
     633        2364 :         if( RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END )
     634             :         {
     635        2364 :             pStrArr = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
     636        2364 :             nStt = RES_POOLCOLL_HTML_BEGIN;
     637             :         }
     638        2364 :         break;
     639             :     case POOLGRP_CHARFMT:
     640       45544 :         if( RES_POOLCHR_NORMAL_BEGIN <= nId && nId < RES_POOLCHR_NORMAL_END )
     641             :         {
     642       31338 :             pStrArr = bProgName ? &GetChrFmtProgNameArray() : &GetChrFmtUINameArray();
     643       31338 :             nStt = RES_POOLCHR_NORMAL_BEGIN;
     644             :         }
     645       14206 :         else if( RES_POOLCHR_HTML_BEGIN <= nId && nId < RES_POOLCHR_HTML_END )
     646             :         {
     647       14206 :             pStrArr = bProgName ? &GetHTMLChrFmtProgNameArray() : &GetHTMLChrFmtUINameArray();
     648       14206 :             nStt = RES_POOLCHR_HTML_BEGIN;
     649             :         }
     650       45544 :         break;
     651             :     case POOLGRP_FRAMEFMT:
     652        5816 :         if( RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END )
     653             :         {
     654        5816 :             pStrArr = bProgName ? &GetFrmFmtProgNameArray() : &GetFrmFmtUINameArray();
     655        5816 :             nStt = RES_POOLFRM_BEGIN;
     656             :         }
     657        5816 :         break;
     658             :     case POOLGRP_PAGEDESC:
     659       20918 :         if( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END )
     660             :         {
     661       20918 :             pStrArr = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
     662       20918 :             nStt = RES_POOLPAGE_BEGIN;
     663             :         }
     664       20918 :         break;
     665             :     case POOLGRP_NUMRULE:
     666        1262 :         if( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END )
     667             :         {
     668        1262 :             pStrArr = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
     669        1262 :             nStt = RES_POOLNUMRULE_BEGIN;
     670             :         }
     671        1262 :         break;
     672             :     }
     673      297054 :     return pStrArr ? pStrArr->operator[](nId - nStt) : rFillName;
     674             : }
     675             : 
     676      296742 : void SwStyleNameMapper::fillNameFromId(
     677             :         sal_uInt16 const nId, OUString& rFillName, bool bProgName)
     678             : {
     679      296742 :     rFillName = getNameFromId(nId, rFillName, bProgName);
     680      296742 : }
     681             : 
     682             : // Get the UI name from the pool ID
     683        1824 : void SwStyleNameMapper::FillUIName(sal_uInt16 const nId, OUString& rFillName)
     684             : {
     685        1824 :     fillNameFromId(nId, rFillName, false);
     686        1824 : }
     687             : 
     688             : // Get the UI name from the pool ID
     689         166 : const OUString& SwStyleNameMapper::GetUIName(
     690             :         sal_uInt16 const nId, const OUString& rName)
     691             : {
     692         166 :     return getNameFromId(nId, rName, false);
     693             : }
     694             : 
     695             : // Get the programmatic name from the pool ID
     696           0 : void SwStyleNameMapper::FillProgName(sal_uInt16 nId, OUString& rFillName)
     697             : {
     698           0 :     fillNameFromId(nId, rFillName, true);
     699           0 : }
     700             : 
     701             : // Get the programmatic name from the pool ID
     702             : const OUString&
     703         146 : SwStyleNameMapper::GetProgName(sal_uInt16 const nId, const OUString& rName)
     704             : {
     705         146 :     return getNameFromId(nId, rName, true);
     706             : }
     707             : 
     708             : // This gets the PoolId from the UI Name
     709      937766 : sal_uInt16 SwStyleNameMapper::GetPoolIdFromUIName(
     710             :         const OUString& rName, SwGetPoolIdFromName const eFlags)
     711             : {
     712      937766 :     const NameToIdHash & rHashMap = getHashTable ( eFlags, false );
     713      937766 :     NameToIdHash::const_iterator aIter = rHashMap.find(rName);
     714      937766 :     return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
     715             : }
     716             : 
     717             : // Get the Pool ID from the programmatic name
     718      559010 : sal_uInt16 SwStyleNameMapper::GetPoolIdFromProgName(
     719             :             const OUString& rName, SwGetPoolIdFromName const eFlags)
     720             : {
     721      559010 :     const NameToIdHash & rHashMap = getHashTable ( eFlags, true );
     722      559010 :     NameToIdHash::const_iterator aIter = rHashMap.find(rName);
     723      559010 :     return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
     724             : }
     725             : 
     726      286120 : const ::std::vector<OUString>& SwStyleNameMapper::GetTextUINameArray()
     727             : {
     728      286120 :     if (!pTextUINameArray)
     729             :         pTextUINameArray = lcl_NewUINameArray( RC_POOLCOLL_TEXT_BEGIN,
     730          86 :             RC_POOLCOLL_TEXT_BEGIN + (RES_POOLCOLL_TEXT_END - RES_POOLCOLL_TEXT_BEGIN) );
     731      286120 :     return *pTextUINameArray;
     732             : }
     733             : 
     734        8650 : const ::std::vector<OUString>& SwStyleNameMapper::GetListsUINameArray()
     735             : {
     736        8650 :     if (!pListsUINameArray)
     737             :         pListsUINameArray = lcl_NewUINameArray( RC_POOLCOLL_LISTS_BEGIN,
     738          86 :             RC_POOLCOLL_LISTS_BEGIN + (RES_POOLCOLL_LISTS_END - RES_POOLCOLL_LISTS_BEGIN) );
     739        8650 :     return *pListsUINameArray;
     740             : }
     741             : 
     742       21474 : const ::std::vector<OUString>& SwStyleNameMapper::GetExtraUINameArray()
     743             : {
     744       21474 :     if (!pExtraUINameArray)
     745             :         pExtraUINameArray = lcl_NewUINameArray( RC_POOLCOLL_EXTRA_BEGIN,
     746          86 :             RC_POOLCOLL_EXTRA_BEGIN + (RES_POOLCOLL_EXTRA_END - RES_POOLCOLL_EXTRA_BEGIN) );
     747       21474 :     return *pExtraUINameArray;
     748             : }
     749             : 
     750       11590 : const ::std::vector<OUString>& SwStyleNameMapper::GetRegisterUINameArray()
     751             : {
     752       11590 :     if (!pRegisterUINameArray)
     753             :         pRegisterUINameArray = lcl_NewUINameArray( RC_POOLCOLL_REGISTER_BEGIN,
     754          86 :             RC_POOLCOLL_REGISTER_BEGIN + (RES_POOLCOLL_REGISTER_END - RES_POOLCOLL_REGISTER_BEGIN) );
     755       11590 :     return *pRegisterUINameArray;
     756             : }
     757             : 
     758        4994 : const ::std::vector<OUString>& SwStyleNameMapper::GetDocUINameArray()
     759             : {
     760        4994 :     if (!pDocUINameArray)
     761             :         pDocUINameArray = lcl_NewUINameArray( RC_POOLCOLL_DOC_BEGIN,
     762          86 :             RC_POOLCOLL_DOC_BEGIN + (RES_POOLCOLL_DOC_END - RES_POOLCOLL_DOC_BEGIN) );
     763        4994 :     return *pDocUINameArray;
     764             : }
     765             : 
     766        3102 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLUINameArray()
     767             : {
     768        3102 :     if (!pHTMLUINameArray)
     769             :         pHTMLUINameArray = lcl_NewUINameArray( RC_POOLCOLL_HTML_BEGIN,
     770          86 :             RC_POOLCOLL_HTML_BEGIN + (RES_POOLCOLL_HTML_END - RES_POOLCOLL_HTML_BEGIN) );
     771        3102 :     return *pHTMLUINameArray;
     772             : }
     773             : 
     774        4748 : const ::std::vector<OUString>& SwStyleNameMapper::GetFrmFmtUINameArray()
     775             : {
     776        4748 :     if (!pFrmFmtUINameArray)
     777             :         pFrmFmtUINameArray = lcl_NewUINameArray( RC_POOLFRMFMT_BEGIN,
     778          58 :             RC_POOLFRMFMT_BEGIN + (RES_POOLFRM_END - RES_POOLFRM_BEGIN) );
     779        4748 :     return *pFrmFmtUINameArray;
     780             : }
     781             : 
     782        7294 : const ::std::vector<OUString>& SwStyleNameMapper::GetChrFmtUINameArray()
     783             : {
     784        7294 :     if (!pChrFmtUINameArray)
     785             :         pChrFmtUINameArray = lcl_NewUINameArray( RC_POOLCHRFMT_BEGIN,
     786          90 :             RC_POOLCHRFMT_BEGIN + (RES_POOLCHR_NORMAL_END - RES_POOLCHR_NORMAL_BEGIN) );
     787        7294 :     return *pChrFmtUINameArray;
     788             : }
     789             : 
     790        2720 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLChrFmtUINameArray()
     791             : {
     792        2720 :     if (!pHTMLChrFmtUINameArray)
     793             :         pHTMLChrFmtUINameArray = lcl_NewUINameArray( RC_POOLCHRFMT_HTML_BEGIN,
     794          66 :             RC_POOLCHRFMT_HTML_BEGIN + (RES_POOLCHR_HTML_END - RES_POOLCHR_HTML_BEGIN) );
     795        2720 :     return *pHTMLChrFmtUINameArray;
     796             : }
     797             : 
     798       14359 : const ::std::vector<OUString>& SwStyleNameMapper::GetPageDescUINameArray()
     799             : {
     800       14359 :     if (!pPageDescUINameArray)
     801             :         pPageDescUINameArray = lcl_NewUINameArray( RC_POOLPAGEDESC_BEGIN,
     802          68 :             RC_POOLPAGEDESC_BEGIN + (RES_POOLPAGE_END - RES_POOLPAGE_BEGIN) );
     803       14359 :     return *pPageDescUINameArray;
     804             : }
     805             : 
     806         726 : const ::std::vector<OUString>& SwStyleNameMapper::GetNumRuleUINameArray()
     807             : {
     808         726 :     if (!pNumRuleUINameArray)
     809             :         pNumRuleUINameArray = lcl_NewUINameArray( RC_POOLNUMRULE_BEGIN,
     810          64 :             RC_POOLNUMRULE_BEGIN + (RES_POOLNUMRULE_END - RES_POOLNUMRULE_BEGIN) );
     811         726 :     return *pNumRuleUINameArray;
     812             : }
     813             : 
     814       39932 : const ::std::vector<OUString>& SwStyleNameMapper::GetTextProgNameArray()
     815             : {
     816       39932 :     if (!pTextProgNameArray)
     817             :         pTextProgNameArray = lcl_NewProgNameArray(TextProgNameTable,
     818          86 :             sizeof ( TextProgNameTable ) / sizeof ( SwTableEntry ) );
     819       39932 :     return *pTextProgNameArray;
     820             : }
     821             : 
     822        5896 : const ::std::vector<OUString>& SwStyleNameMapper::GetListsProgNameArray()
     823             : {
     824        5896 :     if (!pListsProgNameArray)
     825             :         pListsProgNameArray = lcl_NewProgNameArray( ListsProgNameTable,
     826          84 :             sizeof ( ListsProgNameTable ) / sizeof ( SwTableEntry ) );
     827        5896 :     return *pListsProgNameArray;
     828             : }
     829             : 
     830       15572 : const ::std::vector<OUString>& SwStyleNameMapper::GetExtraProgNameArray()
     831             : {
     832       15572 :     if (!pExtraProgNameArray)
     833             :         pExtraProgNameArray = lcl_NewProgNameArray( ExtraProgNameTable,
     834          84 :             sizeof ( ExtraProgNameTable ) / sizeof ( SwTableEntry ) );
     835       15572 :     return *pExtraProgNameArray;
     836             : }
     837             : 
     838        6530 : const ::std::vector<OUString>& SwStyleNameMapper::GetRegisterProgNameArray()
     839             : {
     840        6530 :     if (!pRegisterProgNameArray)
     841             :         pRegisterProgNameArray = lcl_NewProgNameArray( RegisterProgNameTable,
     842          84 :             sizeof ( RegisterProgNameTable ) / sizeof ( SwTableEntry ) );
     843        6530 :     return *pRegisterProgNameArray;
     844             : }
     845             : 
     846         374 : const ::std::vector<OUString>& SwStyleNameMapper::GetDocProgNameArray()
     847             : {
     848         374 :     if (!pDocProgNameArray)
     849             :         pDocProgNameArray = lcl_NewProgNameArray( DocProgNameTable,
     850          84 :             sizeof ( DocProgNameTable ) / sizeof ( SwTableEntry ) );
     851         374 :     return *pDocProgNameArray;
     852             : }
     853             : 
     854        1260 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLProgNameArray()
     855             : {
     856        1260 :     if (!pHTMLProgNameArray)
     857             :         pHTMLProgNameArray = lcl_NewProgNameArray( HTMLProgNameTable,
     858          84 :             sizeof ( HTMLProgNameTable ) / sizeof ( SwTableEntry ) );
     859        1260 :     return *pHTMLProgNameArray;
     860             : }
     861             : 
     862        1262 : const ::std::vector<OUString>& SwStyleNameMapper::GetFrmFmtProgNameArray()
     863             : {
     864        1262 :     if (!pFrmFmtProgNameArray)
     865             :         pFrmFmtProgNameArray = lcl_NewProgNameArray( FrmFmtProgNameTable,
     866          58 :             sizeof ( FrmFmtProgNameTable ) / sizeof ( SwTableEntry ) );
     867        1262 :     return *pFrmFmtProgNameArray;
     868             : }
     869             : 
     870       25560 : const ::std::vector<OUString>& SwStyleNameMapper::GetChrFmtProgNameArray()
     871             : {
     872       25560 :     if (!pChrFmtProgNameArray)
     873             :         pChrFmtProgNameArray = lcl_NewProgNameArray( ChrFmtProgNameTable,
     874          66 :             sizeof ( ChrFmtProgNameTable ) / sizeof ( SwTableEntry ) );
     875       25560 :     return *pChrFmtProgNameArray;
     876             : }
     877             : 
     878       13002 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLChrFmtProgNameArray()
     879             : {
     880       13002 :     if (!pHTMLChrFmtProgNameArray)
     881             :         pHTMLChrFmtProgNameArray = lcl_NewProgNameArray( HTMLChrFmtProgNameTable,
     882          66 :             sizeof ( HTMLChrFmtProgNameTable ) / sizeof ( SwTableEntry ) );
     883       13002 :     return *pHTMLChrFmtProgNameArray;
     884             : }
     885             : 
     886        7302 : const ::std::vector<OUString>& SwStyleNameMapper::GetPageDescProgNameArray()
     887             : {
     888        7302 :     if (!pPageDescProgNameArray)
     889             :         pPageDescProgNameArray = lcl_NewProgNameArray( PageDescProgNameTable,
     890          68 :             sizeof ( PageDescProgNameTable ) / sizeof ( SwTableEntry ) );
     891        7302 :     return *pPageDescProgNameArray;
     892             : }
     893             : 
     894         662 : const ::std::vector<OUString>& SwStyleNameMapper::GetNumRuleProgNameArray()
     895             : {
     896         662 :     if (!pNumRuleProgNameArray)
     897             :         pNumRuleProgNameArray = lcl_NewProgNameArray( NumRuleProgNameTable,
     898          62 :             sizeof ( NumRuleProgNameTable ) / sizeof ( SwTableEntry ) );
     899         662 :     return *pNumRuleProgNameArray;
     900             : }
     901             : 
     902             : const OUString
     903         254 : SwStyleNameMapper::GetSpecialExtraProgName(const OUString& rExtraUIName)
     904             : {
     905         254 :     return lcl_GetSpecialExtraName( rExtraUIName, true );
     906             : }
     907             : 
     908             : const OUString
     909        3222 : SwStyleNameMapper::GetSpecialExtraUIName(const OUString& rExtraProgName)
     910             : {
     911        3222 :     return lcl_GetSpecialExtraName( rExtraProgName, false );
     912             : }
     913             : 
     914             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10