[Libreoffice-commits] .: 5 commits - editeng/inc editeng/source

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Tue Jan 8 18:29:15 PST 2013


 editeng/inc/editeng/editobj.hxx         |  106 +++++-----
 editeng/source/editeng/editobj.cxx      |  331 +++++++++++++++-----------------
 editeng/source/editeng/editobj2.hxx     |   86 ++++----
 editeng/source/editeng/fieldupdater.cxx |    6 
 editeng/source/editeng/impedit.hxx      |    6 
 editeng/source/editeng/impedit4.cxx     |   48 ++--
 6 files changed, 287 insertions(+), 296 deletions(-)

New commits:
commit 64520a6fc0b7e64a6c4e9679fca2f9c88293c13f
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Jan 8 16:45:17 2013 -0500

    BinObject is no more. Change the method names to reflect that.
    
    Change-Id: I723a7da307379c6f2e8256fe41023b4b96739f12

diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 1d762b02..58c72b5 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -521,8 +521,8 @@ private:
     void                ParaAttribsToCharAttribs( ContentNode* pNode );
     void                GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
 
-    EditTextObject*     CreateBinTextObject( EditSelection aSelection, SfxItemPool*, sal_Bool bAllowBigObjects = sal_False, sal_uInt16 nBigObjStart = 0 );
-    EditSelection       InsertBinTextObject( const EditTextObject&, EditPaM aPaM );
+    EditTextObject*     CreateTextObject( EditSelection aSelection, SfxItemPool*, sal_Bool bAllowBigObjects = sal_False, sal_uInt16 nBigObjStart = 0 );
+    EditSelection       InsertTextObject( const EditTextObject&, EditPaM aPaM );
     EditSelection       InsertText( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxDataObj, const String& rBaseURL, const EditPaM& rPaM, sal_Bool bUseSpecial );
 
     EditPaM             Clear();
diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx
index a869e18..a00e28e 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -301,7 +301,7 @@ static void lcl_FindValidAttribs( ItemList& rLst, ContentNode* pNode, sal_uInt16
 
 sal_uInt32 ImpEditEngine::WriteBin( SvStream& rOutput, EditSelection aSel, bool bStoreUnicodeStrings )
 {
-    boost::scoped_ptr<EditTextObject> pObj(CreateBinTextObject(aSel, NULL));
+    boost::scoped_ptr<EditTextObject> pObj(CreateTextObject(aSel, NULL));
     pObj->mpImpl->StoreUnicodeStrings(bStoreUnicodeStrings);
     pObj->Store(rOutput);
     return 0;
@@ -1017,10 +1017,10 @@ EditTextObject* ImpEditEngine::CreateTextObject()
 
 EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel )
 {
-    return CreateBinTextObject( aSel, GetEditTextObjectPool(), aStatus.AllowBigObjects(), nBigTextObjectStart );
+    return CreateTextObject( aSel, GetEditTextObjectPool(), aStatus.AllowBigObjects(), nBigTextObjectStart );
 }
 
-EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemPool* pPool, sal_Bool bAllowBigObjects, sal_uInt16 nBigObjectStart )
+EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel, SfxItemPool* pPool, sal_Bool bAllowBigObjects, sal_uInt16 nBigObjectStart )
 {
     EditTextObject* pTxtObj = new EditTextObject(pPool);
     pTxtObj->SetVertical( IsVertical() );
@@ -1195,12 +1195,12 @@ EditSelection ImpEditEngine::InsertText( const EditTextObject& rTextObject, Edit
     aSel.Adjust( aEditDoc );
     if ( aSel.HasRange() )
         aSel = ImpDeleteSelection( aSel );
-    EditSelection aNewSel = InsertBinTextObject( rTextObject, aSel.Max() );
+    EditSelection aNewSel = InsertTextObject( rTextObject, aSel.Max() );
     LeaveBlockNotifications();
     return aNewSel;
 }
 
-EditSelection ImpEditEngine::InsertBinTextObject( const EditTextObject& rTextObject, EditPaM aPaM )
+EditSelection ImpEditEngine::InsertTextObject( const EditTextObject& rTextObject, EditPaM aPaM )
 {
     // Optimize: No getPos undFindParaportion, instead calculate index!
     EditSelection aSel( aPaM, aPaM );
@@ -2944,7 +2944,7 @@ EditSelection ImpEditEngine::TransliterateText( const EditSelection& rSelection,
                 if (bSingleNode && !bHasAttribs)
                     pUndo->SetText( aSel.Min().GetNode()->Copy( aSel.Min().GetIndex(), aSel.Max().GetIndex()-aSel.Min().GetIndex() ) );
                 else
-                    pUndo->SetText( CreateBinTextObject( aSel, NULL ) );
+                    pUndo->SetText( CreateTextObject( aSel, NULL ) );
             }
 
             // now apply the changes from end to start to leave the offsets of the
commit 4da3a0108468a3e7fd4aae32129b9c0fbe4635a4
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Jan 8 15:33:56 2013 -0500

    Turn EditTextObjectImpl into a real impl class.
    
    Change-Id: I0f0bba62da60a3397b733253dbc0891c69bd5b9c

diff --git a/editeng/inc/editeng/editobj.hxx b/editeng/inc/editeng/editobj.hxx
index 393892c..1298496 100644
--- a/editeng/inc/editeng/editobj.hxx
+++ b/editeng/inc/editeng/editobj.hxx
@@ -42,85 +42,95 @@ class SvxFieldItem;
 namespace editeng {
 
 class FieldUpdater;
+class FieldUpdaterImpl;
 
 }
 
+class EditTextObjectImpl;
+
 class EDITENG_DLLPUBLIC EditTextObject : public SfxItemPoolUser
 {
-private:
+    friend class EditTextObjectImpl;
+    friend class editeng::FieldUpdaterImpl;
+    friend class ImpEditEngine;
+
+    EditTextObjectImpl* mpImpl;
+
     EDITENG_DLLPRIVATE EditTextObject&      operator=( const EditTextObject& );
 
-protected:
-    EditTextObject();
+    EditTextObject(); // disabled
+
+    EditTextObject( SfxItemPool* pPool );
     EditTextObject( const EditTextObject& r );
 
-    virtual void        StoreData( SvStream& rOStream ) const;
-    virtual void        CreateData( SvStream& rIStream );
+    void StoreData( SvStream& rStrm ) const;
+    void CreateData( SvStream& rStrm );
 
 public:
-    virtual             ~EditTextObject();
+    virtual ~EditTextObject();
+
+    sal_uInt16 GetUserType() const;    // For OutlinerMode, it can however not save in compatible format
+    void SetUserType( sal_uInt16 n );
 
-    virtual sal_uInt16      GetUserType() const;    // For OutlinerMode, it can however not save in compatible format
-    virtual void        SetUserType( sal_uInt16 n );
+    sal_uLong GetObjectSettings() const;
+    void SetObjectSettings( sal_uLong n );
 
-    virtual sal_uLong       GetObjectSettings() const;
-    virtual void        SetObjectSettings( sal_uLong n );
+    bool IsVertical() const;
+    void SetVertical( bool bVertical );
 
-    virtual bool        IsVertical() const;
-    virtual void        SetVertical( bool bVertical );
+    sal_uInt16 GetScriptType() const;
 
-    virtual sal_uInt16      GetScriptType() const;
+    sal_uInt16 GetVersion() const; // As long as the outliner does not store any record length.
 
-    virtual sal_uInt16      GetVersion() const; // As long as the outliner does not store any record length.
+    EditTextObject* Clone() const;
 
-    virtual EditTextObject* Clone() const = 0;
+    bool Store( SvStream& rOStream ) const;
 
-    sal_Bool                    Store( SvStream& rOStream ) const;
-    static EditTextObject*  Create( SvStream& rIStream,
-                                SfxItemPool* pGlobalTextObjectPool = 0 );
+    static EditTextObject* Create(
+        SvStream& rIStream, SfxItemPool* pGlobalTextObjectPool = NULL );
 
-    virtual size_t GetParagraphCount() const;
+    size_t GetParagraphCount() const;
 
-    virtual String GetText(size_t nParagraph) const;
-    virtual void Insert(const EditTextObject& rObj, size_t nPara);
-    virtual void RemoveParagraph(size_t nPara);
-    virtual EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
+    String GetText(size_t nPara) const;
+    void Insert(const EditTextObject& rObj, size_t nPara);
+    void RemoveParagraph(size_t nPara);
+    EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
 
-    virtual sal_Bool        HasPortionInfo() const;
-    virtual void        ClearPortionInfo();
+    bool HasPortionInfo() const;
+    void ClearPortionInfo();
 
-    virtual sal_Bool        HasOnlineSpellErrors() const;
+    bool HasOnlineSpellErrors() const;
 
-    virtual sal_Bool        HasCharAttribs( sal_uInt16 nWhich = 0 ) const;
-    virtual void        GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
+    bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const;
+    void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
 
-    virtual sal_Bool        RemoveCharAttribs( sal_uInt16 nWhich = 0 );
-    virtual sal_Bool        RemoveParaAttribs( sal_uInt16 nWhich = 0 );
+    bool RemoveCharAttribs( sal_uInt16 nWhich = 0 );
+    bool RemoveParaAttribs( sal_uInt16 nWhich = 0 );
 
-    virtual void        MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart = EE_CHAR_START, sal_uInt16 nEnd = EE_CHAR_END );
+    void MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart = EE_CHAR_START, sal_uInt16 nEnd = EE_CHAR_END );
 
-    virtual sal_Bool        IsFieldObject() const;
-    virtual const SvxFieldItem* GetField() const;
-    virtual bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const = 0;
+    bool IsFieldObject() const;
+    const SvxFieldItem* GetField() const;
+    bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const;
 
-    virtual SfxItemSet GetParaAttribs(size_t nPara) const;
-    virtual void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs);
+    const SfxItemSet& GetParaAttribs(size_t nPara) const;
+    void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs);
 
