LCOV - code coverage report
Current view: top level - lotuswordpro/source/filter - lwpobjfactory.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 153 263 58.2 %
Date: 2012-08-25 Functions: 8 8 100.0 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 195 586 33.3 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  *  The Contents of this file are made available subject to the terms of
       5                 :            :  *  either of the following licenses
       6                 :            :  *
       7                 :            :  *         - GNU Lesser General Public License Version 2.1
       8                 :            :  *         - Sun Industry Standards Source License Version 1.1
       9                 :            :  *
      10                 :            :  *  Sun Microsystems Inc., October, 2000
      11                 :            :  *
      12                 :            :  *  GNU Lesser General Public License Version 2.1
      13                 :            :  *  =============================================
      14                 :            :  *  Copyright 2000 by Sun Microsystems, Inc.
      15                 :            :  *  901 San Antonio Road, Palo Alto, CA 94303, USA
      16                 :            :  *
      17                 :            :  *  This library is free software; you can redistribute it and/or
      18                 :            :  *  modify it under the terms of the GNU Lesser General Public
      19                 :            :  *  License version 2.1, as published by the Free Software Foundation.
      20                 :            :  *
      21                 :            :  *  This library is distributed in the hope that it will be useful,
      22                 :            :  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
      23                 :            :  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      24                 :            :  *  Lesser General Public License for more details.
      25                 :            :  *
      26                 :            :  *  You should have received a copy of the GNU Lesser General Public
      27                 :            :  *  License along with this library; if not, write to the Free Software
      28                 :            :  *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
      29                 :            :  *  MA  02111-1307  USA
      30                 :            :  *
      31                 :            :  *
      32                 :            :  *  Sun Industry Standards Source License Version 1.1
      33                 :            :  *  =================================================
      34                 :            :  *  The contents of this file are subject to the Sun Industry Standards
      35                 :            :  *  Source License Version 1.1 (the "License"); You may not use this file
      36                 :            :  *  except in compliance with the License. You may obtain a copy of the
      37                 :            :  *  License at http://www.openoffice.org/license.html.
      38                 :            :  *
      39                 :            :  *  Software provided under this License is provided on an "AS IS" basis,
      40                 :            :  *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
      41                 :            :  *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
      42                 :            :  *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
      43                 :            :  *  See the License for the specific provisions governing your rights and
      44                 :            :  *  obligations concerning the Software.
      45                 :            :  *
      46                 :            :  *  The Initial Developer of the Original Code is: IBM Corporation
      47                 :            :  *
      48                 :            :  *  Copyright: 2008 by IBM Corporation
      49                 :            :  *
      50                 :            :  *  All Rights Reserved.
      51                 :            :  *
      52                 :            :  *  Contributor(s): _______________________________________
      53                 :            :  *
      54                 :            :  *
      55                 :            :  ************************************************************************/
      56                 :            : /*************************************************************************
      57                 :            :  * @file
      58                 :            :  *  For LWP filter architecture prototype
      59                 :            :  ************************************************************************/
      60                 :            : /*************************************************************************
      61                 :            :  * Change History
      62                 :            :  Jan 2005           Created
      63                 :            :  ************************************************************************/
      64                 :            : 
      65                 :            : #include "lwpobjfactory.hxx"
      66                 :            : #include "lwpdefs.hxx"
      67                 :            : #include "lwpdoc.hxx"
      68                 :            : #include "lwpstory.hxx"
      69                 :            : #include "lwplayout.hxx"
      70                 :            : #include "lwppara.hxx"
      71                 :            : #include "lwpparastyle.hxx"
      72                 :            : #include "lwpcharacterstyle.hxx"
      73                 :            : #include "lwppiece.hxx"
      74                 :            : #include "lwptabrack.hxx"
      75                 :            : #include "lwpsilverbullet.hxx"
      76                 :            : #include "lwpdivinfo.hxx"
      77                 :            : #include "lwpholder.hxx"
      78                 :            : #include "lwpdivopts.hxx"
      79                 :            : #include "lwplaypiece.hxx"
      80                 :            : #include "lwpsection.hxx"
      81                 :            : #include "lwppagehint.hxx"
      82                 :            : #include "lwpoleobject.hxx"
      83                 :            : #include "lwpgrfobj.hxx"
      84                 :            : #include "lwptable.hxx"
      85                 :            : #include "lwptblcell.hxx"
      86                 :            : #include "lwpmarker.hxx"
      87                 :            : #include "lwpproplist.hxx"
      88                 :            : #include <new>
      89                 :            : #include "lwpframelayout.hxx"
      90                 :            : #include "lwptablelayout.hxx"
      91                 :            : #include "lwppagelayout.hxx"
      92                 :            : #include "lwptblformula.hxx"
      93                 :            : #include "lwpvpointer.hxx"
      94                 :            : #include "lwpfootnote.hxx"
      95                 :            : #include "lwpnumericfmt.hxx"
      96                 :            : #include "lwpfnlayout.hxx"
      97                 :            : #include "lwptoc.hxx"
      98                 :            : #include "lwpdocdata.hxx"
      99                 :            : #include "lwpnotes.hxx"
     100                 :            : #include "lwpverdocument.hxx"
     101                 :            : 
     102                 :            : //LwpObjectFactory* LwpObjectFactory::m_pMgr = NULL;
     103                 :            : 
     104                 :         18 : LwpObjectFactory::LwpObjectFactory(LwpSvStream* pSvStream)
     105 [ +  - ][ +  - ]:         18 :     : m_nNumObjs(0), m_pSvStream(pSvStream)
     106                 :            : {
     107         [ +  - ]:         18 :     m_IdToObjList.clear();
     108                 :         18 : }
     109                 :            : 
     110         [ +  - ]:         18 : LwpObjectFactory::~LwpObjectFactory()
     111                 :            : {
     112         [ +  + ]:         18 :     if(!m_IdToObjList.empty())
     113         [ +  - ]:         12 :         ClearObjectMap();
     114                 :         18 : }
     115                 :            : 
     116                 :            : /**
     117                 :            :  * @descr       clear object map and delete all objects
     118                 :            : */
     119                 :         12 : void LwpObjectFactory::ClearObjectMap()
     120                 :            : {
     121         [ +  - ]:         12 :     LwpIdToObjMap::iterator it = m_IdToObjList.begin();
     122 [ +  - ][ +  + ]:       2316 :     while( it!=m_IdToObjList.end() )
     123                 :            :     {
     124 [ +  - ][ +  - ]:       2304 :         delete it->second;
                 [ +  - ]
     125         [ +  - ]:       2304 :         it->second = NULL;
     126                 :       2304 :         ++it;
     127                 :            :     }
     128         [ +  - ]:         12 :     m_IdToObjList.clear();
     129                 :         12 : }
     130                 :            : /**
     131                 :            :  * @descr       read the index manager
     132                 :            : */
     133                 :         18 : void LwpObjectFactory::ReadIndex(LwpSvStream* pStrm)
     134                 :            : {
     135                 :         18 :     m_IndexMgr.Read(pStrm);
     136                 :         18 : }
     137                 :            : 
     138                 :            : /**
     139                 :            :  * @descr       create all kinds of objects except lwp7
     140                 :            : */
     141                 :       2760 : LwpObject* LwpObjectFactory::CreateObject(sal_uInt32 type, LwpObjectHeader &objHdr)
     142                 :            : {
     143                 :       2760 :     LwpObject* newObj = NULL;
     144                 :       2760 :     m_nNumObjs++;
     145                 :            :     assert(type<300);
     146   [ +  +  +  -  :       2760 :     switch(type)
          +  +  +  +  +  
          +  +  +  +  +  
          +  +  +  -  +  
          -  -  +  +  -  
          +  +  +  +  -  
          -  +  +  +  +  
          +  +  +  -  -  
          -  -  +  +  +  
          +  +  +  +  +  
          +  +  +  +  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  +  -  -  +  
          +  +  +  +  +  
          +  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
          -  -  -  -  -  
             -  -  -  +  
                      - ]
     147                 :            :     {
     148                 :            :         case VO_DOCUMENT:
     149                 :            :         {
     150 [ +  - ][ +  + ]:         30 :             newObj = new LwpDocument(objHdr, m_pSvStream);
     151                 :         27 :             break;
     152                 :            :         }
     153                 :            :         case VO_DOCSOCK:
     154                 :            :         {
     155 [ +  - ][ +  - ]:         24 :             newObj = new LwpDocSock(objHdr, m_pSvStream);
     156                 :         24 :             break;
     157                 :            :         }
     158                 :            :         case VO_DIVISIONINFO:
     159                 :            :         {
     160 [ +  - ][ +  - ]:         24 :             newObj = new LwpDivInfo(objHdr, m_pSvStream);
     161                 :         24 :             break;
     162                 :            :         }
     163                 :            :         case VO_DIVOPTS:
     164                 :            :         {
     165 [ #  # ][ #  # ]:          0 :             newObj = new LwpDivisionOptions(objHdr, m_pSvStream);
     166                 :          0 :             break;
     167                 :            :         }
     168                 :            :         case VO_HEADCONTENT:
     169                 :            :         {
     170 [ +  - ][ +  - ]:         24 :             newObj = new LwpHeadContent(objHdr, m_pSvStream);
     171                 :         24 :             break;
     172                 :            :         }
     173                 :            :         case VO_HEADLAYOUT:
     174                 :            :         {
     175 [ +  - ][ +  - ]:         96 :             newObj = new LwpHeadLayout(objHdr, m_pSvStream);
     176                 :         96 :             break;
     177                 :            :         }
     178                 :            :         case VO_PAGELAYOUT:
     179                 :            :         {
     180 [ +  - ][ +  - ]:         24 :             newObj = new LwpPageLayout(objHdr, m_pSvStream);
     181                 :         24 :             break;
     182                 :            :         }
     183                 :            :         case VO_STORY:
     184                 :            :         {
     185 [ +  - ][ +  - ]:        153 :             newObj = new LwpStory(objHdr, m_pSvStream);
     186                 :        153 :             break;
     187                 :            :         }
     188                 :            :         case VO_PARA:
     189                 :            :         {
     190 [ +  - ][ +  - ]:        795 :             newObj = new LwpPara(objHdr, m_pSvStream);
     191                 :        795 :             break;
     192                 :            :         }
     193                 :            :         case VO_HEADERLAYOUT:
     194                 :            :         {
     195 [ +  - ][ +  - ]:         36 :             newObj = new LwpHeaderLayout(objHdr, m_pSvStream);
     196                 :         36 :             break;
     197                 :            :         }
     198                 :            :         case VO_FOOTERLAYOUT:
     199                 :            :         {
     200 [ +  - ][ +  - ]:         36 :             newObj = new LwpFooterLayout(objHdr, m_pSvStream);
     201                 :         36 :             break;
     202                 :            :         }
     203                 :            :         case VO_FRAMELAYOUT:
     204                 :            :         {
     205 [ +  - ][ +  - ]:         96 :             newObj = new LwpFrameLayout(objHdr, m_pSvStream);
     206                 :         96 :             break;
     207                 :            :         }
     208                 :            :         case VO_LAYOUTGEOMETRY:
     209                 :            :         {
     210 [ +  - ][ +  - ]:        138 :             newObj = new LwpLayoutGeometry(objHdr, m_pSvStream);
     211                 :        138 :             break;
     212                 :            :         }
     213                 :            :         case VO_LAYOUTSCALE:
     214                 :            :         {
     215 [ +  - ][ +  - ]:         42 :             newObj = new LwpLayoutScale(objHdr, m_pSvStream);
     216                 :         42 :             break;
     217                 :            :         }
     218                 :            :         case VO_LAYOUTMARGINS:
     219                 :            :         {
     220 [ +  - ][ +  - ]:        108 :             newObj = new LwpLayoutMargins(objHdr, m_pSvStream);
     221                 :        108 :             break;
     222                 :            :         }
     223                 :            :         case VO_LAYOUTBORDERSTUFF:
     224                 :            :         {
     225 [ +  - ][ +  - ]:         30 :             newObj = new LwpLayoutBorder(objHdr, m_pSvStream);
     226                 :         30 :             break;
     227                 :            :         }
     228                 :            :         case VO_LAYOUTBACKGROUNDSTUFF:
     229                 :            :         {
     230 [ +  - ][ +  - ]:         24 :             newObj = new LwpLayoutBackground(objHdr, m_pSvStream);
     231                 :         24 :             break;
     232                 :            :         }
     233                 :            :         case VO_LAYOUTEXTERNALBORDERSTUFF:
     234                 :            :         {
     235 [ #  # ][ #  # ]:          0 :             newObj = new LwpLayoutExternalBorder(objHdr, m_pSvStream);
     236                 :          0 :             break;
     237                 :            :         }
     238                 :            :         case VO_LAYOUTCOLUMNS:
     239                 :            :         {
     240 [ +  - ][ +  - ]:         36 :             newObj = new LwpLayoutColumns(objHdr, m_pSvStream);
     241                 :         36 :             break;
     242                 :            :         }
     243                 :            :         case VO_LAYOUTGUTTERSTUFF:
     244                 :            :         {
     245 [ #  # ][ #  # ]:          0 :             newObj = new LwpLayoutGutters(objHdr, m_pSvStream);
     246                 :          0 :             break;
     247                 :            :         }
     248                 :            :         case VO_LAYOUTJOINSTUFF:
     249                 :            :         {
     250 [ #  # ][ #  # ]:          0 :             newObj = new LwpLayoutJoins(objHdr, m_pSvStream);
     251                 :          0 :             break;
     252                 :            :         }
     253                 :            :         case VO_LAYOUTSHADOW:
     254                 :            :         {
     255 [ +  - ][ +  - ]:         12 :             newObj = new LwpLayoutShadow(objHdr, m_pSvStream);
     256                 :         12 :             break;
     257                 :            :         }
     258                 :            :         // 01/12/2005
     259                 :            :         case VO_PARASTYLE:
     260                 :            :         {
     261 [ +  - ][ +  - ]:        204 :             newObj = new LwpParaStyle(objHdr, m_pSvStream);
     262                 :        204 :             break;
     263                 :            :         }
     264                 :            :         case VO_CHARACTERSTYLE:
     265                 :            :         {
     266 [ #  # ][ #  # ]:          0 :             newObj = new LwpCharacterStyle(objHdr, m_pSvStream);
     267                 :          0 :             break;
     268                 :            :         }
     269                 :            :         case VO_SILVERBULLET:
     270                 :            :         {
     271 [ +  - ][ +  - ]:         39 :             newObj = new LwpSilverBullet(objHdr, m_pSvStream);
     272                 :         39 :             break;
     273                 :            :         }
     274                 :            :         case VO_ALIGNMENTPIECE:
     275                 :            :         {
     276 [ +  - ][ +  - ]:         51 :             newObj = new LwpAlignmentPiece(objHdr, m_pSvStream);
     277                 :         51 :             break;
     278                 :            :         }
     279                 :            :         case VO_INDENTPIECE:
     280                 :            :         {
     281 [ +  - ][ +  - ]:         72 :             newObj = new LwpIndentPiece(objHdr, m_pSvStream);
     282                 :         72 :             break;
     283                 :            :         }
     284                 :            :         case VO_SPACINGPIECE:
     285                 :            :         {
     286 [ +  - ][ +  - ]:         78 :             newObj = new LwpSpacingPiece(objHdr, m_pSvStream);
     287                 :         78 :             break;
     288                 :            :         }
     289                 :            :         case VO_CHARBORDERPIECE:
     290                 :            :         {
     291 [ #  # ][ #  # ]:          0 :             newObj = new LwpCharacterBorderPiece(objHdr, m_pSvStream);
     292                 :          0 :             break;
     293                 :            :         }
     294                 :            :         case VO_AMIKAKEPIECE:
     295                 :            :         {
     296 [ #  # ][ #  # ]:          0 :             newObj = new LwpAmikakePiece(objHdr, m_pSvStream);
     297                 :          0 :             break;
     298                 :            :         }
     299                 :            :         // end
     300                 :            : 
     301                 :            :         case VO_HEADHOLDER:
     302                 :            :         {
     303 [ +  - ][ +  - ]:         51 :             newObj = new LwpDLVListHeadHolder(objHdr, m_pSvStream);
     304                 :         51 :             break;
     305                 :            :         }
     306                 :            : 
     307                 :            :         // start
     308                 :            :         case VO_PARABORDERPIECE:
     309                 :            :         {
     310 [ +  - ][ +  - ]:         18 :             newObj = new LwpParaBorderPiece(objHdr, m_pSvStream);
     311                 :         18 :             break;
     312                 :            :         }
     313                 :            :         case VO_BREAKSPIECE:
     314                 :            :         {
     315 [ +  - ][ +  - ]:         60 :             newObj = new LwpBreaksPiece(objHdr, m_pSvStream);
     316                 :         60 :             break;
     317                 :            :         }
     318                 :            :         case VO_NUMBERINGPIECE:
     319                 :            :         {
     320 [ +  - ][ +  - ]:         15 :             newObj = new LwpNumberingPiece(objHdr, m_pSvStream);
     321                 :         15 :             break;
     322                 :            :         }
     323                 :            :         case VO_TABRACK:
     324                 :            :         {
     325 [ +  - ][ +  - ]:          9 :             newObj = new LwpTabRack(objHdr, m_pSvStream);
     326                 :          9 :             break;
     327                 :            :         }
     328                 :            :         case VO_TABPIECE:
     329                 :            :         {
     330 [ +  - ][ +  - ]:         12 :             newObj = new LwpTabPiece(objHdr, m_pSvStream);
     331                 :         12 :             break;
     332                 :            :         }
     333                 :            :         case VO_PARABACKGROUNDPIECE:    //perhaps wrong.
     334                 :            :         {
     335 [ +  - ][ +  - ]:          9 :             newObj = new LwpBackgroundPiece(objHdr, m_pSvStream);
     336                 :          9 :             break;
     337                 :            :         }
     338                 :            :         // end.
     339                 :            :         case VO_SECTION:
     340                 :            :         {
     341 [ #  # ][ #  # ]:          0 :             newObj = new LwpSection(objHdr, m_pSvStream);
     342                 :          0 :             break;
     343                 :            :         }
     344                 :            :         case VO_INDEXSECTION:
     345                 :            :         {
     346 [ #  # ][ #  # ]:          0 :             newObj = new LwpIndexSection(objHdr, m_pSvStream);
     347                 :          0 :             break;
     348                 :            :         }
     349                 :            :         case VO_HEADTAILHOLDER:
     350                 :            :         {
     351 [ #  # ][ #  # ]:          0 :             newObj = new LwpDLVListHeadTailHolder(objHdr, m_pSvStream);
     352                 :          0 :             break;
     353                 :            :         }
     354                 :            :         case VO_PAGEHINT:
     355                 :            :         {
     356 [ #  # ][ #  # ]:          0 :             newObj = new LwpPageHint(objHdr, m_pSvStream);
     357                 :          0 :             break;
     358                 :            :         }
     359                 :            :         case VO_OLEOBJECT:
     360                 :            :         {
     361 [ +  - ][ +  - ]:         54 :             newObj = new LwpOleObject(objHdr, m_pSvStream);
     362                 :         54 :             break;
     363                 :            :         }
     364                 :            :         //
     365                 :            :         case VO_GRAPHIC:
     366                 :            :         {
     367 [ +  - ][ +  - ]:         21 :             newObj = new LwpGraphicObject(objHdr, m_pSvStream);
     368                 :         21 :             break;
     369                 :            :         }
     370                 :            :         case VO_DOCDATA:
     371                 :            :         {
     372 [ +  - ][ +  - ]:         12 :             newObj = new LwpDocData(objHdr, m_pSvStream);
     373                 :         12 :             break;
     374                 :            :         }
     375                 :            :         //
     376                 :            :         case VO_DROPCAPLAYOUT:
     377                 :            :         {
     378 [ +  - ][ +  - ]:         12 :             newObj = new LwpDropcapLayout(objHdr, m_pSvStream);
     379                 :         12 :             break;
     380                 :            :         }
     381                 :            :         case VO_LAYOUTRELATIVITY:
     382                 :            :         {
     383 [ +  - ][ +  - ]:        132 :             newObj = new LwpLayoutRelativity(objHdr, m_pSvStream);
     384                 :        132 :             break;
     385                 :            :         }
     386                 :            :         //  for table
     387                 :            :         case VO_TABLE:
     388                 :            :         {
     389 [ +  - ][ +  - ]:          3 :             newObj = new LwpTable(objHdr, m_pSvStream);
     390                 :          3 :             break;
     391                 :            :         }
     392                 :            :         case VO_TABLELAYOUT:
     393                 :            :         {
     394 [ +  - ][ +  - ]:          3 :             newObj = new LwpTableLayout(objHdr, m_pSvStream);
     395                 :          3 :             break;
     396                 :            :         }
     397                 :            :         case VO_SUPERTABLE:
     398                 :            :         {
     399 [ +  - ][ +  - ]:          3 :             newObj = new LwpSuperTable(objHdr, m_pSvStream);
     400                 :          3 :             break;
     401                 :            :         }
     402                 :            :         case VO_SUPERTABLELAYOUT:
     403                 :            :         {
     404 [ +  - ][ +  - ]:          6 :             newObj = new LwpSuperTableLayout(objHdr, m_pSvStream);
     405                 :          6 :             break;
     406                 :            :         }
     407                 :            :         case VO_CELLLAYOUT:
     408                 :            :         {
     409 [ +  - ][ +  - ]:         63 :             newObj = new LwpCellLayout(objHdr, m_pSvStream);
     410                 :         63 :             break;
     411                 :            :         }
     412                 :            :         case VO_ROWLAYOUT:
     413                 :            :         {
     414 [ +  - ][ +  - ]:         15 :             newObj = new LwpRowLayout(objHdr, m_pSvStream);
     415                 :         15 :             break;
     416                 :            :         }
     417                 :            :         case VO_LAYOUTNUMERICS:
     418                 :            :         {
     419 [ +  - ][ +  - ]:         18 :             newObj = new LwpLayoutNumerics(objHdr, m_pSvStream);
     420                 :         18 :             break;
     421                 :            :         }
     422                 :            :         case VO_NUMERICVALUE:
     423                 :            :         {
     424 [ #  # ][ #  # ]:          0 :             newObj = new LwpNumericValue(objHdr, m_pSvStream);
     425                 :          0 :             break;
     426                 :            :         }
     427                 :            :         case VO_FORMULAINFO:
     428                 :            :         {
     429 [ #  # ][ #  # ]:          0 :             newObj = new LwpFormulaInfo(objHdr, m_pSvStream);
     430                 :          0 :             break;
     431                 :            :         }
     432                 :            :         case VO_COLUMNLAYOUT:
     433                 :            :         {
     434 [ #  # ][ #  # ]:          0 :             newObj = new LwpColumnLayout(objHdr, m_pSvStream);
     435                 :          0 :             break;
     436                 :            :         }
     437                 :            :         case VO_ROWLIST:
     438                 :            :         {
     439 [ #  # ][ #  # ]:          0 :             newObj = new LwpRowList(objHdr, m_pSvStream);
     440                 :          0 :             break;
     441                 :            :         }
     442                 :            :         case VO_CELLLIST:
     443                 :            :         {
     444 [ #  # ][ #  # ]:          0 :             newObj = new LwpCellList(objHdr, m_pSvStream);
     445                 :          0 :             break;
     446                 :            :         }
     447                 :            :         case VO_TABLERANGE:
     448                 :            :         {
     449 [ #  # ][ #  # ]:          0 :             newObj = new LwpTableRange(objHdr, m_pSvStream);
     450                 :          0 :             break;
     451                 :            :         }
     452                 :            :         case VO_CELLRANGE:
     453                 :            :         {
     454 [ #  # ][ #  # ]:          0 :             newObj = new LwpCellRange(objHdr, m_pSvStream);
     455                 :          0 :             break;
     456                 :            :         }
     457                 :            :         case VO_FOLDER:
     458                 :            :         {
     459 [ #  # ][ #  # ]:          0 :             newObj = new LwpFolder(objHdr, m_pSvStream);
     460                 :          0 :             break;
     461                 :            :         }
     462                 :            :         case VO_DEPENDENT:
     463                 :            :         {
     464 [ #  # ][ #  # ]:          0 :             newObj = new LwpDependent(objHdr, m_pSvStream);
     465                 :          0 :             break;
     466                 :            :         }
     467                 :            :         case VO_CONNECTEDCELLLAYOUT:
     468                 :            :         {
     469 [ #  # ][ #  # ]:          0 :             newObj = new LwpConnectedCellLayout(objHdr, m_pSvStream);
     470                 :          0 :             break;
     471                 :            :         }
     472                 :            :         case VO_HIDDENCELLLAYOUT:
     473                 :            :         {
     474 [ #  # ][ #  # ]:          0 :             newObj = new LwpHiddenCellLayout(objHdr, m_pSvStream);
     475                 :          0 :             break;
     476                 :            :         }
     477                 :            :         case VO_TABLEHEADINGLAYOUT:
     478                 :            :         {
     479 [ #  # ][ #  # ]:          0 :             newObj = new LwpTableHeadingLayout(objHdr, m_pSvStream);
     480                 :          0 :             break;
     481                 :            :         }
     482                 :            :         case VO_ROWHEADINGLAYOUT:
     483                 :            :         {
     484 [ #  # ][ #  # ]:          0 :             newObj = new LwpRowHeadingLayout(objHdr, m_pSvStream);
     485                 :          0 :             break;
     486                 :            :         }
     487                 :            :         case VO_TABLEHEADING:
     488                 :            :         {
     489 [ #  # ][ #  # ]:          0 :             newObj = new LwpTableHeading(objHdr, m_pSvStream);
     490                 :          0 :             break;
     491                 :            :         }
     492                 :            :         case VO_CHBLKMARKER:
     493                 :            :         {
     494 [ #  # ][ #  # ]:          0 :             newObj = new LwpCHBlkMarker(objHdr, m_pSvStream);
     495                 :          0 :             break;
     496                 :            :         }
     497                 :            :         case VO_PROPLIST:
     498                 :            :         {
     499 [ #  # ][ #  # ]:          0 :             newObj = new LwpPropListElement(objHdr, m_pSvStream);
     500                 :          0 :             break;
     501                 :            :         }
     502                 :            :         case VO_BOOKMARK:
     503                 :            :         {
     504 [ #  # ][ #  # ]:          0 :             newObj = new LwpBookMark(objHdr, m_pSvStream);
     505                 :          0 :             break;
     506                 :            :         }
     507                 :            :         case VO_FIELDMARKER:
     508                 :            :         {
     509 [ +  - ][ +  - ]:          6 :             newObj = new LwpFieldMark(objHdr, m_pSvStream);
     510                 :          6 :             break;
     511                 :            :         }
     512                 :            :         case VO_OBJECTHOLDER:
     513                 :            :         {
     514 [ #  # ][ #  # ]:          0 :             newObj = new LwpObjectHolder(objHdr, m_pSvStream);
     515                 :          0 :             break;
     516                 :            :         }
     517                 :            :         case VO_POBJECTHOLDER:
     518                 :            :         {
     519 [ #  # ][ #  # ]:          0 :             newObj = new LwpObjectHolder(objHdr, m_pSvStream);
     520                 :          0 :             break;
     521                 :            :         }
     522                 :            :         case VO_VERGTR: //fall through
     523                 :            :         case VO_VERQTR:
     524                 :            :         {
     525 [ +  - ][ +  - ]:         24 :             newObj = new LwpVersionedPointer(objHdr, m_pSvStream);
     526                 :         24 :             break;
     527                 :            :         }
     528                 :            :         case VO_FOOTNOTE:
     529                 :            :         {
     530 [ +  - ][ +  - ]:          3 :             newObj = new LwpFootnote(objHdr, m_pSvStream);
     531                 :          3 :             break;
     532                 :            :         }
     533                 :            :         case VO_FOOTNOTETABLE:
     534                 :            :         {
     535 [ +  - ][ +  - ]:          3 :             newObj = new LwpFootnoteTable(objHdr, m_pSvStream);
     536                 :          3 :             break;
     537                 :            :         }
     538                 :            :         case VO_FOOTNOTEOPTS:
     539                 :            :         {
     540 [ +  - ][ +  - ]:         12 :             newObj = new LwpFootnoteOptions(objHdr, m_pSvStream);
     541                 :         12 :             break;
     542                 :            :         }
     543                 :            :         case VO_FOOTNOTELAYOUT:
     544                 :            :         {
     545 [ +  - ][ +  - ]:          3 :             newObj = new LwpFootnoteLayout(objHdr, m_pSvStream);
     546                 :          3 :             break;
     547                 :            :         }
     548                 :            :         case VO_FNROWLAYOUT:
     549                 :            :         {
     550 [ +  - ][ +  - ]:          3 :             newObj = new LwpFnRowLayout(objHdr, m_pSvStream);
     551                 :          3 :             break;
     552                 :            :         }
     553                 :            :         case VO_FNCELLLAYOUT:
     554                 :            :         {
     555 [ +  - ][ +  - ]:          6 :             newObj = new LwpFnCellLayout(objHdr, m_pSvStream);
     556                 :          6 :             break;
     557                 :            :         }
     558                 :            :         case VO_ENDNOTELAYOUT:
     559                 :            :         {
     560 [ #  # ][ #  # ]:          0 :             newObj = new LwpEndnoteLayout(objHdr, m_pSvStream);
     561                 :          0 :             break;
     562                 :            :         }
     563                 :            :         case VO_ENSUPERTABLELAYOUT:
     564                 :            :         {
     565 [ #  # ][ #  # ]:          0 :             newObj = new LwpEnSuperTableLayout(objHdr, m_pSvStream);
     566                 :          0 :             break;
     567                 :            :         }
     568                 :            :         case VO_FNSUPERTABLELAYOUT:
     569                 :            :         {
     570 [ #  # ][ #  # ]:          0 :             newObj = new LwpFnSuperTableLayout(objHdr, m_pSvStream);
     571                 :          0 :             break;
     572                 :            :         }
     573                 :            :         case VO_CONTONLAYOUT:
     574                 :            :         {
     575 [ #  # ][ #  # ]:          0 :             newObj = new LwpContOnLayout(objHdr, m_pSvStream);
     576                 :          0 :             break;
     577                 :            :         }
     578                 :            :         case VO_CONTFROMLAYOUT:
     579                 :            :         {
     580 [ #  # ][ #  # ]:          0 :             newObj = new LwpContFromLayout(objHdr, m_pSvStream);
     581                 :          0 :             break;
     582                 :            :         }
     583                 :            :         case VO_GROUPLAYOUT:
     584                 :            :         {
     585 [ #  # ][ #  # ]:          0 :             newObj = new LwpGroupLayout(objHdr, m_pSvStream);
     586                 :          0 :             break;
     587                 :            :         }
     588                 :            :         case VO_GROUPFRAME:
     589                 :            :         {
     590 [ #  # ][ #  # ]:          0 :             newObj = new LwpGroupFrame(objHdr, m_pSvStream);
     591                 :          0 :             break;
     592                 :            :         }
     593                 :            :         case VO_TOCSUPERTABLELAYOUT:
     594                 :            :         {
     595 [ #  # ][ #  # ]:          0 :             newObj = new LwpTocSuperLayout(objHdr, m_pSvStream);
     596                 :          0 :             break;
     597                 :            :         }
     598                 :            :         case VO_LISTLIST:
     599                 :            :         {
     600 [ #  # ][ #  # ]:          0 :             newObj = new LwpListList(objHdr, m_pSvStream);
     601                 :          0 :             break;
     602                 :            :         }
     603                 :            :         case VO_TOCLEVELDATA:
     604                 :            :         {
     605 [ #  # ][ #  # ]:          0 :             newObj = new LwpTocLevelData(objHdr, m_pSvStream);
     606                 :          0 :             break;
     607                 :            :         }
     608                 :            :         case VO_NOTELAYOUT:
     609                 :            :         {
     610 [ #  # ][ #  # ]:          0 :             newObj = new LwpNoteLayout(objHdr, m_pSvStream);
     611                 :          0 :             break;
     612                 :            :         }
     613                 :            :         case VO_NOTEHEADERLAYOUT:
     614                 :            :         {
     615 [ #  # ][ #  # ]:          0 :             newObj = new LwpNoteHeaderLayout(objHdr, m_pSvStream);
     616                 :          0 :             break;
     617                 :            :         }
     618                 :            :         case VO_NOTETEXTLAYOUT:
     619                 :            :         {
     620 [ #  # ][ #  # ]:          0 :             newObj = new LwpNoteTextLayout(objHdr, m_pSvStream);
     621                 :          0 :             break;
     622                 :            :         }
     623                 :            :         case VO_VPLAYOUT:
     624                 :            :         {
     625 [ #  # ][ #  # ]:          0 :             newObj = new LwpViewportLayout(objHdr, m_pSvStream);
     626                 :          0 :             break;
     627                 :            :         }
     628                 :            :         case VO_PCOLBLOCK:
     629                 :            :         {
     630 [ #  # ][ #  # ]:          0 :             newObj = new LwpParallelColumnsBlock(objHdr, m_pSvStream);
     631                 :          0 :             break;
     632                 :            :         }
     633                 :            :         case VO_SUPERPARALLELCOLUMNLAYOUT:
     634                 :            :         {
     635 [ #  # ][ #  # ]:          0 :             newObj = new LwpSuperParallelColumnLayout(objHdr, m_pSvStream);
     636                 :          0 :             break;
     637                 :            :         }
     638                 :            :         case VO_PCOLLAYOUT:
     639                 :            :         {
     640 [ #  # ][ #  # ]:          0 :             newObj = new LwpParallelColumnsLayout(objHdr, m_pSvStream);
     641                 :          0 :             break;
     642                 :            :         }
     643                 :            :         case VO_PARALLELCOLUMNS:
     644                 :            :         {
     645 [ #  # ][ #  # ]:          0 :             newObj = new LwpParallelColumns(objHdr, m_pSvStream);
     646                 :          0 :             break;
     647                 :            :         }
     648                 :            :         case VO_RUBYMARKER:
     649                 :            :         {
     650 [ #  # ][ #  # ]:          0 :             newObj = new LwpRubyMarker(objHdr, m_pSvStream);
     651                 :          0 :             break;
     652                 :            :         }
     653                 :            :         case VO_RUBYLAYOUT:
     654                 :            :         {
     655 [ #  # ][ #  # ]:          0 :             newObj = new LwpRubyLayout(objHdr, m_pSvStream);
     656                 :          0 :             break;
     657                 :            :         }
     658                 :            :         case VO_GLOSSARY:
     659                 :            :         {
     660 [ #  # ][ #  # ]:          0 :             newObj = new LwpGlossary(objHdr, m_pSvStream);
     661                 :          0 :             break;
     662                 :            :         }
     663                 :            :         case VO_SUPERGLOSSARYLAYOUT:
     664                 :            :         {
     665 [ #  # ][ #  # ]:          0 :             newObj = new LwpSuperGlossaryLayout(objHdr, m_pSvStream);
     666                 :          0 :             break;
     667                 :            :         }
     668                 :            :         case VO_VERDOCUMENT:
     669                 :            :         {
     670 [ +  - ][ +  - ]:         12 :             newObj = new LwpVerDocument(objHdr, m_pSvStream);
     671                 :         12 :             break;
     672                 :            :         }
     673                 :            :         default:
     674                 :            :         {
     675                 :            :             //Unknown object type
     676                 :            :             assert(false);
     677                 :          0 :             newObj = NULL;
     678                 :          0 :             break;
     679                 :            :         }
     680                 :            :     }
     681         [ +  - ]:       2757 :     if(newObj)
     682                 :            :     {
     683         [ +  + ]:       2757 :         newObj->QuickRead();
     684         [ +  - ]:       2760 :         m_IdToObjList.insert(LwpIdToObjMap::value_type(*objHdr.GetID(), newObj));
     685                 :            :     }
     686                 :            : 
     687                 :       2751 :     return(newObj);
     688                 :            : }
     689                 :            : /**
     690                 :            :  * @descr       query object by object id
     691                 :            :  *          object is created if not in the factory
     692                 :            : */
     693                 :      37221 : LwpObject* LwpObjectFactory::QueryObject(const LwpObjectID &objID)
     694                 :            : {
     695                 :      37221 :     LwpObject* obj = FindObject( objID );
     696         [ +  + ]:      37221 :     if(!obj)
     697                 :            :     {
     698                 :            :         //Read the object from file
     699         [ +  - ]:       2760 :         sal_uInt32 nStreamOffset = m_IndexMgr.GetObjOffset(objID);
     700         [ -  + ]:       2760 :         if(nStreamOffset == BAD_OFFSET) //does not find the offset in index manager
     701                 :          0 :             return NULL;
     702                 :            : 
     703                 :       2760 :         sal_Int64 nDesiredPos = nStreamOffset + LwpSvStream::LWP_STREAM_BASE;
     704 [ +  - ][ -  + ]:       2760 :         if (nDesiredPos != m_pSvStream->Seek(nDesiredPos))
     705                 :          0 :             return NULL;
     706         [ +  - ]:       2760 :         LwpObjectHeader objHdr;
     707 [ +  - ][ -  + ]:       2760 :         if (!objHdr.Read(*m_pSvStream))
     708                 :          0 :             return NULL;
     709                 :            : 
     710                 :       2760 :         LwpObjectID* pId = objHdr.GetID();
     711 [ -  + ][ -  + ]:       2760 :         if (pId && (*pId != objID))
                 [ +  - ]
     712                 :            :         {
     713                 :            :             OSL_FAIL("apparently incorrect objid, invalidating");
     714                 :          0 :             return NULL;
     715                 :            :         }
     716                 :            : 
     717         [ +  + ]:       2760 :         obj = CreateObject(objHdr.GetTag(), objHdr);
     718                 :            :     }
     719                 :      37221 :     return obj;
     720                 :            : }
     721                 :            : 
     722                 :            : /**
     723                 :            :  * @descr       find object in the factory per the object id
     724                 :            : */
     725                 :      37668 : LwpObject* LwpObjectFactory::FindObject(const LwpObjectID &objID)
     726                 :            : {
     727         [ +  - ]:      37668 :     LwpIdToObjMap::const_iterator it =  m_IdToObjList.find(objID);
     728 [ +  + ][ +  - ]:      37668 :     if (it != m_IdToObjList.end()) {
     729         [ +  - ]:      34908 :         return((*it).second);
     730                 :            :     }
     731                 :            :     else
     732                 :            :     {
     733                 :      37668 :         return NULL;
     734                 :            :     }
     735                 :            : }
     736                 :            : /**
     737                 :            :  * @descr       release object in the factory per the object id
     738                 :            : */
     739                 :        447 : void LwpObjectFactory::ReleaseObject(const LwpObjectID &objID)
     740                 :            : {
     741                 :        447 :     LwpObject* obj = FindObject( objID );
     742                 :        447 :     m_IdToObjList.erase(objID);
     743         [ +  - ]:        447 :     if( obj )
     744         [ +  - ]:        447 :         delete obj;
     745                 :        447 : }
     746                 :            : 
     747                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10