LCOV - code coverage report
Current view: top level - lotuswordpro/source/filter - lwpobjfactory.cxx (source / functions) Hit Total Coverage
Test: commit e02a6cb2c3e2b23b203b422e4e0680877f232636 Lines: 0 263 0.0 %
Date: 2014-04-14 Functions: 0 8 0.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             :  *
       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           0 : LwpObjectFactory::LwpObjectFactory(LwpSvStream* pSvStream)
     105           0 :     : m_nNumObjs(0), m_pSvStream(pSvStream)
     106             : {
     107           0 :     m_IdToObjList.clear();
     108           0 : }
     109             : 
     110           0 : LwpObjectFactory::~LwpObjectFactory()
     111             : {
     112           0 :     if(!m_IdToObjList.empty())
     113           0 :         ClearObjectMap();
     114           0 : }
     115             : 
     116             : /**
     117             :  * @descr       clear object map and delete all objects
     118             : */
     119           0 : void LwpObjectFactory::ClearObjectMap()
     120             : {
     121           0 :     LwpIdToObjMap::iterator it = m_IdToObjList.begin();
     122           0 :     while( it!=m_IdToObjList.end() )
     123             :     {
     124           0 :         delete it->second;
     125           0 :         it->second = NULL;
     126           0 :         ++it;
     127             :     }
     128           0 :     m_IdToObjList.clear();
     129           0 : }
     130             : /**
     131             :  * @descr       read the index manager
     132             : */
     133           0 : void LwpObjectFactory::ReadIndex(LwpSvStream* pStrm)
     134             : {
     135           0 :     m_IndexMgr.Read(pStrm);
     136           0 : }
     137             : 
     138             : /**
     139             :  * @descr       create all kinds of objects except lwp7
     140             : */
     141           0 : LwpObject* LwpObjectFactory::CreateObject(sal_uInt32 type, LwpObjectHeader &objHdr)
     142             : {
     143           0 :     LwpObject* newObj = NULL;
     144           0 :     m_nNumObjs++;
     145             :     assert(type<300);
     146           0 :     switch(type)
     147             :     {
     148             :         case VO_DOCUMENT:
     149             :         {
     150           0 :             newObj = new LwpDocument(objHdr, m_pSvStream);
     151           0 :             break;
     152             :         }
     153             :         case VO_DOCSOCK:
     154             :         {
     155           0 :             newObj = new LwpDocSock(objHdr, m_pSvStream);
     156           0 :             break;
     157             :         }
     158             :         case VO_DIVISIONINFO:
     159             :         {
     160           0 :             newObj = new LwpDivInfo(objHdr, m_pSvStream);
     161           0 :             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           0 :             newObj = new LwpHeadContent(objHdr, m_pSvStream);
     171           0 :             break;
     172             :         }
     173             :         case VO_HEADLAYOUT:
     174             :         {
     175           0 :             newObj = new LwpHeadLayout(objHdr, m_pSvStream);
     176           0 :             break;
     177             :         }
     178             :         case VO_PAGELAYOUT:
     179             :         {
     180           0 :             newObj = new LwpPageLayout(objHdr, m_pSvStream);
     181           0 :             break;
     182             :         }
     183             :         case VO_STORY:
     184             :         {
     185           0 :             newObj = new LwpStory(objHdr, m_pSvStream);
     186           0 :             break;
     187             :         }
     188             :         case VO_PARA:
     189             :         {
     190           0 :             newObj = new LwpPara(objHdr, m_pSvStream);
     191           0 :             break;
     192             :         }
     193             :         case VO_HEADERLAYOUT:
     194             :         {
     195           0 :             newObj = new LwpHeaderLayout(objHdr, m_pSvStream);
     196           0 :             break;
     197             :         }
     198             :         case VO_FOOTERLAYOUT:
     199             :         {
     200           0 :             newObj = new LwpFooterLayout(objHdr, m_pSvStream);
     201           0 :             break;
     202             :         }
     203             :         case VO_FRAMELAYOUT:
     204             :         {
     205           0 :             newObj = new LwpFrameLayout(objHdr, m_pSvStream);
     206           0 :             break;
     207             :         }
     208             :         case VO_LAYOUTGEOMETRY:
     209             :         {
     210           0 :             newObj = new LwpLayoutGeometry(objHdr, m_pSvStream);
     211           0 :             break;
     212             :         }
     213             :         case VO_LAYOUTSCALE:
     214             :         {
     215           0 :             newObj = new LwpLayoutScale(objHdr, m_pSvStream);
     216           0 :             break;
     217             :         }
     218             :         case VO_LAYOUTMARGINS:
     219             :         {
     220           0 :             newObj = new LwpLayoutMargins(objHdr, m_pSvStream);
     221           0 :             break;
     222             :         }
     223             :         case VO_LAYOUTBORDERSTUFF:
     224             :         {
     225           0 :             newObj = new LwpLayoutBorder(objHdr, m_pSvStream);
     226           0 :             break;
     227             :         }
     228             :         case VO_LAYOUTBACKGROUNDSTUFF:
     229             :         {
     230           0 :             newObj = new LwpLayoutBackground(objHdr, m_pSvStream);
     231           0 :             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           0 :             newObj = new LwpLayoutColumns(objHdr, m_pSvStream);
     241           0 :             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           0 :             newObj = new LwpLayoutShadow(objHdr, m_pSvStream);
     256           0 :             break;
     257             :         }
     258             :         // 01/12/2005
     259             :         case VO_PARASTYLE:
     260             :         {
     261           0 :             newObj = new LwpParaStyle(objHdr, m_pSvStream);
     262           0 :             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           0 :             newObj = new LwpSilverBullet(objHdr, m_pSvStream);
     272           0 :             break;
     273             :         }
     274             :         case VO_ALIGNMENTPIECE:
     275             :         {
     276           0 :             newObj = new LwpAlignmentPiece(objHdr, m_pSvStream);
     277           0 :             break;
     278             :         }
     279             :         case VO_INDENTPIECE:
     280             :         {
     281           0 :             newObj = new LwpIndentPiece(objHdr, m_pSvStream);
     282           0 :             break;
     283             :         }
     284             :         case VO_SPACINGPIECE:
     285             :         {
     286           0 :             newObj = new LwpSpacingPiece(objHdr, m_pSvStream);
     287           0 :             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           0 :             newObj = new LwpDLVListHeadHolder(objHdr, m_pSvStream);
     304           0 :             break;
     305             :         }
     306             : 
     307             :         // start
     308             :         case VO_PARABORDERPIECE:
     309             :         {
     310           0 :             newObj = new LwpParaBorderPiece(objHdr, m_pSvStream);
     311           0 :             break;
     312             :         }
     313             :         case VO_BREAKSPIECE:
     314             :         {
     315           0 :             newObj = new LwpBreaksPiece(objHdr, m_pSvStream);
     316           0 :             break;
     317             :         }
     318             :         case VO_NUMBERINGPIECE:
     319             :         {
     320           0 :             newObj = new LwpNumberingPiece(objHdr, m_pSvStream);
     321           0 :             break;
     322             :         }
     323             :         case VO_TABRACK:
     324             :         {
     325           0 :             newObj = new LwpTabRack(objHdr, m_pSvStream);
     326           0 :             break;
     327             :         }
     328             :         case VO_TABPIECE:
     329             :         {
     330           0 :             newObj = new LwpTabPiece(objHdr, m_pSvStream);
     331           0 :             break;
     332             :         }
     333             :         case VO_PARABACKGROUNDPIECE:    //perhaps wrong.
     334             :         {
     335           0 :             newObj = new LwpBackgroundPiece(objHdr, m_pSvStream);
     336           0 :             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           0 :             newObj = new LwpOleObject(objHdr, m_pSvStream);
     362           0 :             break;
     363             :         }
     364             : 
     365             :         case VO_GRAPHIC:
     366             :         {
     367           0 :             newObj = new LwpGraphicObject(objHdr, m_pSvStream);
     368           0 :             break;
     369             :         }
     370             :         case VO_DOCDATA:
     371             :         {
     372           0 :             newObj = new LwpDocData(objHdr, m_pSvStream);
     373           0 :             break;
     374             :         }
     375             : 
     376             :         case VO_DROPCAPLAYOUT:
     377             :         {
     378           0 :             newObj = new LwpDropcapLayout(objHdr, m_pSvStream);
     379           0 :             break;
     380             :         }
     381             :         case VO_LAYOUTRELATIVITY:
     382             :         {
     383           0 :             newObj = new LwpLayoutRelativity(objHdr, m_pSvStream);
     384           0 :             break;
     385             :         }
     386             :         //  for table
     387             :         case VO_TABLE:
     388             :         {
     389           0 :             newObj = new LwpTable(objHdr, m_pSvStream);
     390           0 :             break;
     391             :         }
     392             :         case VO_TABLELAYOUT:
     393             :         {
     394           0 :             newObj = new LwpTableLayout(objHdr, m_pSvStream);
     395           0 :             break;
     396             :         }
     397             :         case VO_SUPERTABLE:
     398             :         {
     399           0 :             newObj = new LwpSuperTable(objHdr, m_pSvStream);
     400           0 :             break;
     401             :         }
     402             :         case VO_SUPERTABLELAYOUT:
     403             :         {
     404           0 :             newObj = new LwpSuperTableLayout(objHdr, m_pSvStream);
     405           0 :             break;
     406             :         }
     407             :         case VO_CELLLAYOUT:
     408             :         {
     409           0 :             newObj = new LwpCellLayout(objHdr, m_pSvStream);
     410           0 :             break;
     411             :         }
     412             :         case VO_ROWLAYOUT:
     413             :         {
     414           0 :             newObj = new LwpRowLayout(objHdr, m_pSvStream);
     415           0 :             break;
     416             :         }
     417             :         case VO_LAYOUTNUMERICS:
     418             :         {
     419           0 :             newObj = new LwpLayoutNumerics(objHdr, m_pSvStream);
     420           0 :             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           0 :             newObj = new LwpFieldMark(objHdr, m_pSvStream);
     510           0 :             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           0 :             newObj = new LwpVersionedPointer(objHdr, m_pSvStream);
     526           0 :             break;
     527             :         }
     528             :         case VO_FOOTNOTE:
     529             :         {
     530           0 :             newObj = new LwpFootnote(objHdr, m_pSvStream);
     531           0 :             break;
     532             :         }
     533             :         case VO_FOOTNOTETABLE:
     534             :         {
     535           0 :             newObj = new LwpFootnoteTable(objHdr, m_pSvStream);
     536           0 :             break;
     537             :         }
     538             :         case VO_FOOTNOTEOPTS:
     539             :         {
     540           0 :             newObj = new LwpFootnoteOptions(objHdr, m_pSvStream);
     541           0 :             break;
     542             :         }
     543             :         case VO_FOOTNOTELAYOUT:
     544             :         {
     545           0 :             newObj = new LwpFootnoteLayout(objHdr, m_pSvStream);
     546           0 :             break;
     547             :         }
     548             :         case VO_FNROWLAYOUT:
     549             :         {
     550           0 :             newObj = new LwpFnRowLayout(objHdr, m_pSvStream);
     551           0 :             break;
     552             :         }
     553             :         case VO_FNCELLLAYOUT:
     554             :         {
     555           0 :             newObj = new LwpFnCellLayout(objHdr, m_pSvStream);
     556           0 :             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           0 :             newObj = new LwpVerDocument(objHdr, m_pSvStream);
     671           0 :             break;
     672             :         }
     673             :         default:
     674             :         {
     675             :             //Unknown object type
     676             :             assert(false);
     677           0 :             newObj = NULL;
     678           0 :             break;
     679             :         }
     680             :     }
     681           0 :     if(newObj)
     682             :     {
     683           0 :         newObj->QuickRead();
     684           0 :         m_IdToObjList.insert(LwpIdToObjMap::value_type(*objHdr.GetID(), newObj));
     685             :     }
     686             : 
     687           0 :     return(newObj);
     688             : }
     689             : /**
     690             :  * @descr       query object by object id
     691             :  *          object is created if not in the factory
     692             : */
     693           0 : LwpObject* LwpObjectFactory::QueryObject(const LwpObjectID &objID)
     694             : {
     695           0 :     LwpObject* obj = FindObject( objID );
     696           0 :     if(!obj)
     697             :     {
     698             :         //Read the object from file
     699           0 :         sal_uInt32 nStreamOffset = m_IndexMgr.GetObjOffset(objID);
     700           0 :         if(nStreamOffset == BAD_OFFSET) //does not find the offset in index manager
     701           0 :             return NULL;
     702             : 
     703           0 :         sal_Int64 nDesiredPos = nStreamOffset + LwpSvStream::LWP_STREAM_BASE;
     704           0 :         if (nDesiredPos != m_pSvStream->Seek(nDesiredPos))
     705           0 :             return NULL;
     706           0 :         LwpObjectHeader objHdr;
     707           0 :         if (!objHdr.Read(*m_pSvStream))
     708           0 :             return NULL;
     709             : 
     710           0 :         LwpObjectID* pId = objHdr.GetID();
     711           0 :         if (pId && (*pId != objID))
     712             :         {
     713             :             OSL_FAIL("apparently incorrect objid, invalidating");
     714           0 :             return NULL;
     715             :         }
     716             : 
     717           0 :         obj = CreateObject(objHdr.GetTag(), objHdr);
     718             :     }
     719           0 :     return obj;
     720             : }
     721             : 
     722             : /**
     723             :  * @descr       find object in the factory per the object id
     724             : */
     725           0 : LwpObject* LwpObjectFactory::FindObject(const LwpObjectID &objID)
     726             : {
     727           0 :     LwpIdToObjMap::const_iterator it =  m_IdToObjList.find(objID);
     728           0 :     if (it != m_IdToObjList.end()) {
     729           0 :         return((*it).second);
     730             :     }
     731             :     else
     732             :     {
     733           0 :         return NULL;
     734             :     }
     735             : }
     736             : /**
     737             :  * @descr       release object in the factory per the object id
     738             : */
     739           0 : void LwpObjectFactory::ReleaseObject(const LwpObjectID &objID)
     740             : {
     741           0 :     LwpObject* obj = FindObject( objID );
     742           0 :     m_IdToObjList.erase(objID);
     743           0 :     if( obj )
     744           0 :         delete obj;
     745           0 : }
     746             : 
     747             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10