-    virtual sal_Bool        HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const;
-    virtual void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const;
-    virtual void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily);
-    virtual sal_Bool        ChangeStyleSheets(  const XubString& rOldName, SfxStyleFamily eOldFamily,
-                                            const XubString& rNewName, SfxStyleFamily eNewFamily );
-    virtual void        ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );
+    bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const;
+    void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const;
+    void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily);
+    bool ChangeStyleSheets(
+        const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rNewName, SfxStyleFamily eNewFamily );
+    void ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );
 
-    virtual editeng::FieldUpdater GetFieldUpdater() = 0;
+    editeng::FieldUpdater GetFieldUpdater();
 
-    bool                operator==( const EditTextObject& rCompare ) const;
+    bool operator==( const EditTextObject& rCompare ) const;
 
     // #i102062#
     bool isWrongListEqual(const EditTextObject& rCompare) const;
 
-    virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool) = 0;
+    virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool);
 };
 
 #endif  // _EDITOBJ_HXX
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx
index e4fa4cb..06a2d34 100644
--- a/editeng/source/editeng/editobj.cxx
+++ b/editeng/source/editeng/editobj.cxx
@@ -179,188 +179,180 @@ bool ContentInfo::operator!=(const ContentInfo& rCompare) const
     return !operator==(rCompare);
 }
 
-EditTextObject::EditTextObject()
+EditTextObject::EditTextObject( SfxItemPool* pPool ) :
+    mpImpl(new EditTextObjectImpl(this, pPool))
 {
-    DBG_CTOR( EE_EditTextObject, 0 );
 }
 
-EditTextObject::EditTextObject( const EditTextObject& )
+EditTextObject::EditTextObject( const EditTextObject& r ) :
+    mpImpl(new EditTextObjectImpl(this, *r.mpImpl))
 {
-    DBG_CTOR( EE_EditTextObject, 0 );
 }
 
 EditTextObject::~EditTextObject()
 {
-    DBG_DTOR( EE_EditTextObject, 0 );
+    delete mpImpl;
 }
 
 size_t EditTextObject::GetParagraphCount() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return 0;
+    return mpImpl->GetParagraphCount();
 }
 
-String EditTextObject::GetText(size_t /* nParagraph */) const
+String EditTextObject::GetText(size_t nPara) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return String();
+    return mpImpl->GetText(nPara);
 }
 
-void EditTextObject::Insert(const EditTextObject& /* rObj */, size_t /* nPara */)
+void EditTextObject::Insert(const EditTextObject& rObj, size_t nPara)
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->Insert(rObj, nPara);
 }
 
-EditTextObject* EditTextObject::CreateTextObject(size_t /*nPara*/, size_t /*nParas*/) const
+EditTextObject* EditTextObject::CreateTextObject(size_t nPara, size_t nParas) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return 0;
+    return mpImpl->CreateTextObject(nPara, nParas);
 }
 
-void EditTextObject::RemoveParagraph(size_t /*nPara*/)
+void EditTextObject::RemoveParagraph(size_t nPara)
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->RemoveParagraph(nPara);
 }
 
-sal_Bool EditTextObject::HasPortionInfo() const
+bool EditTextObject::HasPortionInfo() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->HasPortionInfo();
 }
 
 void EditTextObject::ClearPortionInfo()
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->ClearPortionInfo();
 }
 
-sal_Bool EditTextObject::HasOnlineSpellErrors() const
+bool EditTextObject::HasOnlineSpellErrors() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->HasOnlineSpellErrors();
 }
 
-sal_Bool EditTextObject::HasCharAttribs( sal_uInt16 ) const
+bool EditTextObject::HasCharAttribs( sal_uInt16 nWhich ) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->HasCharAttribs(nWhich);
 }
 
-void EditTextObject::GetCharAttribs( sal_uInt16 /*nPara*/, std::vector<EECharAttrib>& /*rLst*/ ) const
+void EditTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->GetCharAttribs(nPara, rLst);
 }
 
-void EditTextObject::MergeParaAttribs( const SfxItemSet& /*rAttribs*/, sal_uInt16 /*nStart*/, sal_uInt16 /*nEnd*/ )
+void EditTextObject::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->MergeParaAttribs(rAttribs, nStart, nEnd);
 }
 
-sal_Bool EditTextObject::IsFieldObject() const
+bool EditTextObject::IsFieldObject() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->IsFieldObject();
 }
 
 const SvxFieldItem* EditTextObject::GetField() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return 0;
+    return mpImpl->GetField();
 }
 
-SfxItemSet EditTextObject::GetParaAttribs(size_t /*nPara*/) const
+bool EditTextObject::HasField( sal_Int32 nType ) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return SfxItemSet( *(SfxItemPool*)NULL );
+    return mpImpl->HasField(nType);
 }
 
-void EditTextObject::SetParaAttribs(size_t /*nPara*/, const SfxItemSet& /*rAttribs*/)
+const SfxItemSet& EditTextObject::GetParaAttribs(size_t nPara) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    return mpImpl->GetParaAttribs(nPara);
 }
 
-sal_Bool EditTextObject::RemoveCharAttribs( sal_uInt16 /*nWhich*/ )
+void EditTextObject::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs)
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    mpImpl->SetParaAttribs(nPara, rAttribs);
 }
 
-sal_Bool EditTextObject::RemoveParaAttribs( sal_uInt16 /*nWhich*/ )
+bool EditTextObject::RemoveCharAttribs( sal_uInt16 nWhich )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->RemoveCharAttribs(nWhich);
 }
 
-sal_Bool EditTextObject::HasStyleSheet( const XubString& /*rName*/, SfxStyleFamily /*eFamily*/ ) const
+bool EditTextObject::RemoveParaAttribs( sal_uInt16 nWhich )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->RemoveParaAttribs(nWhich);
 }
 
-void EditTextObject::GetStyleSheet(size_t /*nPara*/, String& /*rName*/, SfxStyleFamily& /*eFamily*/) const
+bool EditTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    return mpImpl->HasStyleSheet(rName, eFamily);
 }
 
-void EditTextObject::SetStyleSheet(size_t /*nPara*/, const String& /*rName*/, const SfxStyleFamily& /*eFamily*/)
+void EditTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->GetStyleSheet(nPara, rName, eFamily);
 }
 
-sal_Bool EditTextObject::ChangeStyleSheets( const XubString&, SfxStyleFamily,
-                                            const XubString&, SfxStyleFamily )
+void EditTextObject::SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily)
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    mpImpl->SetStyleSheet(nPara, rName, eFamily);
 }
 
-void EditTextObject::ChangeStyleSheetName( SfxStyleFamily /*eFamily*/,
-                const XubString& /*rOldName*/, const XubString& /*rNewName*/ )
+bool EditTextObject::ChangeStyleSheets(
+    const XubString& rOldName, SfxStyleFamily eOldFamily, const XubString& rNewName, SfxStyleFamily eNewFamily )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    return mpImpl->ChangeStyleSheets(rOldName, eOldFamily, rNewName, eNewFamily);
+}
+
+void EditTextObject::ChangeStyleSheetName(
+    SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName )
+{
+    mpImpl->ChangeStyleSheetName(eFamily, rOldName, rNewName);
+}
+
+editeng::FieldUpdater EditTextObject::GetFieldUpdater()
+{
+    return mpImpl->GetFieldUpdater();
 }
 
 sal_uInt16 EditTextObject::GetUserType() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return 0;
+    return mpImpl->GetUserType();
 }
 
-void EditTextObject::SetUserType( sal_uInt16 )
+void EditTextObject::SetUserType( sal_uInt16 n )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->SetUserType(n);
 }
 
 sal_uLong EditTextObject::GetObjectSettings() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return 0;
+    return mpImpl->GetObjectSettings();
 }
 
-void EditTextObject::SetObjectSettings( sal_uLong )
+void EditTextObject::SetObjectSettings( sal_uLong n )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
+    mpImpl->SetObjectSettings(n);
 }
 
 bool EditTextObject::IsVertical() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return false;
+    return mpImpl->IsVertical();
 }
 
 void EditTextObject::SetVertical( bool bVertical )
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    ((EditTextObjectImpl*)this)->SetVertical( bVertical );
+    return mpImpl->SetVertical(bVertical);
 }
 
 sal_uInt16 EditTextObject::GetScriptType() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return ((const EditTextObjectImpl*)this)->GetScriptType();
+    return mpImpl->GetScriptType();
 }
 
 
