summaryrefslogtreecommitdiff
path: root/embedserv/source/inprocserv
diff options
context:
space:
mode:
Diffstat (limited to 'embedserv/source/inprocserv')
-rw-r--r--embedserv/source/inprocserv/advisesink.cxx184
-rw-r--r--embedserv/source/inprocserv/advisesink.hxx97
-rw-r--r--embedserv/source/inprocserv/dllentry.cxx351
-rw-r--r--embedserv/source/inprocserv/exports.dxp5
-rw-r--r--embedserv/source/inprocserv/inprocembobj.cxx1816
-rw-r--r--embedserv/source/inprocserv/inprocembobj.h244
-rw-r--r--embedserv/source/inprocserv/makefile.mk80
-rw-r--r--embedserv/source/inprocserv/smartpointer.hxx185
8 files changed, 0 insertions, 2962 deletions
diff --git a/embedserv/source/inprocserv/advisesink.cxx b/embedserv/source/inprocserv/advisesink.cxx
deleted file mode 100644
index 09b24e2c0..000000000
--- a/embedserv/source/inprocserv/advisesink.cxx
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#pragma warning(disable : 4668)
-
-#include <advisesink.hxx>
-
-namespace inprocserv
-{
-
-OleWrapperAdviseSink::OleWrapperAdviseSink()
-: m_nRefCount( 0 )
-, m_pFormatEtc( NULL )
-, m_nAspect( DVASPECT_CONTENT )
-, m_nRegID( 0 )
-, m_bObjectAdvise( TRUE )
-, m_nDataRegFlag( 0 )
-, m_nViewRegFlag( 0 )
-, m_bHandleClosed( TRUE )
-, m_bClosed( FALSE )
-{
-}
-
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener )
-: m_nRefCount( 0 )
-, m_pListener( pListener )
-, m_pFormatEtc( NULL )
-, m_nAspect( DVASPECT_CONTENT )
-, m_nRegID( 0 )
-, m_bObjectAdvise( TRUE )
-, m_nDataRegFlag( 0 )
-, m_nViewRegFlag( 0 )
-, m_bHandleClosed( FALSE )
-, m_bClosed( FALSE )
-{
-}
-
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener, FORMATETC* pFormatEtc, DWORD nDataRegFlag )
-: m_nRefCount( 0 )
-, m_pListener( pListener )
-, m_pFormatEtc( NULL )
-, m_nAspect( DVASPECT_CONTENT )
-, m_nRegID( 0 )
-, m_bObjectAdvise( FALSE )
-, m_nDataRegFlag( nDataRegFlag )
-, m_nViewRegFlag( 0 )
-, m_bHandleClosed( FALSE )
-, m_bClosed( FALSE )
-{
- if ( pFormatEtc )
- {
- m_pFormatEtc = new FORMATETC;
- m_pFormatEtc->cfFormat = pFormatEtc->cfFormat;
- m_pFormatEtc->ptd = NULL;
- m_pFormatEtc->dwAspect = pFormatEtc->dwAspect;
- m_pFormatEtc->lindex = pFormatEtc->lindex;
- m_pFormatEtc->tymed = pFormatEtc->tymed;
- }
-}
-
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener, DWORD nAspect, DWORD nViewRegFlag )
-: m_nRefCount( 0 )
-, m_pListener( pListener )
-, m_pFormatEtc( NULL )
-, m_nAspect( nAspect )
-, m_nRegID( 0 )
-, m_bObjectAdvise( TRUE )
-, m_nDataRegFlag( 0 )
-, m_nViewRegFlag( nViewRegFlag )
-, m_bHandleClosed( FALSE )
-, m_bClosed( FALSE )
-{
-}
-
-OleWrapperAdviseSink::~OleWrapperAdviseSink()
-{
- if ( m_pFormatEtc )
- delete m_pFormatEtc;
-}
-
-STDMETHODIMP OleWrapperAdviseSink::QueryInterface( REFIID riid , void** ppv )
-{
- *ppv=NULL;
-
- if ( riid == IID_IUnknown )
- *ppv = (IUnknown*)this;
-
- if ( riid == IID_IAdviseSink )
- *ppv = (IAdviseSink*)this;
-
- if ( *ppv != NULL )
- {
- ((IUnknown*)*ppv)->AddRef();
- return S_OK;
- }
-
- return E_NOINTERFACE;
-}
-
-STDMETHODIMP_(ULONG) OleWrapperAdviseSink::AddRef()
-{
- return ++m_nRefCount;
-}
-
-STDMETHODIMP_(ULONG) OleWrapperAdviseSink::Release()
-{
- ULONG nReturn = --m_nRefCount;
- if ( m_nRefCount == 0 )
- delete this;
-
- return nReturn;
-}
-
-STDMETHODIMP_(void) OleWrapperAdviseSink::OnDataChange( LPFORMATETC pFetc, LPSTGMEDIUM pMedium )
-{
- if ( m_pListener )
- {
- m_pListener->OnDataChange( pFetc, pMedium );
- }
-}
-
-STDMETHODIMP_(void) OleWrapperAdviseSink::OnViewChange( DWORD dwAspect, LONG lindex )
-{
- if ( m_pListener )
- {
- m_pListener->OnViewChange( dwAspect, lindex );
- }
-}
-
-STDMETHODIMP_(void) OleWrapperAdviseSink::OnRename( LPMONIKER pMoniker )
-{
- if ( m_pListener )
- {
- m_pListener->OnRename( pMoniker );
- }
-}
-
-STDMETHODIMP_(void) OleWrapperAdviseSink::OnSave(void)
-{
- if ( m_pListener )
- {
- m_pListener->OnSave();
- }
-}
-
-STDMETHODIMP_(void) OleWrapperAdviseSink::OnClose(void)
-{
- if ( m_pListener )
- {
- m_pListener->OnClose();
- }
-
- if ( m_bHandleClosed )
- m_bClosed = TRUE;
-}
-
-} // namespace inprocserv
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/advisesink.hxx b/embedserv/source/inprocserv/advisesink.hxx
deleted file mode 100644
index 22246b1ef..000000000
--- a/embedserv/source/inprocserv/advisesink.hxx
+++ /dev/null
@@ -1,97 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <windows.h>
-#include "smartpointer.hxx"
-
-namespace inprocserv {
-
-class OleWrapperAdviseSink : public IAdviseSink
-{
-protected:
- ULONG m_nRefCount;
-
- ComSmart< IAdviseSink > m_pListener;
- DWORD m_nListenerID;
-
- FORMATETC* m_pFormatEtc;
- DWORD m_nAspect;
-
- DWORD m_nRegID;
- DWORD m_bObjectAdvise;
- DWORD m_nDataRegFlag;
- DWORD m_nViewRegFlag;
-
- BOOL m_bHandleClosed;
- BOOL m_bClosed;
-
-public:
- // an AdviseSink for own needs, should be created always
- OleWrapperAdviseSink();
-
- // an AdviseSink for IOleObject interface
- OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener );
-
- // an AdviseSink for IDataObject interface
- OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener, FORMATETC* pFormatEtc, DWORD nDataRegFlag );
-
- // an AdviseSink for IViewObject interface
- OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener, DWORD nAspect, DWORD nViewRegFlag );
-
- virtual ~OleWrapperAdviseSink();
-
- void SetRegID( DWORD nRegID ) { m_nRegID = nRegID; }
- DWORD GetRegID() { return m_nRegID; }
-
- BOOL IsOleAdvise() { return m_bObjectAdvise; }
- DWORD GetDataAdviseFlag() { return m_nDataRegFlag; }
- DWORD GetViewAdviseFlag() { return m_nViewRegFlag; }
-
- FORMATETC* GetFormatEtc() { return m_pFormatEtc; }
- DWORD GetAspect() { return m_nAspect; }
- ComSmart< IAdviseSink >& GetOrigAdvise() { return m_pListener; }
- void DisconnectOrigAdvise() { m_pListener = NULL; }
-
- void SetClosed() { m_bClosed = TRUE; }
- void UnsetClosed() { m_bClosed = FALSE; }
- BOOL IsClosed() { return m_bClosed; }
-
- STDMETHODIMP QueryInterface(REFIID, void**);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
-
- STDMETHODIMP_(void) OnDataChange(LPFORMATETC, LPSTGMEDIUM);
- STDMETHODIMP_(void) OnViewChange(DWORD, LONG);
- STDMETHODIMP_(void) OnRename(LPMONIKER);
- STDMETHODIMP_(void) OnSave(void);
- STDMETHODIMP_(void) OnClose(void);
-};
-
-}; // namespace advisesink
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/dllentry.cxx b/embedserv/source/inprocserv/dllentry.cxx
deleted file mode 100644
index acb94fd5e..000000000
--- a/embedserv/source/inprocserv/dllentry.cxx
+++ /dev/null
@@ -1,351 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <stdio.h>
-#include <inprocembobj.h>
-#ifdef __MINGW32__
-#define INITGUID
-#endif
-#include <embservconst.h>
-
-static const GUID* guidList[ SUPPORTED_FACTORIES_NUM ] = {
- &OID_WriterTextServer,
- &OID_WriterOASISTextServer,
- &OID_CalcServer,
- &OID_CalcOASISServer,
- &OID_DrawingServer,
- &OID_DrawingOASISServer,
- &OID_PresentationServer,
- &OID_PresentationOASISServer,
- &OID_MathServer,
- &OID_MathOASISServer
-};
-
-static HINSTANCE g_hInstance = NULL;
-static ULONG g_nObj = 0;
-static ULONG g_nLock = 0;
-
-
-namespace {
- void FillCharFromInt( int nValue, char* pBuf, int nLen )
- {
- int nInd = 0;
- while( nInd < nLen )
- {
- char nSign = ( nValue / ( 1 << ( ( nLen - nInd ) * 4 ) ) ) % 16;
- if ( nSign >= 0 && nSign <= 9 )
- pBuf[nInd] = nSign + '0';
- else if ( nSign >= 10 && nSign <= 15 )
- pBuf[nInd] = nSign - 10 + 'a';
-
- nInd++;
- }
- }
-
- int GetStringFromClassID( const GUID& guid, char* pBuf, int nLen )
- {
- // is not allowed to insert
- if ( nLen < 38 )
- return 0;
-
- pBuf[0] = '{';
- FillCharFromInt( guid.Data1, &pBuf[1], 8 );
- pBuf[9] = '-';
- FillCharFromInt( guid.Data2, &pBuf[10], 4 );
- pBuf[14] = '-';
- FillCharFromInt( guid.Data3, &pBuf[15], 4 );
- pBuf[19] = '-';
-
- int nInd = 0;
- for ( nInd = 0; nInd < 2 ; nInd++ )
- FillCharFromInt( guid.Data4[nInd], &pBuf[20 + 2*nInd], 2 );
- pBuf[24] = '-';
- for ( nInd = 2; nInd < 8 ; nInd++ )
- FillCharFromInt( guid.Data4[nInd], &pBuf[20 + 1 + 2*nInd], 2 );
- pBuf[37] = '}';
-
- return 38;
- }
-
- HRESULT WriteLibraryToRegistry( char* pLibrary, DWORD nLen )
- {
- HRESULT hRes = E_FAIL;
- if ( pLibrary && nLen )
- {
- HKEY hKey = NULL;
-
- hRes = S_OK;
- for ( int nInd = 0; nInd < SUPPORTED_FACTORIES_NUM; nInd++ )
- {
- char* pSubKey = "Software\\Classes\\CLSID\\.....................................\\InprocHandler32";
-
- int nGuidLen = GetStringFromClassID( *guidList[nInd], &pSubKey[23], 38 );
-
- BOOL bLocalSuccess = FALSE;
- if ( nGuidLen && nGuidLen == 38 )
- {
- if ( ERROR_SUCCESS == RegOpenKey( HKEY_LOCAL_MACHINE, pSubKey, &hKey ) )
- {
- if ( ERROR_SUCCESS == RegSetValueEx( hKey, "", 0, REG_SZ, (const BYTE*)pLibrary, nLen ) )
- bLocalSuccess = TRUE;
- }
-
- if ( hKey )
- {
- RegCloseKey( hKey );
- hKey = NULL;
- }
- }
-
- if ( !bLocalSuccess )
- hRes = E_FAIL;
- }
- }
-
- return hRes;
- }
-};
-
-// ===========================
-// InprocEmbedProvider_Impl declaration
-// ===========================
-
-namespace inprocserv
-{
-
-class InprocEmbedProvider_Impl : public IClassFactory, public InprocCountedObject_Impl
-{
-public:
-
- InprocEmbedProvider_Impl( const GUID& guid );
- virtual ~InprocEmbedProvider_Impl();
-
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj);
- STDMETHOD_(ULONG, AddRef)();
- STDMETHOD_(ULONG, Release)();
-
- /* IClassFactory methods */
- STDMETHOD(CreateInstance)(IUnknown FAR* punkOuter, REFIID riid, void FAR* FAR* ppv);
- STDMETHOD(LockServer)(int fLock);
-
-protected:
-
- ULONG m_refCount;
- GUID m_guid;
-};
-}; // namespace inprocserv
-
-
-// ===========================
-// Entry points
-// ===========================
-
-// -------------------------------------------------------------------------------
-extern "C" BOOL WINAPI DllMain( HINSTANCE hInstance, DWORD dwReason, LPVOID /*lpReserved*/ )
-{
- if (dwReason == DLL_PROCESS_ATTACH)
- {
- g_hInstance = hInstance;
- }
- else if (dwReason == DLL_PROCESS_DETACH)
- {
- }
-
- return TRUE; // ok
-}
-
-// -------------------------------------------------------------------------------
-extern "C" STDAPI DllGetClassObject( REFCLSID rclsid, REFIID riid, LPVOID* ppv )
-{
- for( int nInd = 0; nInd < SUPPORTED_FACTORIES_NUM; nInd++ )
- if ( *guidList[nInd] == rclsid )
- {
- if ( !IsEqualIID( riid, IID_IUnknown ) && !IsEqualIID( riid, IID_IClassFactory ) )
- return E_NOINTERFACE;
-
- *ppv = new inprocserv::InprocEmbedProvider_Impl( rclsid );
- if ( *ppv == NULL )
- return E_OUTOFMEMORY;
-
- ((LPUNKNOWN)*ppv)->AddRef();
- return S_OK;
- }
-
- return E_FAIL;
-}
-
-// -------------------------------------------------------------------------------
-extern "C" STDAPI DllCanUnloadNow()
-{
- if ( !g_nObj && !g_nLock )
- return S_OK;
-
- return S_FALSE;
-}
-
-// -------------------------------------------------------------------------------
-STDAPI DllRegisterServer( void )
-{
- char aLibPath[1024];
- HMODULE aCurModule = GetModuleHandleA( "inprocserv.dll" );
- if( aCurModule )
- {
- DWORD nLen = GetModuleFileNameA( aCurModule, aLibPath, 1019 );
- if ( nLen && nLen < 1019 )
- {
- aLibPath[nLen++] = 0;
- return WriteLibraryToRegistry( aLibPath, nLen );
- }
- }
-
- return E_FAIL;
-}
-
-// -------------------------------------------------------------------------------
-STDAPI DllUnregisterServer( void )
-{
- return WriteLibraryToRegistry( "ole32.dll", 10 );
-}
-
-// ===========================
-// End of entry points
-// ===========================
-
-namespace inprocserv
-{
-
-// ===========================
-// InprocCountedObject_Impl implementation
-// ===========================
-
-// -------------------------------------------------------------------------------
-InprocCountedObject_Impl::InprocCountedObject_Impl()
-{
- g_nObj++;
-}
-
-// -------------------------------------------------------------------------------
-InprocCountedObject_Impl::~InprocCountedObject_Impl()
-{
- g_nObj--;
-}
-
-// ===========================
-// InprocEmbedProvider_Impl implementation
-// ===========================
-
-// -------------------------------------------------------------------------------
-InprocEmbedProvider_Impl::InprocEmbedProvider_Impl( const GUID& guid )
-: m_refCount( 0 )
-, m_guid( guid )
-{
-}
-
-// -------------------------------------------------------------------------------
-InprocEmbedProvider_Impl::~InprocEmbedProvider_Impl()
-{
-}
-
-// IUnknown
-// -------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedProvider_Impl::QueryInterface( REFIID riid, void FAR* FAR* ppv )
-{
- if(IsEqualIID(riid, IID_IUnknown))
- {
- AddRef();
- *ppv = (IUnknown*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IClassFactory))
- {
- AddRef();
- *ppv = (IClassFactory*) this;
- return S_OK;
- }
-
- *ppv = NULL;
- return E_NOINTERFACE;
-}
-
-// -------------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) InprocEmbedProvider_Impl::AddRef()
-{
- return ++m_refCount;
-}
-
-// -------------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) InprocEmbedProvider_Impl::Release()
-{
- sal_Int32 nCount = --m_refCount;
- if ( nCount == 0 )
- delete this;
- return nCount;
-}
-
-// -------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedProvider_Impl::CreateInstance(IUnknown FAR* punkOuter,
- REFIID riid,
- void FAR* FAR* ppv)
-{
- // TODO/LATER: should the aggregation be supported?
- // if ( punkOuter != NULL && riid != IID_IUnknown )
- // return E_NOINTERFACE;
- if ( punkOuter != NULL )
- return CLASS_E_NOAGGREGATION;
-
- InprocEmbedDocument_Impl* pEmbedDocument = new InprocEmbedDocument_Impl( m_guid );
- if ( !pEmbedDocument )
- return E_OUTOFMEMORY;
-
- pEmbedDocument->AddRef();
- HRESULT hr = pEmbedDocument->Init();
- if ( SUCCEEDED( hr ) )
- hr = pEmbedDocument->QueryInterface( riid, ppv );
- pEmbedDocument->Release();
-
- if ( !SUCCEEDED( hr ) )
- *ppv = NULL;
-
- return hr;
-}
-
-// -------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedProvider_Impl::LockServer( int fLock )
-{
- if ( fLock )
- g_nLock++;
- else
- g_nLock--;
-
- return S_OK;
-}
-
-}; // namespace inprocserv
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/exports.dxp b/embedserv/source/inprocserv/exports.dxp
deleted file mode 100644
index 65a5126f1..000000000
--- a/embedserv/source/inprocserv/exports.dxp
+++ /dev/null
@@ -1,5 +0,0 @@
-DllGetClassObject
-DllCanUnloadNow
-DllMain
-DllRegisterServer
-DllUnregisterServer
diff --git a/embedserv/source/inprocserv/inprocembobj.cxx b/embedserv/source/inprocserv/inprocembobj.cxx
deleted file mode 100644
index d984e9994..000000000
--- a/embedserv/source/inprocserv/inprocembobj.cxx
+++ /dev/null
@@ -1,1816 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#include <embservconst.h>
-#include "inprocembobj.h"
-
-namespace inprocserv
-{
-
-//-------------------------------------------------------------------------------
-BOOL StringsEqual( LPCOLESTR pszNameFromOutside, wchar_t* pOwnName )
-{
- BOOL bResult = TRUE;
-
- if ( pszNameFromOutside && pOwnName )
- {
- for ( int nInd = 0; pszNameFromOutside[nInd] != 0 || pOwnName[nInd] != 0; nInd++ )
- {
- if ( pszNameFromOutside[nInd] != pOwnName[nInd] )
- {
- bResult = FALSE;
- break;
- }
- }
- }
- else if ( pszNameFromOutside || pOwnName )
- bResult = FALSE;
-
- return bResult;
-}
-
-//-------------------------------------------------------------------------------
-HRESULT InprocEmbedDocument_Impl::Init()
-{
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-void InprocEmbedDocument_Impl::SetName( LPCOLESTR pszNameFromOutside, wchar_t*& pOwnName )
-{
- if ( !pszNameFromOutside )
- return;
-
- // copy the string
- size_t nLen = 0;
- while( pszNameFromOutside[nLen] != 0 )
- nLen++;
-
- if ( pOwnName )
- {
- delete[] pOwnName;
- pOwnName = NULL;
- }
-
- pOwnName = new wchar_t[nLen+1];
- for ( size_t nInd = 0; nInd < nLen; nInd++ )
- pOwnName[nInd] = pszNameFromOutside[nInd];
- pOwnName[nLen] = 0;
-}
-
-//-------------------------------------------------------------------------------
-BOOL InprocEmbedDocument_Impl::CheckDefHandler()
-{
- // set the own listener
- if ( m_pOleAdvises[0] == NULL )
- {
- m_pOleAdvises[0] = new OleWrapperAdviseSink();
- }
- else
- {
- if ( m_pOleAdvises[0]->IsClosed() )
- {
- if ( m_pDefHandler )
- {
- // deregister all the listeners
-
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
- if ( m_pOleAdvises[nInd] )
- {
- DWORD nID = m_pOleAdvises[nInd]->GetRegID();
- pOleObject->Unadvise( nID );
- m_pOleAdvises[nInd]->SetRegID( 0 );
- }
-
- pOleObject->SetClientSite( NULL );
- }
-
- ComSmart< IDataObject > pIDataObject;
- hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
- if ( SUCCEEDED( hr ) && pIDataObject )
- {
- for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
- if ( m_pDataAdvises[nInd] )
- {
- DWORD nID = m_pDataAdvises[nInd]->GetRegID();
- pIDataObject->DUnadvise( nID );
- m_pDataAdvises[nInd]->SetRegID( 0 );
- }
- }
-
- ComSmart< IViewObject > pIViewObject;
- hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
- if ( SUCCEEDED( hr ) && pIViewObject )
- {
- if ( m_pViewAdvise )
- pIViewObject->SetAdvise( m_pViewAdvise->GetAspect(), m_pViewAdvise->GetViewAdviseFlag(), NULL );
- }
-
- ComSmart< IPersistStorage > pPersist;
- hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
- if ( SUCCEEDED( hr ) && pPersist )
- {
- // disconnect the old wrapper from the storage
- pPersist->HandsOffStorage();
- }
-
- m_pDefHandler = NULL;
- }
-
- m_pOleAdvises[0]->UnsetClosed();
- }
- }
-
- if ( m_nCallsOnStack )
- return FALSE;
-
- if ( !m_pDefHandler )
- {
- // create a new default inprocess handler
- HRESULT hr = OleCreateDefaultHandler( m_guid, NULL, IID_IUnknown, (void**)&m_pDefHandler );
- if ( SUCCEEDED( hr ) )
- {
- {
- if ( m_nInitMode == INIT_FROM_STORAGE )
- {
- ComSmart< IPersistStorage > pPersist;
- hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist && m_pStorage )
- hr = pPersist->InitNew( m_pStorage );
- }
- else if ( m_nInitMode == LOAD_FROM_STORAGE )
- {
- ComSmart< IPersistStorage > pPersist;
- hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist && m_pStorage )
- hr = pPersist->Load( m_pStorage );
- }
- else if ( m_nInitMode == LOAD_FROM_FILE )
- {
- ComSmart< IPersistFile > pPersistFile;
- hr = m_pDefHandler->QueryInterface( IID_IPersistFile, (void**)&pPersistFile );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersistFile && m_pFileName )
- hr = pPersistFile->Load( m_pFileName, m_nFileOpenMode );
- }
- }
- }
-
- if ( !SUCCEEDED( hr ) || !m_pDefHandler )
- {
- m_pDefHandler = NULL;
- return FALSE;
- }
-
- // register all the listeners new
-
- ComSmart< IOleObject > pOleObject;
- hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- if ( m_pClientSite )
- pOleObject->SetClientSite( m_pClientSite );
-
- for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
- if ( m_pOleAdvises[nInd] )
- {
- DWORD nRegID = 0;
- if ( SUCCEEDED( pOleObject->Advise( m_pOleAdvises[nInd], &nRegID ) ) && nRegID > 0 )
- m_pOleAdvises[nInd]->SetRegID( nRegID );
- }
- }
-
- ComSmart< IDataObject > pIDataObject;
- hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
- if ( SUCCEEDED( hr ) && pIDataObject )
- {
- for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
- if ( m_pDataAdvises[nInd] )
- {
- DWORD nRegID = 0;
- if ( SUCCEEDED( pIDataObject->DAdvise( m_pDataAdvises[nInd]->GetFormatEtc(), m_pDataAdvises[nInd]->GetDataAdviseFlag(), m_pDataAdvises[nInd], &nRegID ) ) && nRegID > 0 )
- m_pDataAdvises[nInd]->SetRegID( nRegID );
- }
- }
-
- ComSmart< IViewObject > pIViewObject;
- hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
- if ( SUCCEEDED( hr ) && pIViewObject )
- {
- if ( m_pViewAdvise )
- pIViewObject->SetAdvise( m_pViewAdvise->GetAspect(), m_pViewAdvise->GetViewAdviseFlag(), m_pViewAdvise );
- }
- }
-
-
- return TRUE;
-}
-
-//-------------------------------------------------------------------------------
-DWORD InprocEmbedDocument_Impl::InsertAdviseLinkToList( const ComSmart<OleWrapperAdviseSink>& pOwnAdvise, ComSmart< OleWrapperAdviseSink > pAdvises[] )
-{
- // the result should start from 1 in case of success, the element 0 can be used for own needs
- DWORD nResult = 0;
-
- if ( pOwnAdvise )
- {
- for ( DWORD nInd = 1; nInd < DEFAULT_ARRAY_LEN && nResult == 0; nInd++ )
- {
- if ( pAdvises[nInd] == pOwnAdvise )
- {
- nResult = nInd;
- }
- else if ( pAdvises[nInd] == NULL )
- {
- pAdvises[nInd] = pOwnAdvise;
- nResult = nInd;
- }
- }
- }
-
- return nResult;
-}
-
-//-------------------------------------------------------------------------------
-void InprocEmbedDocument_Impl::Clean()
-{
- m_pDefHandler = (IUnknown*)NULL;
-
- // no DisconnectOrigAdvise() call here, since it is no explicit disconnection
- for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
- {
- if ( m_pOleAdvises[nInd] )
- {
- ComSmart< OleWrapperAdviseSink > pAdvise = m_pOleAdvises[nInd];
- m_pOleAdvises[nInd] = NULL;
- }
-
- if ( m_pDataAdvises[nInd] )
- {
- ComSmart< OleWrapperAdviseSink > pAdvise = m_pDataAdvises[nInd];
- m_pDataAdvises[nInd] = NULL;
- }
- }
-
- m_pViewAdvise = NULL;
-
- m_nInitMode = NOINIT;
- m_pStorage = NULL;
-
- if ( m_pOleContainer )
- {
- m_pOleContainer->LockContainer( FALSE );
- m_pOleContainer = NULL;
- }
-
- m_pClientSite = NULL;
-
- m_nFileOpenMode = 0;
- if ( m_pFileName )
- {
- delete m_pFileName;
- m_pFileName = NULL;
- }
-}
-
-// IUnknown
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::QueryInterface( REFIID riid, void FAR* FAR* ppv )
-{
- if(IsEqualIID(riid, IID_IUnknown))
- {
- AddRef();
- *ppv = (IUnknown*) (IPersistStorage*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IPersist))
- {
- AddRef();
- *ppv = (IPersist*) (IPersistStorage*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IPersistStorage))
- {
- AddRef();
- *ppv = (IPersistStorage*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IDataObject))
- {
- AddRef();
- *ppv = (IDataObject*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IOleObject))
- {
- AddRef();
- *ppv = (IOleObject*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IPersistFile))
- {
- AddRef();
- *ppv = (IPersistFile*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IRunnableObject))
- {
- AddRef();
- *ppv = (IRunnableObject*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IViewObject))
- {
- AddRef();
- *ppv = (IViewObject*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IViewObject2))
- {
- AddRef();
- *ppv = (IViewObject2*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IOleCache))
- {
- AddRef();
- *ppv = (IOleCache*) &m_aInternalCache;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IOleCache2))
- {
- AddRef();
- *ppv = (IOleCache2*) &m_aInternalCache;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IOleWindow))
- {
- AddRef();
- *ppv = (IOleWindow*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IOleInPlaceObject))
- {
- AddRef();
- *ppv = (IOleInPlaceObject*) this;
- return S_OK;
- }
- else if (IsEqualIID(riid, IID_IDispatch))
- {
- AddRef();
- *ppv = (IDispatch*) this;
- return S_OK;
- }
-
- *ppv = NULL;
- return ResultFromScode(E_NOINTERFACE);
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) InprocEmbedDocument_Impl::AddRef()
-{
- return ++m_refCount;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) InprocEmbedDocument_Impl::Release()
-{
- // unfortunately there are reentrance problems in mfc that have to be workarounded
- sal_Int32 nCount = m_refCount > 0 ? --m_refCount : 0;
- if ( nCount == 0 && !m_bDeleted )
- {
- // deleting of this object can trigger deleting of mfc objects that will try to delete this object one more time
- m_bDeleted = TRUE;
-
- Clean();
- delete this;
- }
- return nCount;
-}
-
-// IPersist
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetClassID( CLSID* pClassId )
-{
- *pClassId = *&m_guid;
- return S_OK;
-}
-
-// IPersistStorage
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::IsDirty()
-{
- if ( m_pDefHandler == NULL || m_pOleAdvises[0] == NULL || m_pOleAdvises[0]->IsClosed() )
- return S_FALSE;
-
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- return pPersist->IsDirty();
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InitNew( IStorage *pStg )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- {
- hr = pPersist->InitNew( pStg );
- if ( SUCCEEDED( hr ) )
- {
- m_nInitMode = INIT_FROM_STORAGE;
- m_pStorage = pStg;
-
- m_nFileOpenMode = 0;
- if ( m_pFileName )
- {
- delete[] m_pFileName;
- m_pFileName = NULL;
- }
- }
-
- return hr;
- }
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Load( IStorage *pStg )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- {
- hr = pPersist->Load( pStg );
- if ( SUCCEEDED( hr ) )
- {
- m_nInitMode = LOAD_FROM_STORAGE;
- m_pStorage = pStg;
-
- m_nFileOpenMode = 0;
- if ( m_pFileName )
- {
- delete[] m_pFileName;
- m_pFileName = NULL;
- }
- }
-
- return hr;
- }
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Save( IStorage *pStgSave, BOOL fSameAsLoad )
-{
- if ( fSameAsLoad && ( m_pDefHandler == NULL || m_pOleAdvises[0] == NULL || m_pOleAdvises[0]->IsClosed() ) )
- return S_OK;
-
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- return pPersist->Save( pStgSave, fSameAsLoad );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SaveCompleted( IStorage *pStgNew )
-{
- if ( m_pDefHandler == NULL || m_pOleAdvises[0] == NULL || m_pOleAdvises[0]->IsClosed() )
- {
- if ( pStgNew )
- m_pStorage = pStgNew;
-
- return S_OK;
- }
-
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- {
- hr = pPersist->SaveCompleted( pStgNew );
- if ( SUCCEEDED( hr ) )
- {
- m_nInitMode = LOAD_FROM_STORAGE;
- if ( pStgNew )
- {
- m_pStorage = pStgNew;
- }
-
- m_nFileOpenMode = 0;
- if ( m_pFileName )
- {
- delete[] m_pFileName;
- m_pFileName = NULL;
- }
- }
-
- return hr;
- }
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::HandsOffStorage()
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- {
- hr = pPersist->HandsOffStorage();
- if ( SUCCEEDED( hr ) )
- {
- m_pStorage = NULL;
- }
-
- return hr;
- }
- }
-
- return E_FAIL;
-}
-
-// IPersistFile
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Load( LPCOLESTR pszFileName, DWORD dwMode )
-{
- if ( CheckDefHandler() && pszFileName )
- {
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- {
- hr = pPersist->Load( pszFileName, dwMode );
- if ( SUCCEEDED( hr ) )
- {
- m_nInitMode = LOAD_FROM_FILE;
- if ( m_pStorage )
- m_pStorage = NULL;
-
- m_nFileOpenMode = dwMode;
- // copy the string
- SetName( pszFileName, m_pFileName );
- }
-
- return hr;
- }
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Save( LPCOLESTR pszFileName, BOOL fRemember )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- return pPersist->Save( pszFileName, fRemember );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SaveCompleted( LPCOLESTR pszFileName )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- {
- hr = pPersist->SaveCompleted( pszFileName );
- if ( SUCCEEDED( hr ) )
- {
- m_nInitMode = LOAD_FROM_STORAGE;
- if ( m_pStorage )
- m_pStorage = NULL;
-
- m_nFileOpenMode = STGM_READWRITE; // was just written
- // copy the string
- SetName( pszFileName, m_pFileName );
- }
- }
-
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetCurFile( LPOLESTR *ppszFileName )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, (void**)&pPersist );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
- return pPersist->GetCurFile( ppszFileName );
- }
-
- return E_FAIL;
-}
-
-// IOleObject
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetClientSite( IOleClientSite* pSite )
-{
- if ( pSite == m_pClientSite )
- return S_OK;
-
- if ( !pSite )
- {
- m_pClientSite = NULL;
- if ( m_pOleContainer )
- {
- m_pOleContainer->LockContainer( FALSE );
- m_pOleContainer = NULL;
- }
- }
-
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- HRESULT hr = pOleObject->SetClientSite( pSite );
- if ( SUCCEEDED( hr ) )
- {
- m_pClientSite = pSite;
-
- if ( m_pOleContainer )
- {
- m_pOleContainer->LockContainer( FALSE );
- m_pOleContainer = NULL;
- }
-
- m_pClientSite->GetContainer( &m_pOleContainer );
- if ( m_pOleContainer )
- m_pOleContainer->LockContainer( TRUE );
- }
-
- return hr;
- }
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetClientSite( IOleClientSite** pSite )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->GetClientSite( pSite );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetHostNames( LPCOLESTR szContainerApp, LPCOLESTR szContainerObj )
-{
-
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- hr = pOleObject->SetHostNames( szContainerApp, szContainerObj );
- }
- }
-
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Close( DWORD dwSaveOption )
-{
- if ( m_pDefHandler && CheckDefHandler() )
- {
- // no need to close if there is no default handler.
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- hr = pOleObject->Close( dwSaveOption );
- hr = CoDisconnectObject( (IUnknown*)(IPersistStorage*)this, 0 );
- }
- }
-
- // if the object is closed from outside that means that it should go to uninitialized state
- Clean();
-
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetMoniker( DWORD dwWhichMoniker, IMoniker * pmk )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->SetMoniker( dwWhichMoniker, pmk );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetMoniker( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker ** ppmk )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->GetMoniker( dwAssign, dwWhichMoniker, ppmk );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InitFromData( IDataObject * pDataObject, BOOL fCreation, DWORD dwReserved )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->InitFromData( pDataObject, fCreation, dwReserved );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetClipboardData( DWORD dwReserved, IDataObject ** ppDataObject )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->GetClipboardData( dwReserved, ppDataObject );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::DoVerb(
- LONG iVerb,
- LPMSG pMsg,
- IOleClientSite *pActiveSite,
- LONG nLong,
- HWND hWin,
- LPCRECT pRect )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- hr = pOleObject->DoVerb( iVerb, pMsg, pActiveSite, nLong, hWin, pRect );
- if ( SUCCEEDED( hr ) )
- {
- }
-
- return hr;
- }
-
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::EnumVerbs( IEnumOLEVERB ** ppEnumOleVerb )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->EnumVerbs( ppEnumOleVerb );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Update()
-{
-
- if ( m_pDefHandler && CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->Update();
- }
-
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::IsUpToDate()
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->IsUpToDate();
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetUserClassID( CLSID *pClsid )
-{
- if ( pClsid )
- *pClsid = m_guid;
-
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetUserType( DWORD dwFormOfType, LPOLESTR * pszUserType )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->GetUserType( dwFormOfType, pszUserType );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetExtent( DWORD dwDrawAspect, SIZEL *psizel )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->SetExtent( dwDrawAspect, psizel );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetExtent( DWORD dwDrawAspect, SIZEL * psizel )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->GetExtent( dwDrawAspect, psizel );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Advise( IAdviseSink *pAdvSink, DWORD *pdwConnection )
-{
-
- if ( !pdwConnection )
- return E_FAIL;
-
- // CheckDefHandler will set the listener, avoid reusing of old listener
- if ( DEFAULT_ARRAY_LEN > *pdwConnection && *pdwConnection > 0 && m_pOleAdvises[*pdwConnection] )
- {
- m_pOleAdvises[*pdwConnection]->DisconnectOrigAdvise();
- m_pOleAdvises[*pdwConnection] = NULL;
- }
-
- if ( pAdvSink && CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- ComSmart< OleWrapperAdviseSink > pOwnAdvise( new OleWrapperAdviseSink( pAdvSink ) );
- DWORD nRegID = 0;
-
- if ( SUCCEEDED( pOleObject->Advise( pOwnAdvise, &nRegID ) ) && nRegID > 0 )
- {
- pOwnAdvise->SetRegID( nRegID );
- *pdwConnection = InsertAdviseLinkToList( pOwnAdvise, m_pOleAdvises );
- if ( *pdwConnection )
- return S_OK;
- else
- pOleObject->Unadvise( nRegID );
- }
- }
- }
-
- // return success always for now
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Unadvise( DWORD dwConnection )
-{
- if ( DEFAULT_ARRAY_LEN > dwConnection && dwConnection > 0 && m_pOleAdvises[dwConnection] )
- {
- if ( m_pDefHandler )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- {
- DWORD nID = m_pOleAdvises[dwConnection]->GetRegID();
- pOleObject->Unadvise( nID );
- }
- }
-
- m_pOleAdvises[dwConnection]->DisconnectOrigAdvise();
- m_pOleAdvises[dwConnection] = NULL;
-
- return S_OK;
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::EnumAdvise( IEnumSTATDATA ** /*ppenumAdvise*/ )
-{
- return E_NOTIMPL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetMiscStatus( DWORD dwAspect, DWORD * pdwStatus )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->GetMiscStatus( dwAspect, pdwStatus );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetColorScheme( LOGPALETTE * pLogpal )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, (void**)&pOleObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
- return pOleObject->SetColorScheme( pLogpal );
- }
-
- return E_FAIL;
-}
-
-//IDataObject
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetData( FORMATETC * pFormatetc, STGMEDIUM * pMedium )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->GetData( pFormatetc, pMedium );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetDataHere( FORMATETC * pFormatetc, STGMEDIUM * pMedium )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->GetDataHere( pFormatetc, pMedium );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::QueryGetData( FORMATETC * pFormatetc )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->QueryGetData( pFormatetc );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetCanonicalFormatEtc( FORMATETC * pFormatetcIn, FORMATETC * pFormatetcOut )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->GetCanonicalFormatEtc( pFormatetcIn, pFormatetcOut );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetData( FORMATETC * pFormatetc, STGMEDIUM * pMedium, BOOL fRelease )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->SetData( pFormatetc, pMedium, fRelease );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::EnumFormatEtc( DWORD dwDirection, IEnumFORMATETC ** ppFormatetc )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->EnumFormatEtc( dwDirection, ppFormatetc );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::DAdvise( FORMATETC * pFormatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection )
-{
-
- if ( !pdwConnection )
- return E_FAIL;
-
- // avoid reusing of the old listener
- if ( m_pDefHandler && DEFAULT_ARRAY_LEN > *pdwConnection && *pdwConnection > 0 && m_pDataAdvises[*pdwConnection] )
- {
- m_pDataAdvises[*pdwConnection]->DisconnectOrigAdvise();
- m_pDataAdvises[*pdwConnection] = NULL;
- }
-
- if ( pAdvSink && CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- {
- ComSmart< OleWrapperAdviseSink > pOwnAdvise( new OleWrapperAdviseSink( ComSmart<IAdviseSink>( pAdvSink ), pFormatetc, advf ) );
- DWORD nRegID = 0;
-
- if ( SUCCEEDED( pIDataObject->DAdvise( pFormatetc, advf, pOwnAdvise, &nRegID ) ) && nRegID > 0 )
- {
- pOwnAdvise->SetRegID( nRegID );
- *pdwConnection = InsertAdviseLinkToList( pOwnAdvise, m_pDataAdvises );
- if ( *pdwConnection )
- return S_OK;
- else
- pIDataObject->DUnadvise( nRegID );
- }
- }
- }
-
- // return success always for now
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::DUnadvise( DWORD dwConnection )
-{
- if ( m_pDefHandler && DEFAULT_ARRAY_LEN > dwConnection && dwConnection > 0 && m_pDataAdvises[dwConnection] )
- {
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- {
- DWORD nID = m_pDataAdvises[dwConnection]->GetRegID();
- pIDataObject->DUnadvise( nID );
- }
- }
-
- m_pDataAdvises[dwConnection]->DisconnectOrigAdvise();
- m_pDataAdvises[dwConnection] = NULL;
-
- return S_OK;
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::EnumDAdvise( IEnumSTATDATA ** ppenumAdvise )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, (void**)&pIDataObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
- return pIDataObject->EnumDAdvise( ppenumAdvise );
- }
-
- return E_FAIL;
-}
-
-// IRunnableObject
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetRunningClass( LPCLSID lpClsid )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, (void**)&pIRunObj );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
- return pIRunObj->GetRunningClass( lpClsid );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Run( LPBINDCTX pbc )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, (void**)&pIRunObj );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
- return pIRunObj->Run( pbc );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-BOOL STDMETHODCALLTYPE InprocEmbedDocument_Impl::IsRunning()
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, (void**)&pIRunObj );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
- return pIRunObj->IsRunning();
- }
-
- return E_FAIL;
-
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::LockRunning( BOOL fLock, BOOL fLastUnlockCloses )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, (void**)&pIRunObj );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
- return pIRunObj->LockRunning( fLock, fLastUnlockCloses );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetContainedObject( BOOL fContained)
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, (void**)&pIRunObj );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
- return pIRunObj->SetContainedObject( fContained );
- }
-
- return E_FAIL;
-}
-
-
-// IViewObject methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Draw( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL ( STDMETHODCALLTYPE *pfnContinue )( ULONG_PTR dwContinue ), ULONG_PTR dwContinue )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
- return pIViewObject->Draw( dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetColorSet( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
- return pIViewObject->GetColorSet( dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Freeze( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
- return pIViewObject->Freeze( dwDrawAspect, lindex, pvAspect, pdwFreeze );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Unfreeze( DWORD dwFreeze )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
- return pIViewObject->Unfreeze( dwFreeze );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetAdvise( DWORD aspects, DWORD advf, IAdviseSink *pAdvSink )
-{
-
- // CheckDefHandler will set the listener, avoid reusing of old listener
- if ( m_pViewAdvise )
- {
- m_pViewAdvise->DisconnectOrigAdvise();
- m_pViewAdvise = NULL;
- }
-
- if ( pAdvSink && CheckDefHandler() )
- {
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, (void**)&pIViewObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
- {
- ComSmart< OleWrapperAdviseSink > pOwnAdvise( new OleWrapperAdviseSink( pAdvSink, aspects, advf ) );
-
- if ( SUCCEEDED( pIViewObject->SetAdvise( aspects, advf, pOwnAdvise ) ) )
- {
- m_pViewAdvise = pOwnAdvise;
- return S_OK;
- }
- }
- }
-
- return S_OK;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetAdvise( DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink )
-{
- if ( !ppAdvSink )
- return E_INVALIDARG;
-
- if ( m_pViewAdvise )
- {
- if ( pAspects )
- *pAspects = m_pViewAdvise->GetAspect();
-
- if ( pAdvf )
- *pAdvf = m_pViewAdvise->GetViewAdviseFlag();
-
- *ppAdvSink = m_pViewAdvise->GetOrigAdvise();
- if ( *ppAdvSink )
- (*ppAdvSink)->AddRef();
- }
- else
- *ppAdvSink = NULL;
-
- return S_OK;
-}
-
-// IViewObject2 methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetExtent( DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE *ptd, LPSIZEL lpsizel )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IViewObject2 > pIViewObject2;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject2, (void**)&pIViewObject2 );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject2 )
- return pIViewObject2->GetExtent( dwDrawAspect, lindex, ptd, lpsizel );
- }
-
- return E_FAIL;
-}
-
-
-
-// IOleWindow methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetWindow( HWND *phwnd )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleWindow > pIOleWindow;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleWindow, (void**)&pIOleWindow );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleWindow )
- return pIOleWindow->GetWindow( phwnd );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::ContextSensitiveHelp( BOOL fEnterMode )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleWindow > pIOleWindow;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleWindow, (void**)&pIOleWindow );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleWindow )
- return pIOleWindow->ContextSensitiveHelp( fEnterMode );
- }
-
- return E_FAIL;
-}
-
-
-// IOleInPlaceObject methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InPlaceDeactivate( void )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, (void**)&pIOleInPlaceObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
- return pIOleInPlaceObject->InPlaceDeactivate();
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::UIDeactivate( void )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, (void**)&pIOleInPlaceObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
- return pIOleInPlaceObject->UIDeactivate();
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::SetObjectRects( LPCRECT lprcPosRect, LPCRECT lprcClipRect )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, (void**)&pIOleInPlaceObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
- return pIOleInPlaceObject->SetObjectRects( lprcPosRect, lprcClipRect );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::ReactivateAndUndo( void )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, (void**)&pIOleInPlaceObject );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
- return pIOleInPlaceObject->ReactivateAndUndo();
- }
-
- return E_FAIL;
-}
-
-
-// IDispatch methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetTypeInfoCount( UINT *pctinfo )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, (void**)&pIDispatch );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
- return pIDispatch->GetTypeInfoCount( pctinfo );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetTypeInfo( UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, (void**)&pIDispatch );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
- return pIDispatch->GetTypeInfo( iTInfo, lcid, ppTInfo );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::GetIDsOfNames( REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, (void**)&pIDispatch );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
- return pIDispatch->GetIDsOfNames( riid, rgszNames, cNames, lcid, rgDispId );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::Invoke( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr )
-{
- if ( CheckDefHandler() )
- {
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, (void**)&pIDispatch );
-
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
- return pIDispatch->Invoke( dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr );
- }
-
- return E_FAIL;
-}
-
-
-// ====
-// InternalCacheWrapper
-// ====
-
-// IUnknown
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::QueryInterface( REFIID riid, void FAR* FAR* ppv )
-{
- return m_rOwnDocument.QueryInterface( riid, ppv );
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) InprocEmbedDocument_Impl::InternalCacheWrapper::AddRef()
-{
- return m_rOwnDocument.AddRef();
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP_(ULONG) InprocEmbedDocument_Impl::InternalCacheWrapper::Release()
-{
- return m_rOwnDocument.Release();
-}
-
-// IOleCache methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::Cache( FORMATETC *pformatetc, DWORD advf, DWORD *pdwConnection )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, (void**)&pIOleCache );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
- return pIOleCache->Cache( pformatetc, advf, pdwConnection );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::Uncache( DWORD dwConnection )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, (void**)&pIOleCache );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
- return pIOleCache->Uncache( dwConnection );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::EnumCache( IEnumSTATDATA **ppenumSTATDATA )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, (void**)&pIOleCache );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
- return pIOleCache->EnumCache( ppenumSTATDATA );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::InitCache( IDataObject *pDataObject )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, (void**)&pIOleCache );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
- return pIOleCache->InitCache( pDataObject );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::SetData( FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, (void**)&pIOleCache );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
- return pIOleCache->SetData( pformatetc, pmedium, fRelease );
- }
-
- return E_FAIL;
-}
-
-// IOleCache2 methods
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::UpdateCache( LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache2 > pIOleCache2;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache2, (void**)&pIOleCache2 );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache2 )
- return pIOleCache2->UpdateCache( pDataObject, grfUpdf, pReserved );
- }
-
- return E_FAIL;
-}
-
-//-------------------------------------------------------------------------------
-STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::DiscardCache( DWORD dwDiscardOptions )
-{
- if ( m_rOwnDocument.CheckDefHandler() )
- {
- ComSmart< IOleCache2 > pIOleCache2;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache2, (void**)&pIOleCache2 );
-
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache2 )
- return pIOleCache2->DiscardCache( dwDiscardOptions );
- }
-
- return E_FAIL;
-}
-
-}; // namespace inprocserv
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/inprocembobj.h b/embedserv/source/inprocserv/inprocembobj.h
deleted file mode 100644
index ebbbd393e..000000000
--- a/embedserv/source/inprocserv/inprocembobj.h
+++ /dev/null
@@ -1,244 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _INPROCEMBOBJ_HXX_
-#define _INPROCEMBOBJ_HXX_
-
-#pragma warning(disable : 4668)
-
-#include <windows.h>
-#include <oleidl.h>
-
-#include "smartpointer.hxx"
-#include "advisesink.hxx"
-
-#define DEFAULT_ARRAY_LEN 256
-
-namespace inprocserv {
-
-enum InitModes {
- NOINIT,
- INIT_FROM_STORAGE,
- LOAD_FROM_STORAGE,
- LOAD_FROM_FILE
-};
-
-// ==================================
-// this is a common baseclass that is used to count the objects
-// ==================================
-class InprocCountedObject_Impl
-{
-public:
- InprocCountedObject_Impl();
- ~InprocCountedObject_Impl();
-};
-
-// ==================================
-// this is the inprocess embedded object implementation class
-// ==================================
-class InprocEmbedDocument_Impl : public InprocCountedObject_Impl
- , public IOleObject
- , public IDataObject
- , public IPersistStorage
- , public IPersistFile
- , public IRunnableObject
- , public IViewObject2
- // , public IExternalConnection
- , public IOleInPlaceObject
- , public IDispatch
-{
- ULONG m_refCount;
- BOOLEAN m_bDeleted;
-
- GUID m_guid;
-
- ComSmart< IUnknown > m_pDefHandler;
- InitModes m_nInitMode;
-
- DWORD m_nFileOpenMode;
- wchar_t* m_pFileName;
-
- ComSmart< IStorage > m_pStorage;
-
- ComSmart< IOleClientSite > m_pClientSite;
- ComSmart< IOleContainer > m_pOleContainer;
-
- ULONG m_nCallsOnStack;
-
- // the listeners have wrappers that are directly connected to the object and call the listeners,
- // the wrappers will be reconnected correctly to the new default inprocess holder object
- ComSmart< OleWrapperAdviseSink > m_pOleAdvises[DEFAULT_ARRAY_LEN];
- ComSmart< OleWrapperAdviseSink > m_pDataAdvises[DEFAULT_ARRAY_LEN];
- ComSmart< OleWrapperAdviseSink > m_pViewAdvise;
-
- class InternalCacheWrapper : public IOleCache2
- {
- InprocEmbedDocument_Impl& m_rOwnDocument;
-
- public:
- InternalCacheWrapper( InprocEmbedDocument_Impl& rOwnDocument )
- : m_rOwnDocument( rOwnDocument )
- {}
-
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj);
- STDMETHOD_(ULONG, AddRef)();
- STDMETHOD_(ULONG, Release)();
-
- /* IOleCache2 methods */
- STDMETHOD(Cache)( FORMATETC *pformatetc, DWORD advf, DWORD *pdwConnection);
- STDMETHOD(Uncache)( DWORD dwConnection);
- STDMETHOD(EnumCache)( IEnumSTATDATA **ppenumSTATDATA);
- STDMETHOD(InitCache)( IDataObject *pDataObject);
- STDMETHOD(SetData)( FORMATETC *pformatetc, STGMEDIUM *pmedium, BOOL fRelease);
- STDMETHOD(UpdateCache)( LPDATAOBJECT pDataObject, DWORD grfUpdf, LPVOID pReserved);
- STDMETHOD(DiscardCache)( DWORD dwDiscardOptions);
- } m_aInternalCache;
-
-
- DWORD InsertAdviseLinkToList( const ComSmart<OleWrapperAdviseSink>& pOwnAdvise, ComSmart< OleWrapperAdviseSink > pAdvises[] );
- void Clean();
-
-
-public:
-
- InprocEmbedDocument_Impl( const GUID& guid )
- : m_refCount( 0 )
- , m_bDeleted( FALSE )
- , m_guid( guid )
- , m_nInitMode( NOINIT )
- , m_nFileOpenMode( 0 )
- , m_pFileName( NULL )
- , m_nCallsOnStack( 0 )
- , m_aInternalCache( *this )
- {}
-
- virtual ~InprocEmbedDocument_Impl()
- {}
-
- HRESULT Init();
- void SetName( LPCOLESTR pszNameFromOutside, wchar_t*& pOwnName );
-
- BOOL CheckDefHandler();
- ComSmart< IUnknown >& GetDefHandler() { return m_pDefHandler; }
-
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj);
- STDMETHOD_(ULONG, AddRef)();
- STDMETHOD_(ULONG, Release)();
-
- /* IOleObject methods */
- STDMETHOD(SetClientSite) ( IOleClientSite* pSite );
- STDMETHOD(GetClientSite) ( IOleClientSite** pSite );
- STDMETHOD(SetHostNames) ( LPCOLESTR szContainerApp, LPCOLESTR szContainerObj );
- STDMETHOD(Close) ( DWORD dwSaveOption);
- STDMETHOD(SetMoniker) ( DWORD dwWhichMoniker, IMoniker *pmk );
- STDMETHOD(GetMoniker) ( DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk );
- STDMETHOD(InitFromData) ( IDataObject *pDataObject, BOOL fCreation, DWORD dwReserved );
- STDMETHOD(GetClipboardData) ( DWORD dwReserved, IDataObject **ppDataObject );
- STDMETHOD(DoVerb) ( LONG iVerb, LPMSG lpmsg, IOleClientSite *pActiveSite, LONG lindex, HWND hwndParent, LPCRECT lprcPosRect );
- STDMETHOD(EnumVerbs) ( IEnumOLEVERB **ppEnumOleVerb );
- STDMETHOD(Update) ();
- STDMETHOD(IsUpToDate) ();
- STDMETHOD(GetUserClassID) ( CLSID *pClsid );
- STDMETHOD(GetUserType) ( DWORD dwFormOfType, LPOLESTR *pszUserType );
- STDMETHOD(SetExtent) ( DWORD dwDrawAspect, SIZEL *psizel );
- STDMETHOD(GetExtent) ( DWORD dwDrawAspect, SIZEL *psizel );
- STDMETHOD(Advise) ( IAdviseSink *pAdvSink, DWORD *pdwConnection );
- STDMETHOD(Unadvise) ( DWORD dwConnection );
- STDMETHOD(EnumAdvise) ( IEnumSTATDATA **ppenumAdvise );
- STDMETHOD(GetMiscStatus) ( DWORD dwAspect, DWORD *pdwStatus );
- STDMETHOD(SetColorScheme) ( LOGPALETTE *pLogpal );
-
- /* IDataObject methods */
- STDMETHOD(GetData) ( FORMATETC * pFormatetc, STGMEDIUM * pMedium );
- STDMETHOD(GetDataHere) ( FORMATETC * pFormatetc, STGMEDIUM * pMedium );
- STDMETHOD(QueryGetData) ( FORMATETC * pFormatetc );
- STDMETHOD(GetCanonicalFormatEtc) ( FORMATETC * pFormatetcIn, FORMATETC * pFormatetcOut );
- STDMETHOD(SetData) ( FORMATETC * pFormatetc, STGMEDIUM * pMedium, BOOL fRelease );
- STDMETHOD(EnumFormatEtc) ( DWORD dwDirection, IEnumFORMATETC ** ppFormatetc );
- STDMETHOD(DAdvise) ( FORMATETC * pFormatetc, DWORD advf, IAdviseSink * pAdvSink, DWORD * pdwConnection );
- STDMETHOD(DUnadvise) ( DWORD dwConnection );
- STDMETHOD(EnumDAdvise) ( IEnumSTATDATA ** ppenumAdvise );
-
- /* IPersistMethod */
- STDMETHOD(GetClassID)(CLSID *pClassID);
-
- /* IPersistStorage methods */
- STDMETHOD(IsDirty) ();
- STDMETHOD(InitNew) ( IStorage *pStg );
- STDMETHOD(Load) ( IStorage* pStr );
- STDMETHOD(Save) ( IStorage *pStgSave, BOOL fSameAsLoad );
- STDMETHOD(SaveCompleted) ( IStorage *pStgNew );
- STDMETHOD(HandsOffStorage) (void);
-
- /* IPersistFile methods */
- STDMETHOD(Load) ( LPCOLESTR pszFileName, DWORD dwMode );
- STDMETHOD(Save) ( LPCOLESTR pszFileName, BOOL fRemember );
- STDMETHOD(SaveCompleted) ( LPCOLESTR pszFileName );
- STDMETHOD(GetCurFile) ( LPOLESTR *ppszFileName );
-
- /* IRunnableObject methods */
- STDMETHOD(GetRunningClass) ( LPCLSID lpClsid);
- STDMETHOD(Run) ( LPBINDCTX pbc);
- virtual BOOL STDMETHODCALLTYPE IsRunning( void);
- STDMETHOD(LockRunning) ( BOOL fLock, BOOL fLastUnlockCloses );
- STDMETHOD(SetContainedObject) ( BOOL fContained);
-
- /* IViewObject2 methods */
- STDMETHOD(Draw)( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds, LPCRECTL lprcWBounds, BOOL ( STDMETHODCALLTYPE *pfnContinue )( ULONG_PTR dwContinue ), ULONG_PTR dwContinue);
- STDMETHOD(GetColorSet)( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet);
- STDMETHOD(Freeze)( DWORD dwDrawAspect, LONG lindex, void *pvAspect, DWORD *pdwFreeze);
- STDMETHOD(Unfreeze)( DWORD dwFreeze);
- STDMETHOD(SetAdvise)( DWORD aspects, DWORD advf, IAdviseSink *pAdvSink);
- STDMETHOD(GetAdvise)( DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink);
- STDMETHOD(GetExtent)( DWORD dwDrawAspect, LONG lindex, DVTARGETDEVICE *ptd, LPSIZEL lpsizel);
-
- /* IOleWindow methods */
- STDMETHOD(GetWindow)( HWND *phwnd);
- STDMETHOD(ContextSensitiveHelp)( BOOL fEnterMode);
-
- /* IOleInPlaceObject methods */
- STDMETHOD(InPlaceDeactivate)( void);
- STDMETHOD(UIDeactivate)( void);
- STDMETHOD(SetObjectRects)( LPCRECT lprcPosRect, LPCRECT lprcClipRect);
- STDMETHOD(ReactivateAndUndo)( void);
-
- /*IDispatch methods*/
- STDMETHOD(GetTypeInfoCount)( UINT *pctinfo);
- STDMETHOD(GetTypeInfo)( UINT iTInfo, LCID lcid, ITypeInfo **ppTInfo);
- STDMETHOD(GetIDsOfNames)( REFIID riid, LPOLESTR *rgszNames, UINT cNames, LCID lcid, DISPID *rgDispId);
- STDMETHOD(Invoke)( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS *pDispParams, VARIANT *pVarResult, EXCEPINFO *pExcepInfo, UINT *puArgErr);
-
-};
-
-} // namespace inprocserv
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/makefile.mk b/embedserv/source/inprocserv/makefile.mk
deleted file mode 100644
index 024e0f9d4..000000000
--- a/embedserv/source/inprocserv/makefile.mk
+++ /dev/null
@@ -1,80 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..
-PRJNAME=embedserv
-TARGET=inprocserv
-
-use_shl_versions=
-
-# --- Settings ----------------------------------
-.INCLUDE : settings.mk
-
-.IF "$(GUI)" == "WNT"
-
-LIBTARGET=NO
-USE_DEFFILE=YES
-LIBCMT=libcmt.lib
-UWINAPILIB=
-
-# --- Files -------------------------------------
-
-SLOFILES=\
- $(SLO)$/dllentry.obj \
- $(SLO)$/advisesink.obj \
- $(SLO)$/inprocembobj.obj
-
-SHL1TARGET=$(TARGET)
-.IF "$(COM)"=="GCC"
-SHL1STDLIBS += -lstdc++
-.IF "$(MINGW_GCCLIB_EH)"=="YES"
-SHL1STDLIBS += -lgcc_eh
-.ENDIF
-SHL1STDLIBS += -lgcc -lmingw32 -lmoldname -lmsvcrt
-.ELSE
-SHL1STDLIBS=
-.ENDIF
-
-SHL1STDLIBS+=\
- $(UUIDLIB)\
- $(OLE32LIB)\
- $(GDI32LIB)\
- $(ADVAPI32LIB)
-
-SHL1OBJS=$(SLOFILES)
-
-SHL1DEF=$(MISC)$/$(TARGET).def
-
-DEF1NAME= $(TARGET)
-DEF1EXPORTFILE= exports.dxp
-
-.ENDIF
-
-# --- Targets ----------------------------------
-
-.INCLUDE : target.mk
-
diff --git a/embedserv/source/inprocserv/smartpointer.hxx b/embedserv/source/inprocserv/smartpointer.hxx
deleted file mode 100644
index c4f25c4dc..000000000
--- a/embedserv/source/inprocserv/smartpointer.hxx
+++ /dev/null
@@ -1,185 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _INPROCSERV_SMARTPOINTER_HXX_
-#define _INPROCSERV_SMARTPOINTER_HXX_
-
-namespace inprocserv{
-
-void WriteDebugInfo( DWORD pThis, char* pString, DWORD nToWrite );
-
-template< class T > class ComSmart
-{
- T* m_pInterface;
-
- void OwnRelease()
- {
- if ( m_pInterface )
- {
- T* pInterface = m_pInterface;
- m_pInterface = NULL;
- pInterface->Release();
- }
- }
-
-public:
- ComSmart()
- : m_pInterface( NULL )
- {}
-
- ComSmart( const ComSmart<T>& rObj )
- : m_pInterface( rObj.m_pInterface )
- {
- if ( m_pInterface != NULL )
- m_pInterface->AddRef();
- }
-
- ComSmart( T* pInterface )
- : m_pInterface( pInterface )
- {
- if ( m_pInterface != NULL )
- m_pInterface->AddRef();
- }
-
- ~ComSmart()
- {
- OwnRelease();
- }
-
- ComSmart& operator=( const ComSmart<T>& rObj )
- {
- OwnRelease();
-
- m_pInterface = rObj.m_pInterface;
-
- if ( m_pInterface != NULL )
- m_pInterface->AddRef();
-
- return *this;
- }
-
- ComSmart<T>& operator=( T* pInterface )
- {
- OwnRelease();
-
- m_pInterface = pInterface;
-
- if ( m_pInterface != NULL )
- m_pInterface->AddRef();
-
- return *this;
- }
-
- operator T*() const
- {
- return m_pInterface;
- }
-
- T& operator*() const
- {
- return *m_pInterface;
- }
-
- T** operator&()
- {
- OwnRelease();
-
- m_pInterface = NULL;
-
- return &m_pInterface;
- }
-
- T* operator->() const
- {
- return m_pInterface;
- }
-
- BOOL operator==( const ComSmart<T>& rObj ) const
- {
- return ( m_pInterface == rObj.m_pInterface );
- }
-
- BOOL operator!=( const ComSmart<T>& rObj ) const
- {
- return ( m_pInterface != rObj.m_pInterface );
- }
-
- BOOL operator==( const T* pInterface ) const
- {
- return ( m_pInterface == pInterface );
- }
-
- BOOL operator!=( const T* pInterface ) const
- {
- return ( m_pInterface != pInterface );
- }
-};
-
-class CSGuard
-{
- CRITICAL_SECTION* m_pCriticalSection;
-
-public:
- CSGuard( CRITICAL_SECTION* pCS )
- : m_pCriticalSection( pCS )
- {
- if ( m_pCriticalSection )
- EnterCriticalSection( m_pCriticalSection );
- }
-
- ~CSGuard()
- {
- if ( m_pCriticalSection )
- LeaveCriticalSection( m_pCriticalSection );
- }
-};
-
-class ULONGGuard
-{
- ULONG* m_pValue;
-
-public:
- ULONGGuard( ULONG* pValue )
- : m_pValue( pValue )
- {
- if ( m_pValue )
- (*m_pValue)++;
- }
-
- ~ULONGGuard()
- {
- if ( m_pValue )
- (*m_pValue)--;
- }
-};
-
-} // namespace inprocserv
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */