LCOV - code coverage report
Current view: top level - sw/source/core/doc - SwStyleNameMapper.cxx (source / functions) Hit Total Coverage
Test: commit c8344322a7af75b84dd3ca8f78b05543a976dfd5 Lines: 262 263 99.6 %
Date: 2015-06-13 12:38:46 Functions: 43 43 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             : #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::pFrameFormatUINameArray = 0,
      41             :                 *SwStyleNameMapper::pChrFormatUINameArray = 0,
      42             :                 *SwStyleNameMapper::pHTMLChrFormatUINameArray = 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::pFrameFormatProgNameArray = 0,
      54             :                 *SwStyleNameMapper::pChrFormatProgNameArray = 0,
      55             :                 *SwStyleNameMapper::pHTMLChrFormatProgNameArray = 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 FrameFormatProgNameTable [] =
     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 ChrFormatProgNameTable [] =
     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 HTMLChrFormatProgNameTable [] =
     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         584 : lcl_NewUINameArray(sal_uInt16 nStt, sal_uInt16 const nEnd)
     317             : {
     318         584 :     ::std::vector<OUString> *const pNameArray = new ::std::vector<OUString>;
     319         584 :     pNameArray->reserve(nEnd - nStt);
     320       10818 :     while( nStt < nEnd )
     321             :     {
     322        9650 :         const ResId aRId( nStt, *pSwResMgr );
     323        9650 :         pNameArray->push_back(OUString(aRId));
     324        9650 :         ++nStt;
     325             :     }
     326         584 :     return pNameArray;
     327             : }
     328             : 
     329             : static ::std::vector<OUString>*
     330         545 : lcl_NewProgNameArray(const SwTableEntry *pTable, sal_uInt8 const nCount)
     331             : {
     332         545 :     ::std::vector<OUString> *const pProgNameArray = new ::std::vector<OUString>;
     333         545 :     pProgNameArray->reserve(nCount);
     334       10228 :     while (pTable->nLength)
     335             :     {
     336             :         pProgNameArray->push_back(OUString(
     337        9138 :                 pTable->pChar, pTable->nLength, RTL_TEXTENCODING_ASCII_US));
     338        9138 :         pTable++;
     339             :     }
     340         545 :     return pProgNameArray;
     341             : }
     342             : 
     343             : static OUString
     344        3362 : lcl_GetSpecialExtraName(const OUString& rExtraName, const bool bIsUIName )
     345             : {
     346             :     const ::std::vector<OUString>& rExtraArr = bIsUIName
     347             :         ? SwStyleNameMapper::GetExtraUINameArray()
     348        3362 :         : 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        8763 :     for ( pIds = nIds; *pIds; ++pIds)
     359             :     {
     360        8620 :         if (rExtraName == rExtraArr[ *pIds ])
     361             :         {
     362             :             return bIsUIName
     363         294 :                 ? SwStyleNameMapper::GetExtraProgNameArray()[*pIds]
     364        3513 :                 : SwStyleNameMapper::GetExtraUINameArray()[*pIds];
     365             :         }
     366             :     }
     367         143 :     return rExtraName;
     368             : }
     369             : 
     370      223321 : static bool lcl_SuffixIsUser(const OUString & rString)
     371             : {
     372      223321 :     const sal_Unicode *pChar = rString.getStr();
     373      223321 :     sal_Int32 nLen = rString.getLength();
     374      223321 :     bool bRet = false;
     375      386103 :     if( nLen > 8 &&
     376      190399 :         pChar[nLen-7] == ' ' &&
     377       43222 :         pChar[nLen-6] == '(' &&
     378       30784 :         pChar[nLen-5] == 'u' &&
     379       30358 :         pChar[nLen-4] == 's' &&
     380       30358 :         pChar[nLen-3] == 'e' &&
     381       30358 :         pChar[nLen-2] == 'r' &&
     382       15179 :         pChar[nLen-1] == ')' )
     383       15179 :         bRet = true;
     384      223321 :     return bRet;
     385             : }
     386             : 
     387      171203 : static void lcl_CheckSuffixAndDelete(OUString & rString)
     388             : {
     389      171203 :     if (lcl_SuffixIsUser(rString))
     390             :     {
     391       15179 :         rString = rString.copy(0, rString.getLength() - 7);
     392             :     }
     393      171203 : }
     394             : 
     395             : typedef boost::tuple<sal_uInt16, sal_uInt16, const ::std::vector<OUString>& (*)() > NameArrayIndexTuple_t;
     396             : 
     397        1108 : static sal_uInt16 lcl_AccumulateIndexCount( sal_uInt16 nSum, const NameArrayIndexTuple_t& tuple ){
     398             :     // Return running sum + (index end) - (index start)
     399        1108 :     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     5159457 : 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     5159457 :     NameToIdHash **pHashPointer = 0;
     428             :     // Stores tuples representing (index start, index end, pointer to function which returns ref to name array)
     429     5159457 :     ::std::vector<NameArrayIndexTuple_t> vIndexes;
     430             : 
     431     5159457 :     switch ( eFlags )
     432             :     {
     433             :         default:
     434             :             assert(false && "unknown pool family");
     435             :             //fall-through
     436             :         case nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL:
     437             :         {
     438     4724634 :             pHashPointer = bProgName ? &pParaProgMap : &pParaUIMap;
     439     4724634 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_TEXT_BEGIN, RES_POOLCOLL_TEXT_END, bProgName ? &GetTextProgNameArray : &GetTextUINameArray) );
     440     4724634 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_LISTS_BEGIN, RES_POOLCOLL_LISTS_END, bProgName ? &GetListsProgNameArray : &GetListsUINameArray) );
     441     4724634 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_EXTRA_BEGIN, RES_POOLCOLL_EXTRA_END, bProgName ? &GetExtraProgNameArray : &GetExtraUINameArray) );
     442     4724634 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_REGISTER_BEGIN, RES_POOLCOLL_REGISTER_END, bProgName ? &GetRegisterProgNameArray : &GetRegisterUINameArray) );
     443     4724634 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_DOC_BEGIN, RES_POOLCOLL_DOC_END, bProgName ? &GetDocProgNameArray : &GetDocUINameArray) );
     444     4724634 :             vIndexes.push_back( boost::make_tuple(RES_POOLCOLL_HTML_BEGIN, RES_POOLCOLL_HTML_END, bProgName ? &GetHTMLProgNameArray : &GetHTMLUINameArray) );
     445             :         }
     446     4724634 :         break;
     447             :         case nsSwGetPoolIdFromName::GET_POOLID_CHRFMT:
     448             :         {
     449      246316 :             pHashPointer = bProgName ? &pCharProgMap : &pCharUIMap;
     450      246316 :             vIndexes.push_back( boost::make_tuple(RES_POOLCHR_NORMAL_BEGIN, RES_POOLCHR_NORMAL_END, bProgName ? &GetChrFormatProgNameArray : &GetChrFormatUINameArray) );
     451      246316 :             vIndexes.push_back( boost::make_tuple(RES_POOLCHR_HTML_BEGIN, RES_POOLCHR_HTML_END, bProgName ? &GetHTMLChrFormatProgNameArray : &GetHTMLChrFormatUINameArray) );
     452             :         }
     453      246316 :         break;
     454             :         case nsSwGetPoolIdFromName::GET_POOLID_FRMFMT:
     455             :         {
     456       27265 :             pHashPointer = bProgName ? &pFrameProgMap : &pFrameUIMap;
     457       27265 :             vIndexes.push_back( boost::make_tuple(RES_POOLFRM_BEGIN, RES_POOLFRM_END, bProgName ? &GetFrameFormatProgNameArray : &GetFrameFormatUINameArray) );
     458             :         }
     459       27265 :         break;
     460             :         case nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC:
     461             :         {
     462       30129 :             pHashPointer = bProgName ? &pPageProgMap : &pPageUIMap;
     463       30129 :             vIndexes.push_back( boost::make_tuple(RES_POOLPAGE_BEGIN, RES_POOLPAGE_END, bProgName ? &GetPageDescProgNameArray : &GetPageDescUINameArray) );
     464             :         }
     465       30129 :         break;
     466             :         case nsSwGetPoolIdFromName::GET_POOLID_NUMRULE:
     467             :         {
     468      131113 :             pHashPointer = bProgName ? &pNumRuleProgMap : &pNumRuleUIMap;
     469      131113 :             vIndexes.push_back( boost::make_tuple(RES_POOLNUMRULE_BEGIN, RES_POOLNUMRULE_END, bProgName ? &GetNumRuleProgNameArray : &GetNumRuleUINameArray) );
     470             :         }
     471      131113 :         break;
     472             :     }
     473             : 
     474             :     // Proceed if we have a pointer to a hash, and the hash hasn't already been populated
     475             :     assert(pHashPointer && "null hash pointer");
     476     5159457 :     if (!*pHashPointer )
     477             :     {
     478             :         // Compute the size of the hash we need to build
     479         451 :         sal_uInt16 nSize = std::accumulate( vIndexes.begin(), vIndexes.end(), 0, lcl_AccumulateIndexCount );
     480             : 
     481         451 :         NameToIdHash *pHash = new NameToIdHash( nSize );
     482        1559 :         for ( ::std::vector<NameArrayIndexTuple_t>::iterator entry = vIndexes.begin(); entry != vIndexes.end(); ++entry )
     483             :         {
     484             :             // Get a pointer to the function which will populate pStrings
     485        1108 :             const ::std::vector<OUString>& (*pStringsFetchFunc)() = boost::get<2>( *entry );
     486        1108 :             if ( pStringsFetchFunc )
     487             :             {
     488        1108 :                 const ::std::vector<OUString>& pStrings = pStringsFetchFunc();
     489             :                 sal_uInt16 nIndex, nId;
     490       19543 :                 for ( nIndex = 0, nId = boost::get<0>( *entry ) ; nId < boost::get<1>( *entry ) ; nId++, nIndex++ )
     491       18435 :                     (*pHash)[pStrings[nIndex]] = nId;
     492             :             }
     493             :         }
     494             : 
     495         451 :         *pHashPointer = pHash;
     496             :     }
     497             : 
     498             : #ifdef _NEED_TO_DEBUG_MAPPING
     499             :     static bool bTested = false;
     500             :     if ( !bTested )
     501             :     {
     502             :         bTested = true;
     503             : 
     504             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_TEXT_BEGIN, RES_POOLCOLL_TEXT_END );
     505             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_LISTS_BEGIN, RES_POOLCOLL_LISTS_END );
     506             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_EXTRA_BEGIN, RES_POOLCOLL_EXTRA_END );
     507             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_REGISTER_BEGIN, RES_POOLCOLL_REGISTER_END );
     508             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_DOC_BEGIN, RES_POOLCOLL_DOC_END );
     509             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_TXTCOLL, RES_POOLCOLL_HTML_BEGIN, RES_POOLCOLL_HTML_END );
     510             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, RES_POOLCHR_NORMAL_BEGIN, RES_POOLCHR_NORMAL_END );
     511             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_CHRFMT, RES_POOLCHR_HTML_BEGIN, RES_POOLCHR_HTML_END );
     512             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_FRMFMT, RES_POOLFRM_BEGIN, RES_POOLFRM_END );
     513             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_PAGEDESC, RES_POOLPAGE_BEGIN, RES_POOLPAGE_END );
     514             :         testNameTable( nsSwGetPoolIdFromName::GET_POOLID_NUMRULE, RES_POOLNUMRULE_BEGIN, RES_POOLNUMRULE_END );
     515             :     }
     516             : #endif
     517     5159457 :     return **pHashPointer;
     518             : }
     519             : 
     520             : // This gets the UI name from the programmatic name
     521         455 : const OUString& SwStyleNameMapper::GetUIName(const OUString& rName,
     522             :                                              SwGetPoolIdFromName const eFlags)
     523             : {
     524         455 :     sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
     525         455 :     return nId != USHRT_MAX ? GetUIName( nId, rName ) : rName;
     526             : }
     527             : 
     528             : // Get the programmatic name from the UI name
     529        1354 : const OUString& SwStyleNameMapper::GetProgName(
     530             :         const OUString& rName, SwGetPoolIdFromName const eFlags)
     531             : {
     532        1354 :     sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
     533        1354 :     return nId != USHRT_MAX ? GetProgName( nId, rName ) : rName;
     534             : }
     535             : 
     536             : // Get the programmatic name from the UI name in rName and put it into rFillName
     537      135766 : void SwStyleNameMapper::FillProgName(
     538             :         const OUString& rName, OUString& rFillName,
     539             :         SwGetPoolIdFromName const eFlags, bool const bDisambiguate)
     540             : {
     541      135766 :     sal_uInt16 nId = GetPoolIdFromUIName ( rName, eFlags );
     542      135766 :     if ( bDisambiguate && nId == USHRT_MAX )
     543             :     {
     544             :         // rName isn't in our UI name table...check if it's in the programmatic one
     545       52279 :         nId = GetPoolIdFromProgName ( rName, eFlags );
     546             : 
     547       52279 :         rFillName = rName;
     548      104558 :         if (nId == USHRT_MAX )
     549             :         {
     550             :             // It isn't ...make sure the suffix isn't already " (user)"...if it is,
     551             :             // we need to add another one
     552       52118 :             if (lcl_SuffixIsUser(rFillName))
     553           0 :                 rFillName += " (user)";
     554             :         }
     555             :         else
     556             :         {
     557             :             // It's in the programmatic name table...append suffix
     558         161 :             rFillName += " (user)";
     559             :         }
     560             :     }
     561             :     else
     562             :     {
     563             :         // If we aren't trying to disambiguate, then just do a normal fill
     564       83487 :         fillNameFromId(nId, rFillName, true);
     565             :     }
     566      135766 : }
     567             : 
     568             : // Get the UI name from the programmatic name in rName and put it into rFillName
     569      288839 : void SwStyleNameMapper::FillUIName(
     570             :         const OUString& rName, OUString& rFillName,
     571             :         SwGetPoolIdFromName const eFlags, bool const bDisambiguate)
     572             : {
     573      288839 :     sal_uInt16 nId = GetPoolIdFromProgName ( rName, eFlags );
     574      288839 :     if ( bDisambiguate && nId == USHRT_MAX )
     575             :     {
     576      171203 :         rFillName = rName;
     577             :         // rName isn't in our Prog name table...check if it has a " (user)" suffix, if so remove it
     578      171203 :         lcl_CheckSuffixAndDelete ( rFillName );
     579             :     }
     580             :     else
     581             :     {
     582             :         // If we aren't trying to disambiguate, then just do a normal fill
     583      117636 :         fillNameFromId(nId, rFillName, false);
     584             :     }
     585      288839 : }
     586             : 
     587      203703 : const OUString& SwStyleNameMapper::getNameFromId(
     588             :         sal_uInt16 const nId, const OUString& rFillName, bool const bProgName)
     589             : {
     590      203703 :     sal_uInt16 nStt = 0;
     591      203703 :     const ::std::vector<OUString>* pStrArr = 0;
     592             : 
     593      203703 :     switch( (USER_FMT | COLL_GET_RANGE_BITS | POOLGRP_NOCOLLID) & nId )
     594             :     {
     595             :     case COLL_TEXT_BITS:
     596       98093 :         if( RES_POOLCOLL_TEXT_BEGIN <= nId && nId < RES_POOLCOLL_TEXT_END )
     597             :         {
     598       98093 :             pStrArr = bProgName ? &GetTextProgNameArray() : &GetTextUINameArray();
     599       98093 :             nStt = RES_POOLCOLL_TEXT_BEGIN;
     600             :         }
     601       98093 :         break;
     602             :     case COLL_LISTS_BITS:
     603       13092 :         if( RES_POOLCOLL_LISTS_BEGIN <= nId && nId < RES_POOLCOLL_LISTS_END )
     604             :         {
     605       13092 :             pStrArr = bProgName ? &GetListsProgNameArray() : &GetListsUINameArray();
     606       13092 :             nStt = RES_POOLCOLL_LISTS_BEGIN;
     607             :         }
     608       13092 :         break;
     609             :     case COLL_EXTRA_BITS:
     610       20909 :         if( RES_POOLCOLL_EXTRA_BEGIN <= nId && nId < RES_POOLCOLL_EXTRA_END )
     611             :         {
     612       20909 :             pStrArr = bProgName ? &GetExtraProgNameArray() : &GetExtraUINameArray();
     613       20909 :             nStt = RES_POOLCOLL_EXTRA_BEGIN;
     614             :         }
     615       20909 :         break;
     616             :     case COLL_REGISTER_BITS:
     617       15050 :         if( RES_POOLCOLL_REGISTER_BEGIN <= nId && nId < RES_POOLCOLL_REGISTER_END )
     618             :         {
     619       15050 :             pStrArr = bProgName ? &GetRegisterProgNameArray() : &GetRegisterUINameArray();
     620       15050 :             nStt = RES_POOLCOLL_REGISTER_BEGIN;
     621             :         }
     622       15050 :         break;
     623             :     case COLL_DOC_BITS:
     624        1981 :         if( RES_POOLCOLL_DOC_BEGIN <= nId && nId < RES_POOLCOLL_DOC_END )
     625             :         {
     626        1981 :             pStrArr = bProgName ? &GetDocProgNameArray() : &GetDocUINameArray();
     627        1981 :             nStt = RES_POOLCOLL_DOC_BEGIN;
     628             :         }
     629        1981 :         break;
     630             :     case COLL_HTML_BITS:
     631        2733 :         if( RES_POOLCOLL_HTML_BEGIN <= nId && nId < RES_POOLCOLL_HTML_END )
     632             :         {
     633        2733 :             pStrArr = bProgName ? &GetHTMLProgNameArray() : &GetHTMLUINameArray();
     634        2733 :             nStt = RES_POOLCOLL_HTML_BEGIN;
     635             :         }
     636        2733 :         break;
     637             :     case POOLGRP_CHARFMT:
     638       30442 :         if( RES_POOLCHR_NORMAL_BEGIN <= nId && nId < RES_POOLCHR_NORMAL_END )
     639             :         {
     640       21269 :             pStrArr = bProgName ? &GetChrFormatProgNameArray() : &GetChrFormatUINameArray();
     641       21269 :             nStt = RES_POOLCHR_NORMAL_BEGIN;
     642             :         }
     643        9173 :         else if( RES_POOLCHR_HTML_BEGIN <= nId && nId < RES_POOLCHR_HTML_END )
     644             :         {
     645        9173 :             pStrArr = bProgName ? &GetHTMLChrFormatProgNameArray() : &GetHTMLChrFormatUINameArray();
     646        9173 :             nStt = RES_POOLCHR_HTML_BEGIN;
     647             :         }
     648       30442 :         break;
     649             :     case POOLGRP_FRAMEFMT:
     650        4945 :         if( RES_POOLFRM_BEGIN <= nId && nId < RES_POOLFRM_END )
     651             :         {
     652        4945 :             pStrArr = bProgName ? &GetFrameFormatProgNameArray() : &GetFrameFormatUINameArray();
     653        4945 :             nStt = RES_POOLFRM_BEGIN;
     654             :         }
     655        4945 :         break;
     656             :     case POOLGRP_PAGEDESC:
     657       14803 :         if( RES_POOLPAGE_BEGIN <= nId && nId < RES_POOLPAGE_END )
     658             :         {
     659       14803 :             pStrArr = bProgName ? &GetPageDescProgNameArray() : &GetPageDescUINameArray();
     660       14803 :             nStt = RES_POOLPAGE_BEGIN;
     661             :         }
     662       14803 :         break;
     663             :     case POOLGRP_NUMRULE:
     664        1655 :         if( RES_POOLNUMRULE_BEGIN <= nId && nId < RES_POOLNUMRULE_END )
     665             :         {
     666        1655 :             pStrArr = bProgName ? &GetNumRuleProgNameArray() : &GetNumRuleUINameArray();
     667        1655 :             nStt = RES_POOLNUMRULE_BEGIN;
     668             :         }
     669        1655 :         break;
     670             :     }
     671      203703 :     return pStrArr ? pStrArr->operator[](nId - nStt) : rFillName;
     672             : }
     673             : 
     674      202478 : void SwStyleNameMapper::fillNameFromId(
     675             :         sal_uInt16 const nId, OUString& rFillName, bool bProgName)
     676             : {
     677      202478 :     rFillName = getNameFromId(nId, rFillName, bProgName);
     678      202478 : }
     679             : 
     680             : // Get the UI name from the pool ID
     681        1354 : void SwStyleNameMapper::FillUIName(sal_uInt16 const nId, OUString& rFillName)
     682             : {
     683        1354 :     fillNameFromId(nId, rFillName, false);
     684        1354 : }
     685             : 
     686             : // Get the UI name from the pool ID
     687        1050 : const OUString& SwStyleNameMapper::GetUIName(
     688             :         sal_uInt16 const nId, const OUString& rName)
     689             : {
     690        1050 :     return getNameFromId(nId, rName, false);
     691             : }
     692             : 
     693             : // Get the programmatic name from the pool ID
     694           1 : void SwStyleNameMapper::FillProgName(sal_uInt16 nId, OUString& rFillName)
     695             : {
     696           1 :     fillNameFromId(nId, rFillName, true);
     697           1 : }
     698             : 
     699             : // Get the programmatic name from the pool ID
     700             : const OUString&
     701         175 : SwStyleNameMapper::GetProgName(sal_uInt16 const nId, const OUString& rName)
     702             : {
     703         175 :     return getNameFromId(nId, rName, true);
     704             : }
     705             : 
     706             : // This gets the PoolId from the UI Name
     707     4817882 : sal_uInt16 SwStyleNameMapper::GetPoolIdFromUIName(
     708             :         const OUString& rName, SwGetPoolIdFromName const eFlags)
     709             : {
     710     4817882 :     const NameToIdHash & rHashMap = getHashTable ( eFlags, false );
     711     4817882 :     NameToIdHash::const_iterator aIter = rHashMap.find(rName);
     712     4817882 :     return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
     713             : }
     714             : 
     715             : // Get the Pool ID from the programmatic name
     716      341575 : sal_uInt16 SwStyleNameMapper::GetPoolIdFromProgName(
     717             :             const OUString& rName, SwGetPoolIdFromName const eFlags)
     718             : {
     719      341575 :     const NameToIdHash & rHashMap = getHashTable ( eFlags, true );
     720      341575 :     NameToIdHash::const_iterator aIter = rHashMap.find(rName);
     721      341575 :     return aIter != rHashMap.end() ? (*aIter).second : USHRT_MAX;
     722             : }
     723             : 
     724      247547 : const ::std::vector<OUString>& SwStyleNameMapper::GetTextUINameArray()
     725             : {
     726      247547 :     if (!pTextUINameArray)
     727             :         pTextUINameArray = lcl_NewUINameArray( RC_POOLCOLL_TEXT_BEGIN,
     728          58 :             RC_POOLCOLL_TEXT_BEGIN + (RES_POOLCOLL_TEXT_END - RES_POOLCOLL_TEXT_BEGIN) );
     729      247547 :     return *pTextUINameArray;
     730             : }
     731             : 
     732       41717 : const ::std::vector<OUString>& SwStyleNameMapper::GetListsUINameArray()
     733             : {
     734       41717 :     if (!pListsUINameArray)
     735             :         pListsUINameArray = lcl_NewUINameArray( RC_POOLCOLL_LISTS_BEGIN,
     736          58 :             RC_POOLCOLL_LISTS_BEGIN + (RES_POOLCOLL_LISTS_END - RES_POOLCOLL_LISTS_BEGIN) );
     737       41717 :     return *pListsUINameArray;
     738             : }
     739             : 
     740       50516 : const ::std::vector<OUString>& SwStyleNameMapper::GetExtraUINameArray()
     741             : {
     742       50516 :     if (!pExtraUINameArray)
     743             :         pExtraUINameArray = lcl_NewUINameArray( RC_POOLCOLL_EXTRA_BEGIN,
     744          58 :             RC_POOLCOLL_EXTRA_BEGIN + (RES_POOLCOLL_EXTRA_END - RES_POOLCOLL_EXTRA_BEGIN) );
     745       50516 :     return *pExtraUINameArray;
     746             : }
     747             : 
     748       43452 : const ::std::vector<OUString>& SwStyleNameMapper::GetRegisterUINameArray()
     749             : {
     750       43452 :     if (!pRegisterUINameArray)
     751             :         pRegisterUINameArray = lcl_NewUINameArray( RC_POOLCOLL_REGISTER_BEGIN,
     752          58 :             RC_POOLCOLL_REGISTER_BEGIN + (RES_POOLCOLL_REGISTER_END - RES_POOLCOLL_REGISTER_BEGIN) );
     753       43452 :     return *pRegisterUINameArray;
     754             : }
     755             : 
     756       37209 : const ::std::vector<OUString>& SwStyleNameMapper::GetDocUINameArray()
     757             : {
     758       37209 :     if (!pDocUINameArray)
     759             :         pDocUINameArray = lcl_NewUINameArray( RC_POOLCOLL_DOC_BEGIN,
     760          58 :             RC_POOLCOLL_DOC_BEGIN + (RES_POOLCOLL_DOC_END - RES_POOLCOLL_DOC_BEGIN) );
     761       37209 :     return *pDocUINameArray;
     762             : }
     763             : 
     764       36521 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLUINameArray()
     765             : {
     766       36521 :     if (!pHTMLUINameArray)
     767             :         pHTMLUINameArray = lcl_NewUINameArray( RC_POOLCOLL_HTML_BEGIN,
     768          58 :             RC_POOLCOLL_HTML_BEGIN + (RES_POOLCOLL_HTML_END - RES_POOLCOLL_HTML_BEGIN) );
     769       36521 :     return *pHTMLUINameArray;
     770             : }
     771             : 
     772        6002 : const ::std::vector<OUString>& SwStyleNameMapper::GetFrameFormatUINameArray()
     773             : {
     774        6002 :     if (!pFrameFormatUINameArray)
     775             :         pFrameFormatUINameArray = lcl_NewUINameArray( RC_POOLFRMFMT_BEGIN,
     776          53 :             RC_POOLFRMFMT_BEGIN + (RES_POOLFRM_END - RES_POOLFRM_BEGIN) );
     777        6002 :     return *pFrameFormatUINameArray;
     778             : }
     779             : 
     780        6056 : const ::std::vector<OUString>& SwStyleNameMapper::GetChrFormatUINameArray()
     781             : {
     782        6056 :     if (!pChrFormatUINameArray)
     783             :         pChrFormatUINameArray = lcl_NewUINameArray( RC_POOLCHRFMT_BEGIN,
     784          59 :             RC_POOLCHRFMT_BEGIN + (RES_POOLCHR_NORMAL_END - RES_POOLCHR_NORMAL_BEGIN) );
     785        6056 :     return *pChrFormatUINameArray;
     786             : }
     787             : 
     788        1997 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLChrFormatUINameArray()
     789             : {
     790        1997 :     if (!pHTMLChrFormatUINameArray)
     791             :         pHTMLChrFormatUINameArray = lcl_NewUINameArray( RC_POOLCHRFMT_HTML_BEGIN,
     792          40 :             RC_POOLCHRFMT_HTML_BEGIN + (RES_POOLCHR_HTML_END - RES_POOLCHR_HTML_BEGIN) );
     793        1997 :     return *pHTMLChrFormatUINameArray;
     794             : }
     795             : 
     796        9863 : const ::std::vector<OUString>& SwStyleNameMapper::GetPageDescUINameArray()
     797             : {
     798        9863 :     if (!pPageDescUINameArray)
     799             :         pPageDescUINameArray = lcl_NewUINameArray( RC_POOLPAGEDESC_BEGIN,
     800          43 :             RC_POOLPAGEDESC_BEGIN + (RES_POOLPAGE_END - RES_POOLPAGE_BEGIN) );
     801        9863 :     return *pPageDescUINameArray;
     802             : }
     803             : 
     804         946 : const ::std::vector<OUString>& SwStyleNameMapper::GetNumRuleUINameArray()
     805             : {
     806         946 :     if (!pNumRuleUINameArray)
     807             :         pNumRuleUINameArray = lcl_NewUINameArray( RC_POOLNUMRULE_BEGIN,
     808          41 :             RC_POOLNUMRULE_BEGIN + (RES_POOLNUMRULE_END - RES_POOLNUMRULE_BEGIN) );
     809         946 :     return *pNumRuleUINameArray;
     810             : }
     811             : 
     812       26481 : const ::std::vector<OUString>& SwStyleNameMapper::GetTextProgNameArray()
     813             : {
     814       26481 :     if (!pTextProgNameArray)
     815             :         pTextProgNameArray = lcl_NewProgNameArray(TextProgNameTable,
     816          58 :             sizeof ( TextProgNameTable ) / sizeof ( SwTableEntry ) );
     817       26481 :     return *pTextProgNameArray;
     818             : }
     819             : 
     820        6993 : const ::std::vector<OUString>& SwStyleNameMapper::GetListsProgNameArray()
     821             : {
     822        6993 :     if (!pListsProgNameArray)
     823             :         pListsProgNameArray = lcl_NewProgNameArray( ListsProgNameTable,
     824          57 :             sizeof ( ListsProgNameTable ) / sizeof ( SwTableEntry ) );
     825        6993 :     return *pListsProgNameArray;
     826             : }
     827             : 
     828       12659 : const ::std::vector<OUString>& SwStyleNameMapper::GetExtraProgNameArray()
     829             : {
     830       12659 :     if (!pExtraProgNameArray)
     831             :         pExtraProgNameArray = lcl_NewProgNameArray( ExtraProgNameTable,
     832          57 :             sizeof ( ExtraProgNameTable ) / sizeof ( SwTableEntry ) );
     833       12659 :     return *pExtraProgNameArray;
     834             : }
     835             : 
     836        7216 : const ::std::vector<OUString>& SwStyleNameMapper::GetRegisterProgNameArray()
     837             : {
     838        7216 :     if (!pRegisterProgNameArray)
     839             :         pRegisterProgNameArray = lcl_NewProgNameArray( RegisterProgNameTable,
     840          57 :             sizeof ( RegisterProgNameTable ) / sizeof ( SwTableEntry ) );
     841        7216 :     return *pRegisterProgNameArray;
     842             : }
     843             : 
     844         390 : const ::std::vector<OUString>& SwStyleNameMapper::GetDocProgNameArray()
     845             : {
     846         390 :     if (!pDocProgNameArray)
     847             :         pDocProgNameArray = lcl_NewProgNameArray( DocProgNameTable,
     848          57 :             sizeof ( DocProgNameTable ) / sizeof ( SwTableEntry ) );
     849         390 :     return *pDocProgNameArray;
     850             : }
     851             : 
     852        1927 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLProgNameArray()
     853             : {
     854        1927 :     if (!pHTMLProgNameArray)
     855             :         pHTMLProgNameArray = lcl_NewProgNameArray( HTMLProgNameTable,
     856          57 :             sizeof ( HTMLProgNameTable ) / sizeof ( SwTableEntry ) );
     857        1927 :     return *pHTMLProgNameArray;
     858             : }
     859             : 
     860        1481 : const ::std::vector<OUString>& SwStyleNameMapper::GetFrameFormatProgNameArray()
     861             : {
     862        1481 :     if (!pFrameFormatProgNameArray)
     863             :         pFrameFormatProgNameArray = lcl_NewProgNameArray( FrameFormatProgNameTable,
     864          36 :             sizeof ( FrameFormatProgNameTable ) / sizeof ( SwTableEntry ) );
     865        1481 :     return *pFrameFormatProgNameArray;
     866             : }
     867             : 
     868       16115 : const ::std::vector<OUString>& SwStyleNameMapper::GetChrFormatProgNameArray()
     869             : {
     870       16115 :     if (!pChrFormatProgNameArray)
     871             :         pChrFormatProgNameArray = lcl_NewProgNameArray( ChrFormatProgNameTable,
     872          42 :             sizeof ( ChrFormatProgNameTable ) / sizeof ( SwTableEntry ) );
     873       16115 :     return *pChrFormatProgNameArray;
     874             : }
     875             : 
     876        8078 : const ::std::vector<OUString>& SwStyleNameMapper::GetHTMLChrFormatProgNameArray()
     877             : {
     878        8078 :     if (!pHTMLChrFormatProgNameArray)
     879             :         pHTMLChrFormatProgNameArray = lcl_NewProgNameArray( HTMLChrFormatProgNameTable,
     880          42 :             sizeof ( HTMLChrFormatProgNameTable ) / sizeof ( SwTableEntry ) );
     881        8078 :     return *pHTMLChrFormatProgNameArray;
     882             : }
     883             : 
     884        5438 : const ::std::vector<OUString>& SwStyleNameMapper::GetPageDescProgNameArray()
     885             : {
     886        5438 :     if (!pPageDescProgNameArray)
     887             :         pPageDescProgNameArray = lcl_NewProgNameArray( PageDescProgNameTable,
     888          43 :             sizeof ( PageDescProgNameTable ) / sizeof ( SwTableEntry ) );
     889        5438 :     return *pPageDescProgNameArray;
     890             : }
     891             : 
     892         789 : const ::std::vector<OUString>& SwStyleNameMapper::GetNumRuleProgNameArray()
     893             : {
     894         789 :     if (!pNumRuleProgNameArray)
     895             :         pNumRuleProgNameArray = lcl_NewProgNameArray( NumRuleProgNameTable,
     896          39 :             sizeof ( NumRuleProgNameTable ) / sizeof ( SwTableEntry ) );
     897         789 :     return *pNumRuleProgNameArray;
     898             : }
     899             : 
     900             : const OUString
     901         296 : SwStyleNameMapper::GetSpecialExtraProgName(const OUString& rExtraUIName)
     902             : {
     903         296 :     return lcl_GetSpecialExtraName( rExtraUIName, true );
     904             : }
     905             : 
     906             : const OUString
     907        3066 : SwStyleNameMapper::GetSpecialExtraUIName(const OUString& rExtraProgName)
     908             : {
     909        3066 :     return lcl_GetSpecialExtraName( rExtraProgName, false );
     910             : }
     911             : 
     912             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.11