-sal_Bool EditTextObject::Store( SvStream& rOStream ) const
+bool EditTextObject::Store( SvStream& rOStream ) const
 {
     if ( rOStream.GetError() )
         return false;
@@ -395,26 +387,18 @@ EditTextObject* EditTextObject::Create( SvStream& rIStream, SfxItemPool* pGlobal
     sal_uInt32 nStructSz;
     rIStream >> nStructSz;
 
-    DBG_ASSERT( ( nWhich == 0x22 /*EE_FORMAT_BIN300*/ ) || ( nWhich == EE_FORMAT_BIN ), "CreateTextObject: Unknown Object!" );
+    if (nWhich != EE_FORMAT_BIN)
+    {
+        // Unknown object we no longer support.
+        rIStream.SetError(EE_READWRITE_WRONGFORMAT);
+        return NULL;
+    }
 
     if ( rIStream.GetError() )
         return NULL;
 
-    EditTextObject* pTxtObj = NULL;
-    switch ( nWhich )
-    {
-        case 0x22 /*BIN300*/:       pTxtObj = new EditTextObjectImpl( 0 );
-                                    ((EditTextObjectImpl*)pTxtObj)->CreateData300( rIStream );
-                                    break;
-        case EE_FORMAT_BIN:         pTxtObj = new EditTextObjectImpl( pGlobalTextObjectPool );
-                                    pTxtObj->CreateData( rIStream );
-                                    break;
-        default:
-        {
-            // If I do not know the format, I overwrite the contents:
-            rIStream.SetError( EE_READWRITE_WRONGFORMAT );
-        }
-    }
+    EditTextObject* pTxtObj = new EditTextObject(pGlobalTextObjectPool);;
+    pTxtObj->CreateData(rIStream);
 
     // Make sure that the stream is left at the correct place.
     sal_Size nFullSz = sizeof( nWhich ) + sizeof( nStructSz ) + nStructSz;
@@ -422,31 +406,40 @@ EditTextObject* EditTextObject::Create( SvStream& rIStream, SfxItemPool* pGlobal
     return pTxtObj;
 }
 
-void EditTextObject::StoreData( SvStream& ) const
+void EditTextObject::StoreData( SvStream& rStrm ) const
 {
-    OSL_FAIL( "StoreData: Base class!" );
+    mpImpl->StoreData(rStrm);
 }
 
-void EditTextObject::CreateData( SvStream& )
+void EditTextObject::CreateData( SvStream& rStrm )
 {
-    OSL_FAIL( "CreateData: Base class!" );
+    mpImpl->CreateData(rStrm);
 }
 
 sal_uInt16 EditTextObject::GetVersion() const
 {
-    OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return 0;
+    return mpImpl->GetVersion();
+}
+
+EditTextObject* EditTextObject::Clone() const
+{
+    return new EditTextObject(*this);
 }
 
 bool EditTextObject::operator==( const EditTextObject& rCompare ) const
 {
-    return static_cast< const EditTextObjectImpl* >( this )->operator==( static_cast< const EditTextObjectImpl& >( rCompare ) );
+    return mpImpl->operator==(*rCompare.mpImpl);
 }
 
 // #i102062#
 bool EditTextObject::isWrongListEqual(const EditTextObject& rCompare) const
 {
-    return static_cast< const EditTextObjectImpl* >(this)->isWrongListEqual(static_cast< const EditTextObjectImpl& >(rCompare));
+    return mpImpl->isWrongListEqual(*rCompare.mpImpl);
+}
+
+void EditTextObject::ObjectInDestruction(const SfxItemPool& rSfxItemPool)
+{
+    mpImpl->ObjectInDestruction(rSfxItemPool);
 }
 
 // from SfxItemPoolUser
@@ -495,7 +488,8 @@ EditEngineItemPool* getEditEngineItemPool(SfxItemPool* pPool)
     return pRetval;
 }
 
-EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP )
+EditTextObjectImpl::EditTextObjectImpl( EditTextObject* pFront, SfxItemPool* pP ) :
+    mpFront(pFront)
 {
     nVersion = 0;
     nMetric = 0xFFFF;
@@ -524,7 +518,7 @@ EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP )
     if(!bOwnerOfPool && pPool)
     {
         // it is sure now that the pool is an EditEngineItemPool
-        pPool->AddSfxItemPoolUser(*this);
+        pPool->AddSfxItemPoolUser(*mpFront);
     }
 
     bVertical = false;
@@ -532,8 +526,8 @@ EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP )
     nScriptType = 0;
 }
 
-EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r ) :
-    EditTextObject( r )
+EditTextObjectImpl::EditTextObjectImpl( EditTextObject* pFront, const EditTextObjectImpl& r ) :
+    mpFront(pFront)
 {
     nVersion = r.nVersion;
     nMetric = r.nMetric;
@@ -562,7 +556,7 @@ EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r ) :
     if(!bOwnerOfPool && pPool)
     {
         // it is sure now that the pool is an EditEngineItemPool
-        pPool->AddSfxItemPoolUser(*this);
+        pPool->AddSfxItemPoolUser(*mpFront);
     }
 
     if ( bOwnerOfPool && pPool && r.pPool )
@@ -578,7 +572,7 @@ EditTextObjectImpl::~EditTextObjectImpl()
 {
     if(!bOwnerOfPool && pPool)
     {
-        pPool->RemoveSfxItemPoolUser(*this);
+        pPool->RemoveSfxItemPoolUser(*mpFront);
     }
 
     ClearPortionInfo();
@@ -636,11 +630,6 @@ void EditTextObjectImpl::SetScriptType( sal_uInt16 nType )
     nScriptType = nType;
 }
 
-EditTextObject* EditTextObjectImpl::Clone() const
-{
-    return new EditTextObjectImpl( *this );
-}
-
 XEditAttribute* EditTextObjectImpl::CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd )
 {
     return MakeXEditAttribute( *pPool, rItem, nStart, nEnd );
@@ -683,7 +672,7 @@ String EditTextObjectImpl::GetText(size_t nPara) const
 
 void EditTextObjectImpl::Insert(const EditTextObject& rObj, size_t nDestPara)
 {
-    const EditTextObjectImpl& rBinObj = (const EditTextObjectImpl&)rObj;
+    const EditTextObjectImpl& rBinObj = *rObj.mpImpl;
 
     if (nDestPara > aContents.size())
         nDestPara = aContents.size();
@@ -706,20 +695,20 @@ EditTextObject* EditTextObjectImpl::CreateTextObject(size_t nPara, size_t nParas
         return NULL;
 
     // Only split the Pool, when a the Pool is set externally.
-    EditTextObjectImpl* pObj = new EditTextObjectImpl( bOwnerOfPool ? 0 : pPool );
+    EditTextObject* pObj = new EditTextObject( bOwnerOfPool ? 0 : pPool );
     if ( bOwnerOfPool && pPool )
-        pObj->GetPool()->SetDefaultMetric( pPool->GetMetric( DEF_METRIC ) );
+        pObj->mpImpl->GetPool()->SetDefaultMetric( pPool->GetMetric( DEF_METRIC ) );
 
     // If complete text is only one ScriptType, this is valid.
     // If text contains different ScriptTypes, this shouldn't be a problem...
-    pObj->nScriptType = nScriptType;
+    pObj->mpImpl->nScriptType = nScriptType;
 
     const size_t nEndPara = nPara+nParas-1;
     for (size_t i = nPara; i <= nEndPara; ++i)
     {
         const ContentInfo& rC = aContents[i];
-        ContentInfo* pNew = new ContentInfo(rC, *pObj->GetPool());
-        pObj->aContents.push_back(pNew);
+        ContentInfo* pNew = new ContentInfo(rC, *pObj->mpImpl->GetPool());
+        pObj->mpImpl->aContents.push_back(pNew);
     }
     return pObj;
 }
@@ -736,7 +725,7 @@ void EditTextObjectImpl::RemoveParagraph(size_t nPara)
     ClearPortionInfo();
 }
 
-sal_Bool EditTextObjectImpl::HasPortionInfo() const
+bool EditTextObjectImpl::HasPortionInfo() const
 {
     return pPortionInfo ? true : false;
 }
@@ -750,7 +739,7 @@ void EditTextObjectImpl::ClearPortionInfo()
     }
 }
 
-sal_Bool EditTextObjectImpl::HasOnlineSpellErrors() const
+bool EditTextObjectImpl::HasOnlineSpellErrors() const
 {
     ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end();
     for (; it != itEnd; ++it)
@@ -761,7 +750,7 @@ sal_Bool EditTextObjectImpl::HasOnlineSpellErrors() const
     return false;
 }
 
-sal_Bool EditTextObjectImpl::HasCharAttribs( sal_uInt16 _nWhich ) const
+bool EditTextObjectImpl::HasCharAttribs( sal_uInt16 _nWhich ) const
 {
     for (size_t nPara = aContents.size(); nPara; )
     {
@@ -820,9 +809,9 @@ void EditTextObjectImpl::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt1
         ClearPortionInfo();
 }
 
-sal_Bool EditTextObjectImpl::IsFieldObject() const
+bool EditTextObjectImpl::IsFieldObject() const
 {
-    return EditTextObjectImpl::GetField() ? true : false;
+    return GetField() ? true : false;
 }
 
 const SvxFieldItem* EditTextObjectImpl::GetField() const
@@ -869,7 +858,7 @@ bool EditTextObjectImpl::HasField( sal_Int32 nType ) const
     return false;
 }
 
-SfxItemSet EditTextObjectImpl::GetParaAttribs(size_t nPara) const
+const SfxItemSet& EditTextObjectImpl::GetParaAttribs(size_t nPara) const
 {
     const ContentInfo& rC = aContents[nPara];
     return rC.GetParaAttribs();
@@ -882,9 +871,9 @@ void EditTextObjectImpl::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs
     ClearPortionInfo();
 }
 
-sal_Bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich )
+bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich )
 {
-    sal_Bool bChanged = false;
+    bool bChanged = false;
 
     for ( sal_uInt16 nPara = aContents.size(); nPara; )
     {
@@ -908,7 +897,7 @@ sal_Bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich )
     return bChanged;
 }
 
-sal_Bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich )
+bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich )
 {
     bool bChanged = false;
 
@@ -938,7 +927,7 @@ sal_Bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich )
     return bChanged;
 }
 
-sal_Bool EditTextObjectImpl::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const
+bool EditTextObjectImpl::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const
 {
     size_t nParagraphs = aContents.size();
     for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
@@ -970,7 +959,7 @@ void EditTextObjectImpl::SetStyleSheet(size_t nPara, const String& rName, const
     rC.GetFamily() = rFamily;
 }
 
-sal_Bool EditTextObjectImpl::ImpChangeStyleSheets(
+bool EditTextObjectImpl::ImpChangeStyleSheets(
                     const XubString& rOldName, SfxStyleFamily eOldFamily,
                     const XubString& rNewName, SfxStyleFamily eNewFamily )
 {
@@ -993,7 +982,7 @@ sal_Bool EditTextObjectImpl::ImpChangeStyleSheets(
     return bChanges;
 }
 
-sal_Bool EditTextObjectImpl::ChangeStyleSheets(
+bool EditTextObjectImpl::ChangeStyleSheets(
                     const XubString& rOldName, SfxStyleFamily eOldFamily,
                     const XubString& rNewName, SfxStyleFamily eNewFamily )
 {
@@ -1012,7 +1001,7 @@ void EditTextObjectImpl::ChangeStyleSheetName( SfxStyleFamily eFamily,
 
 editeng::FieldUpdater EditTextObjectImpl::GetFieldUpdater()
 {
-    return editeng::FieldUpdater(*this);
+    return editeng::FieldUpdater(*mpFront);
 }
 
 namespace {
diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx
index 0a3c520..04b6ba1 100644
--- a/editeng/source/editeng/editobj2.hxx
+++ b/editeng/source/editeng/editobj2.hxx
@@ -26,6 +26,7 @@
 #include <unotools/fontcvt.hxx>
 
 #include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/noncopyable.hpp>
 
 class XEditAttribute
 {
@@ -150,15 +151,14 @@ public:
     bool isWrongListEqual(const ContentInfo& rCompare) const;
 };
 
-class EditTextObjectImpl : public EditTextObject
+class EditTextObjectImpl : boost::noncopyable
 {
-    using EditTextObject::operator==;
-    using EditTextObject::isWrongListEqual;
-
 public:
     typedef boost::ptr_vector<ContentInfo> ContentInfosType;
 
 private:
+    EditTextObject* mpFront;
+
     ContentInfosType        aContents;
     SfxItemPool*            pPool;
     XParaPortionList*       pPortionInfo;
@@ -173,21 +173,19 @@ private:
     bool                    bVertical:1;
     bool                    bStoreUnicodeStrings:1;
 
-protected:
-    virtual void            StoreData( SvStream& rOStream ) const;
-    virtual void            CreateData( SvStream& rIStream );
-    sal_Bool                    ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily,
-                                        const String& rNewName, SfxStyleFamily eNewFamily );
+    bool ImpChangeStyleSheets( const String& rOldName, SfxStyleFamily eOldFamily,
+                               const String& rNewName, SfxStyleFamily eNewFamily );
 
 public:
-                            EditTextObjectImpl( SfxItemPool* pPool );
-                            EditTextObjectImpl( const EditTextObjectImpl& );
-    virtual                 ~EditTextObjectImpl();
+    void StoreData( SvStream& rOStream ) const;
+    void CreateData( SvStream& rIStream );
 
-    virtual EditTextObject* Clone() const;
+    EditTextObjectImpl( EditTextObject* pFront, SfxItemPool* pPool );
+    EditTextObjectImpl( EditTextObject* pFront, const EditTextObjectImpl& r );
+    ~EditTextObjectImpl();
 
-    sal_uInt16                  GetUserType() const;
-    void                    SetUserType( sal_uInt16 n );
+    sal_uInt16 GetUserType() const;
+    void SetUserType( sal_uInt16 n );
 
     sal_uLong                   GetObjectSettings() const;
     void                    SetObjectSettings( sal_uLong n );
@@ -211,57 +209,57 @@ public:
     void                    SetPortionInfo( XParaPortionList* pP )
                                 { pPortionInfo = pP; }
 
-    virtual size_t GetParagraphCount() const;
-    virtual String GetText(size_t nParagraph) const;
-    virtual void Insert(const EditTextObject& rObj, size_t nPara);
-    virtual EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
+    size_t GetParagraphCount() const;
+    String GetText(size_t nParagraph) const;
+    void Insert(const EditTextObject& rObj, size_t nPara);
+    EditTextObject* CreateTextObject(size_t nPara, size_t nParas = 1) const;
     virtual void RemoveParagraph(size_t nPara);
 
-    virtual sal_Bool            HasPortionInfo() const;
-    virtual void            ClearPortionInfo();
+    bool HasPortionInfo() const;
+    void ClearPortionInfo();
 
-    virtual sal_Bool            HasOnlineSpellErrors() const;
+    bool HasOnlineSpellErrors() const;
 
-    virtual sal_Bool            HasCharAttribs( sal_uInt16 nWhich = 0 ) const;
-    virtual void            GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
+    bool HasCharAttribs( sal_uInt16 nWhich = 0 ) const;
+    void GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
 
-    virtual sal_Bool            RemoveCharAttribs( sal_uInt16 nWhich = 0 );
-    virtual sal_Bool            RemoveParaAttribs( sal_uInt16 nWhich = 0 );
+    bool RemoveCharAttribs( sal_uInt16 nWhich = 0 );
+    bool RemoveParaAttribs( sal_uInt16 nWhich = 0 );
 
-    virtual void            MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd );
+    void MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd );
 
-    virtual sal_Bool            IsFieldObject() const;
-    virtual const SvxFieldItem* GetField() const;
-    virtual bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const;
+    bool IsFieldObject() const;
+    const SvxFieldItem* GetField() const;
+    bool HasField( sal_Int32 nType = com::sun::star::text::textfield::Type::UNSPECIFIED ) const;
 
-    virtual SfxItemSet GetParaAttribs(size_t nPara) const;
-    virtual void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs);
+    const SfxItemSet& GetParaAttribs(size_t nPara) const;
+    void SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs);
 
-    virtual sal_Bool            HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const;
-    virtual void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const;
-    virtual void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily);
-    virtual sal_Bool            ChangeStyleSheets(  const XubString& rOldName, SfxStyleFamily eOldFamily,
-                                                const String& rNewName, SfxStyleFamily eNewFamily );
+    bool HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const;
+    void GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& eFamily) const;
+    void SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& eFamily);
+    bool ChangeStyleSheets(
+        const XubString& rOldName, SfxStyleFamily eOldFamily, const String& rNewName, SfxStyleFamily eNewFamily );
     virtual void            ChangeStyleSheetName( SfxStyleFamily eFamily, const XubString& rOldName, const XubString& rNewName );
 
-    virtual editeng::FieldUpdater GetFieldUpdater();
+    editeng::FieldUpdater GetFieldUpdater();
 
     void                    CreateData300( SvStream& rIStream );
 
-    sal_Bool                    HasMetric() const           { return nMetric != 0xFFFF; }
+    bool HasMetric() const { return nMetric != 0xFFFF; }
     sal_uInt16                  GetMetric() const           { return nMetric; }
     void                    SetMetric( sal_uInt16 n )       { nMetric = n; }
 
     bool                    IsOwnerOfPool() const       { return bOwnerOfPool; }
-    void                    StoreUnicodeStrings( sal_Bool b ) { bStoreUnicodeStrings = b; }
+    void StoreUnicodeStrings( bool b ) { bStoreUnicodeStrings = b; }
 
-    bool                    operator==( const EditTextObjectImpl& rCompare ) const;
+    bool operator==( const EditTextObjectImpl& rCompare ) const;
 
     // #i102062#
     bool isWrongListEqual(const EditTextObjectImpl& rCompare) const;
 
     // from SfxItemPoolUser
-    virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool);
+    void ObjectInDestruction(const SfxItemPool& rSfxItemPool);
 };
 
 #endif  // _EDITOBJ2_HXX
diff --git a/editeng/source/editeng/fieldupdater.cxx b/editeng/source/editeng/fieldupdater.cxx
index 2a383f8..95dfc8d 100644
--- a/editeng/source/editeng/fieldupdater.cxx
+++ b/editeng/source/editeng/fieldupdater.cxx
@@ -40,7 +40,7 @@ class FieldUpdaterImpl
 {
     EditTextObjectImpl& mrObj;
 public:
-    FieldUpdaterImpl(EditTextObject& rObj) : mrObj(static_cast<EditTextObjectImpl&>(rObj)) {}
+    FieldUpdaterImpl(EditTextObject& rObj) : mrObj(*rObj.mpImpl) {}
     FieldUpdaterImpl(const FieldUpdaterImpl& r) : mrObj(r.mrObj) {}
 
     void updateTableFields(int nTab)
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 271f231..1d762b02 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -522,7 +522,7 @@ private:
     void                GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
 
     EditTextObject*     CreateBinTextObject( EditSelection aSelection, SfxItemPool*, sal_Bool bAllowBigObjects = sal_False, sal_uInt16 nBigObjStart = 0 );
-    EditSelection       InsertBinTextObject( EditTextObjectImpl&, EditPaM aPaM );
+    EditSelection       InsertBinTextObject( const EditTextObject&, EditPaM aPaM );
     EditSelection       InsertText( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxDataObj, const String& rBaseURL, const EditPaM& rPaM, sal_Bool bUseSpecial );
 
     EditPaM             Clear();
@@ -609,7 +609,7 @@ private:
     sal_uInt32          WriteRTF( SvStream& rOutput, EditSelection aSel );
     sal_uInt32          WriteXML( SvStream& rOutput, EditSelection aSel );
     sal_uInt32          WriteHTML( SvStream& rOutput, EditSelection aSel );
-    sal_uInt32          WriteBin( SvStream& rOutput, EditSelection aSel, sal_Bool bStoreUnicode = sal_False );
+    sal_uInt32 WriteBin( SvStream& rOutput, EditSelection aSel, bool bStoreUnicode = false );
 
     void                WriteItemAsRTF( const SfxPoolItem& rItem, SvStream& rOutput, sal_uInt16 nPara, sal_uInt16 nPos,
                         std::vector<SvxFontItem*>& rFontTable, SvxColorList& rColorList );
diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx
index 0209f09..a869e18 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -77,6 +77,7 @@
 #include <editeng/edtdlg.hxx>
 
 #include <vector>
+#include <boost/scoped_ptr.hpp>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::uno;
@@ -298,12 +299,11 @@ static void lcl_FindValidAttribs( ItemList& rLst, ContentNode* pNode, sal_uInt16
     }
 }
 
-sal_uInt32 ImpEditEngine::WriteBin( SvStream& rOutput, EditSelection aSel, sal_Bool bStoreUnicodeStrings )
+sal_uInt32 ImpEditEngine::WriteBin( SvStream& rOutput, EditSelection aSel, bool bStoreUnicodeStrings )
 {
-    EditTextObjectImpl* pObj = (EditTextObjectImpl*)CreateBinTextObject( aSel, NULL );
-    pObj->StoreUnicodeStrings( bStoreUnicodeStrings );
-    pObj->Store( rOutput );
-    delete pObj;
+    boost::scoped_ptr<EditTextObject> pObj(CreateBinTextObject(aSel, NULL));
+    pObj->mpImpl->StoreUnicodeStrings(bStoreUnicodeStrings);
+    pObj->Store(rOutput);
     return 0;
 }
 
@@ -1022,12 +1022,12 @@ EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel )
 
 EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemPool* pPool, sal_Bool bAllowBigObjects, sal_uInt16 nBigObjectStart )
 {
-    EditTextObjectImpl* pTxtObj = new EditTextObjectImpl( pPool );
+    EditTextObject* pTxtObj = new EditTextObject(pPool);
     pTxtObj->SetVertical( IsVertical() );
     MapUnit eMapUnit = (MapUnit)aEditDoc.GetItemPool().GetMetric( DEF_METRIC );
-    pTxtObj->SetMetric( (sal_uInt16) eMapUnit );
-    if ( pTxtObj->IsOwnerOfPool() )
-        pTxtObj->GetPool()->SetDefaultMetric( (SfxMapUnit) eMapUnit );
+    pTxtObj->mpImpl->SetMetric( (sal_uInt16) eMapUnit );
+    if ( pTxtObj->mpImpl->IsOwnerOfPool() )
+        pTxtObj->mpImpl->GetPool()->SetDefaultMetric( (SfxMapUnit) eMapUnit );
 
     sal_uInt16 nStartNode, nEndNode;
     sal_uInt32 nTextPortions = 0;
@@ -1042,7 +1042,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
 
     // Templates are not saved!
     // (Only the name and family, template itself must be in App!)
-    pTxtObj->SetScriptType( GetScriptType( aSel ) );
+    pTxtObj->mpImpl->SetScriptType(GetScriptType(aSel));
 
     // iterate over the paragraphs ...
     sal_uInt16 nNode;
@@ -1068,7 +1068,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
             nEndPos = aSel.Max().GetIndex();
 
 
-        ContentInfo* pC = pTxtObj->CreateAndInsertContent();
+        ContentInfo *pC = pTxtObj->mpImpl->CreateAndInsertContent();
 
         // The paragraph attributes ...
         pC->GetParaAttribs().Set( pNode->GetContentAttribs().GetItems() );
@@ -1092,7 +1092,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
             if ( bEmptyPara ||
                  ( ( pAttr->GetEnd() > nStartPos ) && ( pAttr->GetStart() < nEndPos ) ) )
             {
-                XEditAttribute* pX = pTxtObj->CreateAttrib( *pAttr->GetItem(), pAttr->GetStart(), pAttr->GetEnd() );
+                XEditAttribute* pX = pTxtObj->mpImpl->CreateAttrib(*pAttr->GetItem(), pAttr->GetStart(), pAttr->GetEnd());
                 // Possibly Correct ...
                 if ( ( nNode == nStartNode ) && ( nStartPos != 0 ) )
                 {
@@ -1107,7 +1107,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
                 }
                 DBG_ASSERT( pX->GetEnd() <= (nEndPos-nStartPos), "CreateBinTextObject: Attribute too long!" );
                 if ( !pX->GetLen() && !bEmptyPara )
-                    pTxtObj->DestroyAttrib( pX );
+                    pTxtObj->mpImpl->DestroyAttrib(pX);
                 else
                     pC->GetAttribs().push_back(pX);
             }
@@ -1126,7 +1126,7 @@ EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemP
     if ( bAllowBigObjects && bOnlyFullParagraphs && IsFormatted() && GetUpdateMode() && ( nTextPortions >= nBigObjectStart ) )
     {
         XParaPortionList* pXList = new XParaPortionList( GetRefDevice(), aPaperSize.Width(), nStretchX, nStretchY );
-        pTxtObj->SetPortionInfo( pXList );
+        pTxtObj->mpImpl->SetPortionInfo(pXList);
         for ( nNode = nStartNode; nNode <= nEndNode; nNode++  )
         {
             const ParaPortion* pParaPortion = GetParaPortions()[nNode];
@@ -1195,19 +1195,19 @@ EditSelection ImpEditEngine::InsertText( const EditTextObject& rTextObject, Edit
     aSel.Adjust( aEditDoc );
     if ( aSel.HasRange() )
         aSel = ImpDeleteSelection( aSel );
-    EditSelection aNewSel = InsertBinTextObject( (EditTextObjectImpl&)rTextObject, aSel.Max() );
+    EditSelection aNewSel = InsertBinTextObject( rTextObject, aSel.Max() );
     LeaveBlockNotifications();
     return aNewSel;
 }
 
-EditSelection ImpEditEngine::InsertBinTextObject( EditTextObjectImpl& rTextObject, EditPaM aPaM )
+EditSelection ImpEditEngine::InsertBinTextObject( const EditTextObject& rTextObject, EditPaM aPaM )
 {
     // Optimize: No getPos undFindParaportion, instead calculate index!
     EditSelection aSel( aPaM, aPaM );
     DBG_ASSERT( !aSel.DbgIsBuggy( aEditDoc ), "InsertBibTextObject: Selection broken!(1)" );
 
     sal_Bool bUsePortionInfo = sal_False;
-    XParaPortionList* pPortionInfo = rTextObject.GetPortionInfo();
+    XParaPortionList* pPortionInfo = rTextObject.mpImpl->GetPortionInfo();
 
     if ( pPortionInfo && ( (long)pPortionInfo->GetPaperWidth() == aPaperSize.Width() )
             && ( pPortionInfo->GetRefMapMode() == GetRefDevice()->GetMapMode() )
@@ -1222,20 +1222,20 @@ EditSelection ImpEditEngine::InsertBinTextObject( EditTextObjectImpl& rTextObjec
 
     sal_Bool bConvertItems = sal_False;
     MapUnit eSourceUnit = MapUnit(), eDestUnit = MapUnit();
-    if ( rTextObject.HasMetric() )
+    if (rTextObject.mpImpl->HasMetric())
     {
-        eSourceUnit = (MapUnit)rTextObject.GetMetric();
+        eSourceUnit = (MapUnit)rTextObject.mpImpl->GetMetric();
         eDestUnit = (MapUnit)aEditDoc.GetItemPool().GetMetric( DEF_METRIC );
         if ( eSourceUnit != eDestUnit )
             bConvertItems = sal_True;
     }
 
-    size_t nContents = rTextObject.GetContents().size();
+    size_t nContents = rTextObject.mpImpl->GetContents().size();
     sal_uInt16 nPara = aEditDoc.GetPos( aPaM.GetNode() );
 
     for (size_t n = 0; n < nContents; ++n, ++nPara)
     {
-        ContentInfo* pC = &rTextObject.GetContents()[n];
+        const ContentInfo* pC = &rTextObject.mpImpl->GetContents()[n];
         sal_Bool bNewContent = aPaM.GetNode()->Len() ? sal_False: sal_True;
         sal_uInt16 nStartPos = aPaM.GetIndex();
 
commit 678de8255795e7f3b654bf2022da26a4fdb48775
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Jan 8 13:33:22 2013 -0500

    Let's not have "which" value in EditTextObject.
    
    In fact, this value is always EE_FORMAT_BIN, and that's not going to
    change.
    
    Change-Id: I9324bf878b5766ef7a27461ba2bdf17742396f3d

diff --git a/editeng/inc/editeng/editobj.hxx b/editeng/inc/editeng/editobj.hxx
index 9c0a438..393892c 100644
--- a/editeng/inc/editeng/editobj.hxx
+++ b/editeng/inc/editeng/editobj.hxx
@@ -48,12 +48,11 @@ class FieldUpdater;
 class EDITENG_DLLPUBLIC EditTextObject : public SfxItemPoolUser
 {
 private:
-    sal_uInt16              nWhich;
     EDITENG_DLLPRIVATE EditTextObject&      operator=( const EditTextObject& );
 
 protected:
-                        EditTextObject( sal_uInt16 nWhich );
-                        EditTextObject( const EditTextObject& r );
+    EditTextObject();
+    EditTextObject( const EditTextObject& r );
 
     virtual void        StoreData( SvStream& rOStream ) const;
     virtual void        CreateData( SvStream& rIStream );
@@ -61,8 +60,6 @@ protected:
 public:
     virtual             ~EditTextObject();
 
-    sal_uInt16              Which() const { return nWhich; }
-
     virtual sal_uInt16      GetUserType() const;    // For OutlinerMode, it can however not save in compatible format
     virtual void        SetUserType( sal_uInt16 n );
 
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx
index 969017a..e4fa4cb 100644
--- a/editeng/source/editeng/editobj.cxx
+++ b/editeng/source/editeng/editobj.cxx
@@ -179,16 +179,14 @@ bool ContentInfo::operator!=(const ContentInfo& rCompare) const
     return !operator==(rCompare);
 }
 
-EditTextObject::EditTextObject( sal_uInt16 n)
+EditTextObject::EditTextObject()
 {
     DBG_CTOR( EE_EditTextObject, 0 );
-    nWhich = n;
 }
 
-EditTextObject::EditTextObject( const EditTextObject& r )
+EditTextObject::EditTextObject( const EditTextObject& )
 {
     DBG_CTOR( EE_EditTextObject, 0 );
-    nWhich = r.nWhich;
 }
 
 EditTextObject::~EditTextObject()
@@ -369,7 +367,8 @@ sal_Bool EditTextObject::Store( SvStream& rOStream ) const
 
     sal_Size nStartPos = rOStream.Tell();
 
-    rOStream << (sal_uInt16)Which();
+    sal_uInt16 nWhich = static_cast<sal_uInt16>(EE_FORMAT_BIN);
+    rOStream << nWhich;
 
     sal_uInt32 nStructSz = 0;
     rOStream << nStructSz;
@@ -496,8 +495,7 @@ EditEngineItemPool* getEditEngineItemPool(SfxItemPool* pPool)
     return pRetval;
 }
 
-EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP ) :
-    EditTextObject( EE_FORMAT_BIN )
+EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP )
 {
     nVersion = 0;
     nMetric = 0xFFFF;
@@ -685,8 +683,6 @@ String EditTextObjectImpl::GetText(size_t nPara) const
 
 void EditTextObjectImpl::Insert(const EditTextObject& rObj, size_t nDestPara)
 {
-    DBG_ASSERT( rObj.Which() == EE_FORMAT_BIN, "UTO: unknown Textobjekt" );
-
     const EditTextObjectImpl& rBinObj = (const EditTextObjectImpl&)rObj;
 
     if (nDestPara > aContents.size())
commit 71135683d125ec81feee07d771d3dd6ffd0c0fd3
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Jan 8 13:26:49 2013 -0500

    Rename BinTextObject to EditTextObjectImpl.
    
    Change-Id: Ie1e046624e671e87c7b3cf322572a7ed3f98726a

diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx
index af2c484..969017a 100644
--- a/editeng/source/editeng/editobj.cxx
+++ b/editeng/source/editeng/editobj.cxx
@@ -352,13 +352,13 @@ bool EditTextObject::IsVertical() const
 void EditTextObject::SetVertical( bool bVertical )
 {
     OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    ((BinTextObject*)this)->SetVertical( bVertical );
+    ((EditTextObjectImpl*)this)->SetVertical( bVertical );
 }
 
 sal_uInt16 EditTextObject::GetScriptType() const
 {
     OSL_FAIL( "Virtual method direct from EditTextObject!" );
-    return ((const BinTextObject*)this)->GetScriptType();
+    return ((const EditTextObjectImpl*)this)->GetScriptType();
 }
 
 
@@ -404,10 +404,10 @@ EditTextObject* EditTextObject::Create( SvStream& rIStream, SfxItemPool* pGlobal
     EditTextObject* pTxtObj = NULL;
     switch ( nWhich )
     {
-        case 0x22 /*BIN300*/:       pTxtObj = new BinTextObject( 0 );
-                                    ((BinTextObject*)pTxtObj)->CreateData300( rIStream );
+        case 0x22 /*BIN300*/:       pTxtObj = new EditTextObjectImpl( 0 );
+                                    ((EditTextObjectImpl*)pTxtObj)->CreateData300( rIStream );
                                     break;
-        case EE_FORMAT_BIN:         pTxtObj = new BinTextObject( pGlobalTextObjectPool );
+        case EE_FORMAT_BIN:         pTxtObj = new EditTextObjectImpl( pGlobalTextObjectPool );
                                     pTxtObj->CreateData( rIStream );
                                     break;
         default:
@@ -441,17 +441,17 @@ sal_uInt16 EditTextObject::GetVersion() const
 
 bool EditTextObject::operator==( const EditTextObject& rCompare ) const
 {
-    return static_cast< const BinTextObject* >( this )->operator==( static_cast< const BinTextObject& >( rCompare ) );
+    return static_cast< const EditTextObjectImpl* >( this )->operator==( static_cast< const EditTextObjectImpl& >( rCompare ) );
 }
 
 // #i102062#
 bool EditTextObject::isWrongListEqual(const EditTextObject& rCompare) const
 {
-    return static_cast< const BinTextObject* >(this)->isWrongListEqual(static_cast< const BinTextObject& >(rCompare));
+    return static_cast< const EditTextObjectImpl* >(this)->isWrongListEqual(static_cast< const EditTextObjectImpl& >(rCompare));
 }
 
 // from SfxItemPoolUser
-void BinTextObject::ObjectInDestruction(const SfxItemPool& rSfxItemPool)
+void EditTextObjectImpl::ObjectInDestruction(const SfxItemPool& rSfxItemPool)
 {
     if(!bOwnerOfPool && pPool && pPool == &rSfxItemPool)
     {
@@ -496,7 +496,7 @@ EditEngineItemPool* getEditEngineItemPool(SfxItemPool* pPool)
     return pRetval;
 }
 
-BinTextObject::BinTextObject( SfxItemPool* pP ) :
+EditTextObjectImpl::EditTextObjectImpl( SfxItemPool* pP ) :
     EditTextObject( EE_FORMAT_BIN )
 {
     nVersion = 0;
@@ -534,7 +534,7 @@ BinTextObject::BinTextObject( SfxItemPool* pP ) :
     nScriptType = 0;
 }
 
-BinTextObject::BinTextObject( const BinTextObject& r ) :
+EditTextObjectImpl::EditTextObjectImpl( const EditTextObjectImpl& r ) :
     EditTextObject( r )
 {
     nVersion = r.nVersion;
@@ -576,7 +576,7 @@ BinTextObject::BinTextObject( const BinTextObject& r ) :
         aContents.push_back(new ContentInfo(*it, *pPool));
 }
 
-BinTextObject::~BinTextObject()
+EditTextObjectImpl::~EditTextObjectImpl()
 {
     if(!bOwnerOfPool && pPool)
     {
@@ -594,32 +594,32 @@ BinTextObject::~BinTextObject()
     }
 }
 
-sal_uInt16 BinTextObject::GetUserType() const
+sal_uInt16 EditTextObjectImpl::GetUserType() const
 {
     return nUserType;
 }
 
-void BinTextObject::SetUserType( sal_uInt16 n )
+void EditTextObjectImpl::SetUserType( sal_uInt16 n )
 {
     nUserType = n;
 }
 
-sal_uLong BinTextObject::GetObjectSettings() const
+sal_uLong EditTextObjectImpl::GetObjectSettings() const
 {
     return nObjSettings;
 }
 
-void BinTextObject::SetObjectSettings( sal_uLong n )
+void EditTextObjectImpl::SetObjectSettings( sal_uLong n )
 {
     nObjSettings = n;
 }
 
-bool BinTextObject::IsVertical() const
+bool EditTextObjectImpl::IsVertical() const
 {
     return bVertical;
 }
 
-void BinTextObject::SetVertical( bool b )
+void EditTextObjectImpl::SetVertical( bool b )
 {
     if ( b != bVertical )
     {
@@ -628,54 +628,54 @@ void BinTextObject::SetVertical( bool b )
     }
 }
 
-sal_uInt16 BinTextObject::GetScriptType() const
+sal_uInt16 EditTextObjectImpl::GetScriptType() const
 {
     return nScriptType;
 }
 
-void BinTextObject::SetScriptType( sal_uInt16 nType )
+void EditTextObjectImpl::SetScriptType( sal_uInt16 nType )
 {
     nScriptType = nType;
 }
 
-EditTextObject* BinTextObject::Clone() const
+EditTextObject* EditTextObjectImpl::Clone() const
 {
-    return new BinTextObject( *this );
+    return new EditTextObjectImpl( *this );
 }
 
-XEditAttribute* BinTextObject::CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd )
+XEditAttribute* EditTextObjectImpl::CreateAttrib( const SfxPoolItem& rItem, sal_uInt16 nStart, sal_uInt16 nEnd )
 {
     return MakeXEditAttribute( *pPool, rItem, nStart, nEnd );
 }
 
-void BinTextObject::DestroyAttrib( XEditAttribute* pAttr )
+void EditTextObjectImpl::DestroyAttrib( XEditAttribute* pAttr )
 {
     pPool->Remove( *pAttr->GetItem() );
     delete pAttr;
 }
 
-BinTextObject::ContentInfosType& BinTextObject::GetContents()
+EditTextObjectImpl::ContentInfosType& EditTextObjectImpl::GetContents()
 {
     return aContents;
 }
 
-const BinTextObject::ContentInfosType& BinTextObject::GetContents() const
+const EditTextObjectImpl::ContentInfosType& EditTextObjectImpl::GetContents() const
 {
     return aContents;
 }
 
-ContentInfo* BinTextObject::CreateAndInsertContent()
+ContentInfo* EditTextObjectImpl::CreateAndInsertContent()
 {
     aContents.push_back(new ContentInfo(*pPool));
     return &aContents.back();
 }
 
-size_t BinTextObject::GetParagraphCount() const
+size_t EditTextObjectImpl::GetParagraphCount() const
 {
     return aContents.size();
 }
 
-String BinTextObject::GetText(size_t nPara) const
+String EditTextObjectImpl::GetText(size_t nPara) const
 {
     if (nPara >= aContents.size())
         return String();
@@ -683,11 +683,11 @@ String BinTextObject::GetText(size_t nPara) const
     return aContents[nPara].GetText();
 }
 
-void BinTextObject::Insert(const EditTextObject& rObj, size_t nDestPara)
+void EditTextObjectImpl::Insert(const EditTextObject& rObj, size_t nDestPara)
 {
     DBG_ASSERT( rObj.Which() == EE_FORMAT_BIN, "UTO: unknown Textobjekt" );
 
-    const BinTextObject& rBinObj = (const BinTextObject&)rObj;
+    const EditTextObjectImpl& rBinObj = (const EditTextObjectImpl&)rObj;
 
     if (nDestPara > aContents.size())
         nDestPara = aContents.size();
@@ -704,13 +704,13 @@ void BinTextObject::Insert(const EditTextObject& rObj, size_t nDestPara)
     ClearPortionInfo();
 }
 
-EditTextObject* BinTextObject::CreateTextObject(size_t nPara, size_t nParas) const
+EditTextObject* EditTextObjectImpl::CreateTextObject(size_t nPara, size_t nParas) const
 {
     if (nPara >= aContents.size() || !nParas)
         return NULL;
 
     // Only split the Pool, when a the Pool is set externally.
-    BinTextObject* pObj = new BinTextObject( bOwnerOfPool ? 0 : pPool );
+    EditTextObjectImpl* pObj = new EditTextObjectImpl( bOwnerOfPool ? 0 : pPool );
     if ( bOwnerOfPool && pPool )
         pObj->GetPool()->SetDefaultMetric( pPool->GetMetric( DEF_METRIC ) );
 
@@ -728,7 +728,7 @@ EditTextObject* BinTextObject::CreateTextObject(size_t nPara, size_t nParas) con
     return pObj;
 }
 
-void BinTextObject::RemoveParagraph(size_t nPara)
+void EditTextObjectImpl::RemoveParagraph(size_t nPara)
 {
     DBG_ASSERT( nPara < aContents.size(), "BinTextObject::GetText: Paragraph does not exist!" );
     if (nPara >= aContents.size())
@@ -740,12 +740,12 @@ void BinTextObject::RemoveParagraph(size_t nPara)
     ClearPortionInfo();
 }
 
-sal_Bool BinTextObject::HasPortionInfo() const
+sal_Bool EditTextObjectImpl::HasPortionInfo() const
 {
     return pPortionInfo ? true : false;
 }
 
-void BinTextObject::ClearPortionInfo()
+void EditTextObjectImpl::ClearPortionInfo()
 {
     if ( pPortionInfo )
     {
@@ -754,7 +754,7 @@ void BinTextObject::ClearPortionInfo()
     }
 }
 
-sal_Bool BinTextObject::HasOnlineSpellErrors() const
+sal_Bool EditTextObjectImpl::HasOnlineSpellErrors() const
 {
     ContentInfosType::const_iterator it = aContents.begin(), itEnd = aContents.end();
     for (; it != itEnd; ++it)
@@ -765,7 +765,7 @@ sal_Bool BinTextObject::HasOnlineSpellErrors() const
     return false;
 }
 
-sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const
+sal_Bool EditTextObjectImpl::HasCharAttribs( sal_uInt16 _nWhich ) const
 {
     for (size_t nPara = aContents.size(); nPara; )
     {
@@ -785,7 +785,7 @@ sal_Bool BinTextObject::HasCharAttribs( sal_uInt16 _nWhich ) const
     return false;
 }
 
-void BinTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
+void EditTextObjectImpl::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const
 {
     rLst.clear();
     const ContentInfo& rC = aContents[nPara];
@@ -801,7 +801,7 @@ void BinTextObject::GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>&
     }
 }
 
-void BinTextObject::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd )
+void EditTextObjectImpl::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nStart, sal_uInt16 nEnd )
 {
     bool bChanged = false;
 
@@ -824,12 +824,12 @@ void BinTextObject::MergeParaAttribs( const SfxItemSet& rAttribs, sal_uInt16 nSt
         ClearPortionInfo();
 }
 
-sal_Bool BinTextObject::IsFieldObject() const
+sal_Bool EditTextObjectImpl::IsFieldObject() const
 {
-    return BinTextObject::GetField() ? true : false;
+    return EditTextObjectImpl::GetField() ? true : false;
 }
 
-const SvxFieldItem* BinTextObject::GetField() const
+const SvxFieldItem* EditTextObjectImpl::GetField() const
 {
     if (aContents.size() == 1)
     {
@@ -848,7 +848,7 @@ const SvxFieldItem* BinTextObject::GetField() const
     return 0;
 }
 
-bool BinTextObject::HasField( sal_Int32 nType ) const
+bool EditTextObjectImpl::HasField( sal_Int32 nType ) const
 {
     size_t nParagraphs = aContents.size();
     for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
@@ -873,20 +873,20 @@ bool BinTextObject::HasField( sal_Int32 nType ) const
     return false;
 }
 
-SfxItemSet BinTextObject::GetParaAttribs(size_t nPara) const
+SfxItemSet EditTextObjectImpl::GetParaAttribs(size_t nPara) const
 {
     const ContentInfo& rC = aContents[nPara];
     return rC.GetParaAttribs();
 }
 
-void BinTextObject::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs)
+void EditTextObjectImpl::SetParaAttribs(size_t nPara, const SfxItemSet& rAttribs)
 {
     ContentInfo& rC = aContents[nPara];
     rC.GetParaAttribs().Set(rAttribs);
     ClearPortionInfo();
 }
 
-sal_Bool BinTextObject::RemoveCharAttribs( sal_uInt16 _nWhich )
+sal_Bool EditTextObjectImpl::RemoveCharAttribs( sal_uInt16 _nWhich )
 {
     sal_Bool bChanged = false;
 
@@ -912,7 +912,7 @@ sal_Bool BinTextObject::RemoveCharAttribs( sal_uInt16 _nWhich )
     return bChanged;
 }
 
-sal_Bool BinTextObject::RemoveParaAttribs( sal_uInt16 _nWhich )
+sal_Bool EditTextObjectImpl::RemoveParaAttribs( sal_uInt16 _nWhich )
 {
     bool bChanged = false;
 
@@ -942,7 +942,7 @@ sal_Bool BinTextObject::RemoveParaAttribs( sal_uInt16 _nWhich )
     return bChanged;
 }
 
-sal_Bool BinTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const
+sal_Bool EditTextObjectImpl::HasStyleSheet( const XubString& rName, SfxStyleFamily eFamily ) const
 {
     size_t nParagraphs = aContents.size();
     for (size_t nPara = 0; nPara < nParagraphs; ++nPara)
@@ -954,7 +954,7 @@ sal_Bool BinTextObject::HasStyleSheet( const XubString& rName, SfxStyleFamily eF
     return false;
 }
 
-void BinTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& rFamily) const
+void EditTextObjectImpl::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& rFamily) const
 {
     if (nPara >= aContents.size())
         return;
@@ -964,7 +964,7 @@ void BinTextObject::GetStyleSheet(size_t nPara, String& rName, SfxStyleFamily& r
     rFamily = rC.GetFamily();
 }
 
-void BinTextObject::SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& rFamily)
+void EditTextObjectImpl::SetStyleSheet(size_t nPara, const String& rName, const SfxStyleFamily& rFamily)
 {
     if (nPara >= aContents.size())
         return;
@@ -974,7 +974,7 @@ void BinTextObject::SetStyleSheet(size_t nPara, const String& rName, const SfxSt
     rC.GetFamily() = rFamily;
 }
 
-sal_Bool BinTextObject::ImpChangeStyleSheets(
+sal_Bool EditTextObjectImpl::ImpChangeStyleSheets(
                     const XubString& rOldName, SfxStyleFamily eOldFamily,
                     const XubString& rNewName, SfxStyleFamily eNewFamily )
 {
@@ -997,7 +997,7 @@ sal_Bool BinTextObject::ImpChangeStyleSheets(
     return bChanges;
 }
 
-sal_Bool BinTextObject::ChangeStyleSheets(
+sal_Bool EditTextObjectImpl::ChangeStyleSheets(
                     const XubString& rOldName, SfxStyleFamily eOldFamily,
                     const XubString& rNewName, SfxStyleFamily eNewFamily )
 {
@@ -1008,13 +1008,13 @@ sal_Bool BinTextObject::ChangeStyleSheets(
     return bChanges;
 }
 
-void BinTextObject::ChangeStyleSheetName( SfxStyleFamily eFamily,
+void EditTextObjectImpl::ChangeStyleSheetName( SfxStyleFamily eFamily,
                 const XubString& rOldName, const XubString& rNewName )
 {
     ImpChangeStyleSheets( rOldName, eFamily, rNewName, eFamily );
 }
 
-editeng::FieldUpdater BinTextObject::GetFieldUpdater()
+editeng::FieldUpdater EditTextObjectImpl::GetFieldUpdater()
 {
     return editeng::FieldUpdater(*this);
 }
@@ -1035,7 +1035,7 @@ public:
 
 }
 
-void BinTextObject::StoreData( SvStream& rOStream ) const
+void EditTextObjectImpl::StoreData( SvStream& rOStream ) const
 {
     sal_uInt16 nVer = 602;
     rOStream << nVer;
@@ -1203,7 +1203,7 @@ void BinTextObject::StoreData( SvStream& rOStream ) const
     }
 }
 
-void BinTextObject::CreateData( SvStream& rIStream )
+void EditTextObjectImpl::CreateData( SvStream& rIStream )
 {
     rIStream >> nVersion;
 
@@ -1481,12 +1481,12 @@ void BinTextObject::CreateData( SvStream& rIStream )
     }
 }
 
-sal_uInt16 BinTextObject::GetVersion() const
+sal_uInt16 EditTextObjectImpl::GetVersion() const
 {
     return nVersion;
 }
 
-bool BinTextObject::operator==( const BinTextObject& rCompare ) const
+bool EditTextObjectImpl::operator==( const EditTextObjectImpl& rCompare ) const
 {
     if( this == &rCompare )
         return true;
@@ -1509,7 +1509,7 @@ bool BinTextObject::operator==( const BinTextObject& rCompare ) const
 }
 
 // #i102062#
-bool BinTextObject::isWrongListEqual(const BinTextObject& rCompare) const
+bool EditTextObjectImpl::isWrongListEqual(const EditTextObjectImpl& rCompare) const
 {
     if (aContents.size() != rCompare.aContents.size())
     {
@@ -1532,7 +1532,7 @@ bool BinTextObject::isWrongListEqual(const BinTextObject& rCompare) const
 
 #define CHARSETMARKER   0x9999
 
-void BinTextObject::CreateData300( SvStream& rIStream )
+void EditTextObjectImpl::CreateData300( SvStream& rIStream )
 {
     // For forward compatibility.
 
diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx
index b8d6b10..0a3c520 100644
--- a/editeng/source/editeng/editobj2.hxx
+++ b/editeng/source/editeng/editobj2.hxx
@@ -109,7 +109,7 @@ public:
 
 class ContentInfo
 {
-    friend class BinTextObject;
+    friend class EditTextObjectImpl;
 public:
     typedef boost::ptr_vector<XEditAttribute> XEditAttributesType;
 
@@ -150,7 +150,7 @@ public:
     bool isWrongListEqual(const ContentInfo& rCompare) const;
 };
 
-class BinTextObject : public EditTextObject
+class EditTextObjectImpl : public EditTextObject
 {
     using EditTextObject::operator==;
     using EditTextObject::isWrongListEqual;
@@ -180,9 +180,9 @@ protected:
                                         const String& rNewName, SfxStyleFamily eNewFamily );
 
 public:
-                            BinTextObject( SfxItemPool* pPool );
-                            BinTextObject( const BinTextObject& );
-    virtual                 ~BinTextObject();
+                            EditTextObjectImpl( SfxItemPool* pPool );
+                            EditTextObjectImpl( const EditTextObjectImpl& );
+    virtual                 ~EditTextObjectImpl();
 
     virtual EditTextObject* Clone() const;
 
@@ -255,10 +255,10 @@ public:
     bool                    IsOwnerOfPool() const       { return bOwnerOfPool; }
     void                    StoreUnicodeStrings( sal_Bool b ) { bStoreUnicodeStrings = b; }
 
-    bool                    operator==( const BinTextObject& rCompare ) const;
+    bool                    operator==( const EditTextObjectImpl& rCompare ) const;
 
     // #i102062#
-    bool isWrongListEqual(const BinTextObject& rCompare) const;
+    bool isWrongListEqual(const EditTextObjectImpl& rCompare) const;
 
     // from SfxItemPoolUser
     virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool);
diff --git a/editeng/source/editeng/fieldupdater.cxx b/editeng/source/editeng/fieldupdater.cxx
index 40e9979..2a383f8 100644
--- a/editeng/source/editeng/fieldupdater.cxx
+++ b/editeng/source/editeng/fieldupdater.cxx
@@ -38,15 +38,15 @@ namespace editeng {
 
 class FieldUpdaterImpl
 {
-    BinTextObject& mrObj;
+    EditTextObjectImpl& mrObj;
 public:
-    FieldUpdaterImpl(EditTextObject& rObj) : mrObj(static_cast<BinTextObject&>(rObj)) {}
+    FieldUpdaterImpl(EditTextObject& rObj) : mrObj(static_cast<EditTextObjectImpl&>(rObj)) {}
     FieldUpdaterImpl(const FieldUpdaterImpl& r) : mrObj(r.mrObj) {}
 
     void updateTableFields(int nTab)
     {
         SfxItemPool* pPool = mrObj.GetPool();
-        BinTextObject::ContentInfosType& rContents = mrObj.GetContents();
+        EditTextObjectImpl::ContentInfosType& rContents = mrObj.GetContents();
         for (size_t i = 0; i < rContents.size(); ++i)
         {
             ContentInfo& rContent = rContents[i];
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 0f1ee43..271f231 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -522,7 +522,7 @@ private:
     void                GetCharAttribs( sal_uInt16 nPara, std::vector<EECharAttrib>& rLst ) const;
 
     EditTextObject*     CreateBinTextObject( EditSelection aSelection, SfxItemPool*, sal_Bool bAllowBigObjects = sal_False, sal_uInt16 nBigObjStart = 0 );
-    EditSelection       InsertBinTextObject( BinTextObject&, EditPaM aPaM );
+    EditSelection       InsertBinTextObject( EditTextObjectImpl&, EditPaM aPaM );
     EditSelection       InsertText( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::XTransferable >& rxDataObj, const String& rBaseURL, const EditPaM& rPaM, sal_Bool bUseSpecial );
 
     EditPaM             Clear();
diff --git a/editeng/source/editeng/impedit4.cxx b/editeng/source/editeng/impedit4.cxx
index d66e1b5..0209f09 100644
--- a/editeng/source/editeng/impedit4.cxx
+++ b/editeng/source/editeng/impedit4.cxx
@@ -300,7 +300,7 @@ static void lcl_FindValidAttribs( ItemList& rLst, ContentNode* pNode, sal_uInt16
 
 sal_uInt32 ImpEditEngine::WriteBin( SvStream& rOutput, EditSelection aSel, sal_Bool bStoreUnicodeStrings )
 {
-    BinTextObject* pObj = (BinTextObject*)CreateBinTextObject( aSel, NULL );
+    EditTextObjectImpl* pObj = (EditTextObjectImpl*)CreateBinTextObject( aSel, NULL );
     pObj->StoreUnicodeStrings( bStoreUnicodeStrings );
     pObj->Store( rOutput );
     delete pObj;
@@ -1022,7 +1022,7 @@ EditTextObject* ImpEditEngine::CreateTextObject( EditSelection aSel )
 
 EditTextObject* ImpEditEngine::CreateBinTextObject( EditSelection aSel, SfxItemPool* pPool, sal_Bool bAllowBigObjects, sal_uInt16 nBigObjectStart )
 {
-    BinTextObject* pTxtObj = new BinTextObject( pPool );
+    EditTextObjectImpl* pTxtObj = new EditTextObjectImpl( pPool );
     pTxtObj->SetVertical( IsVertical() );
     MapUnit eMapUnit = (MapUnit)aEditDoc.GetItemPool().GetMetric( DEF_METRIC );
     pTxtObj->SetMetric( (sal_uInt16) eMapUnit );
@@ -1195,12 +1195,12 @@ EditSelection ImpEditEngine::InsertText( const EditTextObject& rTextObject, Edit
     aSel.Adjust( aEditDoc );
     if ( aSel.HasRange() )
         aSel = ImpDeleteSelection( aSel );
-    EditSelection aNewSel = InsertBinTextObject( (BinTextObject&)rTextObject, aSel.Max() );
+    EditSelection aNewSel = InsertBinTextObject( (EditTextObjectImpl&)rTextObject, aSel.Max() );
     LeaveBlockNotifications();
     return aNewSel;
 }
 
-EditSelection ImpEditEngine::InsertBinTextObject( BinTextObject& rTextObject, EditPaM aPaM )
+EditSelection ImpEditEngine::InsertBinTextObject( EditTextObjectImpl& rTextObject, EditPaM aPaM )
 {
     // Optimize: No getPos undFindParaportion, instead calculate index!
     EditSelection aSel( aPaM, aPaM );
commit 9260badb6f3d78b4e2bfcf79394b52befad12482
Author: Kohei Yoshida <kohei.yoshida at gmail.com>
Date:   Tue Jan 8 12:23:26 2013 -0500

    More SfxItemPoolUser up to the base class.
    
    Change-Id: I44819d66273e22db9f82d095061e3df627b64dae

diff --git a/editeng/inc/editeng/editobj.hxx b/editeng/inc/editeng/editobj.hxx
index 12c089c..9c0a438 100644
--- a/editeng/inc/editeng/editobj.hxx
+++ b/editeng/inc/editeng/editobj.hxx
@@ -24,6 +24,7 @@
 #include <tools/debug.hxx>
 #include <rsc/rscsfx.hxx>
 #include <svl/itemset.hxx>
+#include "svl/itempool.hxx"
 #include <editeng/eeitem.hxx>
 #include <editeng/editdata.hxx>
 #include "editeng/editengdllapi.h"
@@ -44,7 +45,7 @@ class FieldUpdater;
 
 }
 
-class EDITENG_DLLPUBLIC EditTextObject
+class EDITENG_DLLPUBLIC EditTextObject : public SfxItemPoolUser
 {
 private:
     sal_uInt16              nWhich;
@@ -121,6 +122,8 @@ public:
 
     // #i102062#
     bool isWrongListEqual(const EditTextObject& rCompare) const;
+
+    virtual void ObjectInDestruction(const SfxItemPool& rSfxItemPool) = 0;
 };
 
 #endif  // _EDITOBJ_HXX
diff --git a/editeng/source/editeng/editobj.cxx b/editeng/source/editeng/editobj.cxx
index cd1bc10..af2c484 100644
--- a/editeng/source/editeng/editobj.cxx
+++ b/editeng/source/editeng/editobj.cxx
@@ -497,8 +497,7 @@ EditEngineItemPool* getEditEngineItemPool(SfxItemPool* pPool)
 }
 
 BinTextObject::BinTextObject( SfxItemPool* pP ) :
-    EditTextObject( EE_FORMAT_BIN ),
-    SfxItemPoolUser()
+    EditTextObject( EE_FORMAT_BIN )
 {
     nVersion = 0;
     nMetric = 0xFFFF;
@@ -536,8 +535,7 @@ BinTextObject::BinTextObject( SfxItemPool* pP ) :
 }
 
 BinTextObject::BinTextObject( const BinTextObject& r ) :
-    EditTextObject( r ),
-    SfxItemPoolUser()
+    EditTextObject( r )
 {
     nVersion = r.nVersion;
     nMetric = r.nMetric;
diff --git a/editeng/source/editeng/editobj2.hxx b/editeng/source/editeng/editobj2.hxx
index ef35579..b8d6b10 100644
--- a/editeng/source/editeng/editobj2.hxx
+++ b/editeng/source/editeng/editobj2.hxx
@@ -150,7 +150,7 @@ public:
     bool isWrongListEqual(const ContentInfo& rCompare) const;
 };
 
-class BinTextObject : public EditTextObject, public SfxItemPoolUser
+class BinTextObject : public EditTextObject
 {
     using EditTextObject::operator==;
     using EditTextObject::isWrongListEqual;


More information about the Libreoffice-commits mailing list