summaryrefslogtreecommitdiff
path: root/embedserv/source
diff options
context:
space:
mode:
Diffstat (limited to 'embedserv/source')
-rw-r--r--embedserv/source/embed/docholder.cxx53
-rw-r--r--embedserv/source/embed/ed_idataobj.cxx4
-rw-r--r--embedserv/source/embed/ed_ioleobject.cxx21
-rw-r--r--embedserv/source/embed/ed_ipersiststr.cxx40
-rw-r--r--embedserv/source/embed/guid.hxx6
-rw-r--r--embedserv/source/embed/iipaobj.cxx2
-rw-r--r--embedserv/source/embed/intercept.cxx75
-rw-r--r--embedserv/source/embed/servprov.cxx58
-rw-r--r--embedserv/source/embed/tracker.cxx27
-rw-r--r--embedserv/source/inc/docholder.hxx7
-rw-r--r--embedserv/source/inc/embeddoc.hxx18
-rw-r--r--embedserv/source/inc/embeddocaccess.hxx6
-rw-r--r--embedserv/source/inc/iipaobj.hxx7
-rw-r--r--embedserv/source/inc/intercept.hxx11
-rw-r--r--embedserv/source/inc/servprov.hxx9
-rw-r--r--embedserv/source/inc/stdafx.h1
-rw-r--r--embedserv/source/inc/syswinwrapper.hxx5
-rw-r--r--embedserv/source/inprocserv/advisesink.cxx6
-rw-r--r--embedserv/source/inprocserv/advisesink.hxx20
-rw-r--r--embedserv/source/inprocserv/dllentry.cxx16
-rw-r--r--embedserv/source/inprocserv/inprocembobj.cxx580
-rw-r--r--embedserv/source/inprocserv/inprocembobj.h18
-rw-r--r--embedserv/source/inprocserv/smartpointer.hxx184
23 files changed, 411 insertions, 763 deletions
diff --git a/embedserv/source/embed/docholder.cxx b/embedserv/source/embed/docholder.cxx
index 762352579d94..829db69b91d4 100644
--- a/embedserv/source/embed/docholder.cxx
+++ b/embedserv/source/embed/docholder.cxx
@@ -60,9 +60,12 @@
#include <com/sun/star/util/XCloseable.hpp>
#include <com/sun/star/util/XModifyBroadcaster.hpp>
#include <comphelper/processfactory.hxx>
+#include <comphelper/propertyvalue.hxx>
#include <o3tl/any.hxx>
+#include <o3tl/unit_conversion.hxx>
#include <osl/diagnose.h>
#include <rtl/process.h>
+#include <rtl/ref.hxx>
using namespace ::com::sun::star;
@@ -78,7 +81,6 @@ DocumentHolder::DocumentHolder(
m_pIOleIPUIWindow(nullptr),
m_pCHatchWin(nullptr),
m_xOleAccess( xOleAccess ),
- m_pInterceptor(nullptr),
m_xFactory( xFactory ),
m_bOnDeactivate(false),
m_hWndxWinParent(nullptr),
@@ -111,22 +113,22 @@ void DocumentHolder::LoadDocInFrame( bool bPluginMode )
uno::Reference< task::XInteractionHandler2 > xHandler(
task::InteractionHandler::createWithParent(comphelper::getComponentContext(m_xFactory), nullptr) );
- sal_Int32 nLen = 3;
+ sal_Int32 nLen = bPluginMode ? 6 : 5;
uno::Sequence<beans::PropertyValue> aSeq( nLen );
-
- aSeq[0] = beans::PropertyValue(
+ auto pSeq = aSeq.getArray();
+ pSeq[0] = beans::PropertyValue(
"Model",
-1,
uno::Any(uno::Reference<uno::XInterface>(m_xDocument, uno::UNO_QUERY)),
beans::PropertyState_DIRECT_VALUE);
- aSeq[1] = beans::PropertyValue(
+ pSeq[1] = beans::PropertyValue(
"ReadOnly",
-1,
uno::Any(false),
beans::PropertyState_DIRECT_VALUE);
- aSeq[2] = beans::PropertyValue(
+ pSeq[2] = beans::PropertyValue(
"NoAutoSave",
-1,
uno::Any(true),
@@ -134,22 +136,20 @@ void DocumentHolder::LoadDocInFrame( bool bPluginMode )
if ( bPluginMode )
{
- aSeq.realloc( ++nLen );
- aSeq[nLen-1] = beans::PropertyValue(
+ pSeq[3] = beans::PropertyValue(
"PluginMode",
-1,
uno::Any(sal_Int16(3)),
beans::PropertyState_DIRECT_VALUE);
}
- aSeq.realloc( nLen+=2 );
- aSeq[nLen-2] = beans::PropertyValue(
+ pSeq[nLen-2] = beans::PropertyValue(
"InteractionHandler",
-1,
uno::Any(xHandler),
beans::PropertyState_DIRECT_VALUE);
- aSeq[nLen-1] = beans::PropertyValue(
+ pSeq[nLen-1] = beans::PropertyValue(
"MacroExecutionMode",
-1,
uno::Any(m_nMacroExecMode),
@@ -701,9 +701,8 @@ void DocumentHolder::SetDocument( const uno::Reference< frame::XModel >& xDoc, b
if ( m_xDocument.is() && !m_bLink )
{
// set the document mode to embedded
- uno::Sequence< beans::PropertyValue > aSeq(1);
- aSeq[0].Name = "SetEmbedded";
- aSeq[0].Value <<= true;
+ uno::Sequence< beans::PropertyValue > aSeq{ comphelper::makePropertyValue("SetEmbedded",
+ true) };
m_xDocument->attachResource(OUString(),aSeq);
}
}
@@ -798,14 +797,14 @@ void DocumentHolder::ClearInterceptorInternally()
m_pInterceptor->DisconnectDocHolder();
m_xInterceptorLocker.clear();
- m_pInterceptor = nullptr;
+ m_pInterceptor.clear();
}
void DocumentHolder::ClearInterceptor()
{
::osl::MutexGuard aGuard( m_aMutex );
m_xInterceptorLocker.clear();
- m_pInterceptor = nullptr;
+ m_pInterceptor.clear();
}
@@ -830,7 +829,7 @@ void DocumentHolder::show()
if ( xLMProps.is() )
{
xLMProps->setPropertyValue("MenuBarCloser",
- uno::makeAny( uno::Reference< frame::XStatusListener >() ) );
+ uno::Any( uno::Reference< frame::XStatusListener >() ) );
}
if ( !m_bLink )
@@ -883,12 +882,12 @@ void DocumentHolder::resizeWin( const SIZEL& rNewSize )
POINT aOldOffset;
aOldOffset.x = aOldSize.cx;
aOldOffset.y = aOldSize.cy;
- bool bIsOk = LPtoDP( hdc, &aOldOffset, 1 );
+ LPtoDP( hdc, &aOldOffset, 1 );
POINT aNewOffset;
aNewOffset.x = rNewSize.cx;
aNewOffset.y = rNewSize.cy;
- bIsOk = LPtoDP( hdc, &aNewOffset, 1 );
+ LPtoDP( hdc, &aNewOffset, 1 );
ReleaseDC( nullptr, hdc );
@@ -919,7 +918,7 @@ void DocumentHolder::setTitle(const OUString& aDocumentName)
if(m_xDocument.is())
{
aSeq = m_xDocument->getArgs();
- for(beans::PropertyValue const & prop : std::as_const(aSeq))
+ for (beans::PropertyValue const& prop : aSeq)
{
if(prop.Name == "FilterName")
{
@@ -938,7 +937,7 @@ void DocumentHolder::setTitle(const OUString& aDocumentName)
if(xNameAccess.is() &&
(xNameAccess->getByName(aFilterName) >>= aSeq))
{
- for(beans::PropertyValue const & prop : std::as_const(aSeq))
+ for (beans::PropertyValue const& prop : aSeq)
if(prop.Name == "UIName")
{
prop.Value >>= m_aFilterName;
@@ -967,7 +966,7 @@ void DocumentHolder::setTitle(const OUString& aDocumentName)
{
::osl::ClearableMutexGuard aGuard( m_aMutex );
- Interceptor* pTmpInter = nullptr;
+ rtl::Reference<Interceptor> pTmpInter;
uno::Reference< frame::XDispatchProviderInterceptor > xLock( m_xInterceptorLocker );
if ( xLock.is() && m_pInterceptor )
pTmpInter = m_pInterceptor;
@@ -1009,7 +1008,7 @@ IDispatch* DocumentHolder::GetIDispatch()
try {
uno::Any anyResult = xSupplier->createBridge(
- uno::makeAny( m_xDocument ),
+ uno::Any( m_xDocument ),
aProcId,
bridge::ModelDependent::UNO,
bridge::ModelDependent::OLE );
@@ -1075,8 +1074,8 @@ HRESULT DocumentHolder::SetExtent( const SIZEL *pSize )
if ( aMapMode == embed::EmbedMapUnits::TWIP )
{
// conversion from ONE_100TH_MM
- aNewSize.Width = aNewSize.Width * 144 / 254;
- aNewSize.Height = aNewSize.Height * 144 / 254;
+ aNewSize.Width = o3tl::toTwips(aNewSize.Width, o3tl::Length::mm100);
+ aNewSize.Height = o3tl::toTwips(aNewSize.Height, o3tl::Length::mm100);
}
@@ -1109,8 +1108,8 @@ HRESULT DocumentHolder::GetExtent( SIZEL *pSize )
if ( aMapMode == embed::EmbedMapUnits::TWIP )
{
// conversion to ONE_100TH_MM
- aDocSize.Width = aDocSize.Width * 254 / 144;
- aDocSize.Height = aDocSize.Height * 254 / 144;
+ aDocSize.Width = o3tl::convert(aDocSize.Width, o3tl::Length::twip, o3tl::Length::mm100);
+ aDocSize.Height = o3tl::convert(aDocSize.Height, o3tl::Length::twip, o3tl::Length::mm100);
}
pSize->cx = aDocSize.Width;
diff --git a/embedserv/source/embed/ed_idataobj.cxx b/embedserv/source/embed/ed_idataobj.cxx
index 2f0b4d960b16..84886e63cb4a 100644
--- a/embedserv/source/embed/ed_idataobj.cxx
+++ b/embedserv/source/embed/ed_idataobj.cxx
@@ -34,7 +34,7 @@ using namespace ::com::sun::star;
sal_uInt64 EmbedDocument_Impl::getMetaFileHandle_Impl( bool isEnhMeta )
{
- sal_uInt64 pResult = NULL;
+ sal_uInt64 pResult = 0;
uno::Reference< datatransfer::XTransferable > xTransferable( m_pDocHolder->GetDocument(), uno::UNO_QUERY );
if ( xTransferable.is() )
@@ -132,7 +132,7 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetData( FORMATETC * pForm
pMedium->tymed = TYMED_ISTORAGE;
pMedium->pstg = pNewStg;
pMedium->pstg->AddRef();
- pMedium->pUnkForRelease = static_cast<IUnknown*>(pNewStg);
+ pMedium->pUnkForRelease = pNewStg;
return S_OK;
}
diff --git a/embedserv/source/embed/ed_ioleobject.cxx b/embedserv/source/embed/ed_ioleobject.cxx
index 08032e9c8b2b..839fd8e2d3d5 100644
--- a/embedserv/source/embed/ed_ioleobject.cxx
+++ b/embedserv/source/embed/ed_ioleobject.cxx
@@ -329,7 +329,7 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::SetColorScheme( LOGPALETTE
// IDispatch
-COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetTypeInfoCount( unsigned int FAR* pctinfo )
+COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetTypeInfoCount(unsigned int* pctinfo)
{
if ( m_pDocHolder->GetIDispatch() )
return m_pDocHolder->GetIDispatch()->GetTypeInfoCount( pctinfo );
@@ -337,7 +337,8 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetTypeInfoCount( unsigned
return E_NOTIMPL;
}
-COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetTypeInfo( unsigned int iTInfo, LCID lcid, ITypeInfo FAR* FAR* ppTInfo )
+COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetTypeInfo(unsigned int iTInfo, LCID lcid,
+ ITypeInfo** ppTInfo)
{
if ( m_pDocHolder->GetIDispatch() )
return m_pDocHolder->GetIDispatch()->GetTypeInfo( iTInfo, lcid, ppTInfo );
@@ -346,10 +347,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetTypeInfo( unsigned int
}
COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::GetIDsOfNames( REFIID riid,
- OLECHAR FAR* FAR* rgszNames,
+ OLECHAR** rgszNames,
unsigned int cNames,
LCID lcid,
- DISPID FAR* rgDispId )
+ DISPID* rgDispId )
{
if ( m_pDocHolder->GetIDispatch() )
return m_pDocHolder->GetIDispatch()->GetIDsOfNames( riid, rgszNames, cNames, lcid, rgDispId );
@@ -364,10 +365,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::Invoke( DISPID dispIdMembe
REFIID riid,
LCID lcid,
WORD wFlags,
- DISPPARAMS FAR* pDispParams,
- VARIANT FAR* pVarResult,
- EXCEPINFO FAR* pExcepInfo,
- unsigned int FAR* puArgErr )
+ DISPPARAMS* pDispParams,
+ VARIANT* pVarResult,
+ EXCEPINFO* pExcepInfo,
+ unsigned int* puArgErr )
{
if ( m_pDocHolder->GetIDispatch() )
return m_pDocHolder->GetIDispatch()->Invoke( dispIdMember,
@@ -446,11 +447,9 @@ void EmbedDocument_Impl::notify( bool bDataChanged )
void EmbedDocument_Impl::Deactivate()
{
- HRESULT hr = S_OK;
-
if ( m_pDocHolder->HasFrame() )
{
- hr = SaveObject();
+ SaveObject();
m_pDocHolder->CloseFrame();
OLENotifyDeactivation();
}
diff --git a/embedserv/source/embed/ed_ipersiststr.cxx b/embedserv/source/embed/ed_ipersiststr.cxx
index 68d3a45dd94b..698bbe13f586 100644
--- a/embedserv/source/embed/ed_ipersiststr.cxx
+++ b/embedserv/source/embed/ed_ipersiststr.cxx
@@ -175,7 +175,6 @@ EmbedDocument_Impl::EmbedDocument_Impl( const uno::Reference< lang::XMultiServic
{
m_xOwnAccess = new EmbeddedDocumentInstanceAccess_Impl( this );
m_pDocHolder = new DocumentHolder( xFactory, m_xOwnAccess );
- m_pDocHolder->acquire();
}
EmbedDocument_Impl::~EmbedDocument_Impl()
@@ -192,28 +191,25 @@ EmbedDocument_Impl::~EmbedDocument_Impl()
m_pDocHolder->CloseDocument();
m_pDocHolder->CloseFrame();
}
-
- m_pDocHolder->release();
}
uno::Sequence< beans::PropertyValue > EmbedDocument_Impl::fillArgsForLoading_Impl( uno::Reference< io::XInputStream > const & xStream, DWORD /*nStreamMode*/, LPCOLESTR pFilePath )
{
- uno::Sequence< beans::PropertyValue > aArgs( 3 );
-
- sal_Int32 nInd = 0; // must not be bigger than the preset size
- aArgs[nInd].Name = "FilterName";
- aArgs[nInd++].Value <<= getFilterNameFromGUID_Impl( &m_guid );
+ uno::Sequence< beans::PropertyValue > aArgs( xStream.is() ? 3 : 2 );
+ auto pArgs = aArgs.getArray();
+ pArgs[0].Name = "FilterName";
+ pArgs[0].Value <<= getFilterNameFromGUID_Impl( &m_guid );
if ( xStream.is() )
{
- aArgs[nInd].Name = "InputStream";
- aArgs[nInd++].Value <<= xStream;
- aArgs[nInd].Name = "URL";
- aArgs[nInd++].Value <<= OUString( "private:stream" );
+ pArgs[1].Name = "InputStream";
+ pArgs[1].Value <<= xStream;
+ pArgs[2].Name = "URL";
+ pArgs[2].Value <<= OUString( "private:stream" );
}
else
{
- aArgs[nInd].Name = "URL";
+ pArgs[1].Name = "URL";
OUString sDocUrl;
if ( pFilePath )
@@ -227,11 +223,9 @@ uno::Sequence< beans::PropertyValue > EmbedDocument_Impl::fillArgsForLoading_Imp
sDocUrl = aURL.Complete;
}
- aArgs[nInd++].Value <<= sDocUrl;
+ pArgs[1].Value <<= sDocUrl;
}
- aArgs.realloc( nInd );
-
// aArgs[].Name = "ReadOnly";
// aArgs[].Value <<= sal_False; //( ( nStreamMode & ( STGM_READWRITE | STGM_WRITE ) ) ? sal_True : sal_False );
@@ -241,14 +235,14 @@ uno::Sequence< beans::PropertyValue > EmbedDocument_Impl::fillArgsForLoading_Imp
uno::Sequence< beans::PropertyValue > EmbedDocument_Impl::fillArgsForStoring_Impl( uno::Reference< io::XOutputStream > const & xStream)
{
uno::Sequence< beans::PropertyValue > aArgs( xStream.is() ? 2 : 1 );
-
- aArgs[0].Name = "FilterName";
- aArgs[0].Value <<= getFilterNameFromGUID_Impl( &m_guid );
+ auto pArgs = aArgs.getArray();
+ pArgs[0].Name = "FilterName";
+ pArgs[0].Value <<= getFilterNameFromGUID_Impl( &m_guid );
if ( xStream.is() )
{
- aArgs[1].Name = "OutputStream";
- aArgs[1].Value <<= xStream;
+ pArgs[1].Name = "OutputStream";
+ pArgs[1].Value <<= xStream;
}
return aArgs;
@@ -274,7 +268,7 @@ HRESULT EmbedDocument_Impl::SaveTo_Impl( IStorage* pStg )
// IUnknown
-COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::QueryInterface( REFIID riid, void FAR* FAR* ppv )
+COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::QueryInterface(REFIID riid, void** ppv)
{
if(IsEqualIID(riid, IID_IUnknown))
{
@@ -588,7 +582,7 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedDocument_Impl::Save( IStorage *pStgSave,
if ( !fSameAsLoad && pStgSave != m_pMasterStorage )
{
OSL_ENSURE( m_pMasterStorage, "How could the document be initialized without storage!??" );
- HRESULT hr = m_pMasterStorage->CopyTo( NULL, nullptr, nullptr, pStgSave );
+ HRESULT hr = m_pMasterStorage->CopyTo( 0, nullptr, nullptr, pStgSave );
if ( FAILED( hr ) ) return E_FAIL;
STATSTG aStat;
diff --git a/embedserv/source/embed/guid.hxx b/embedserv/source/embed/guid.hxx
index 2cbf28b5b93a..9e1d8006ebda 100644
--- a/embedserv/source/embed/guid.hxx
+++ b/embedserv/source/embed/guid.hxx
@@ -16,9 +16,7 @@
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-
-#ifndef INCLUDED_EMBEDSERV_SOURCE_EMBED_GUID_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_EMBED_GUID_HXX
+#pragma once
#include <sal/config.h>
@@ -34,6 +32,4 @@ std::u16string_view getServiceNameFromGUID_Impl(GUID const*);
wchar_t const* getStorageTypeFromGUID_Impl(GUID const* guid);
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/embed/iipaobj.cxx b/embedserv/source/embed/iipaobj.cxx
index 6947b1ea6ba8..008a33f11925 100644
--- a/embedserv/source/embed/iipaobj.cxx
+++ b/embedserv/source/embed/iipaobj.cxx
@@ -35,7 +35,7 @@ CIIAObj::~CIIAObj()
/* IUnknown methods */
-STDMETHODIMP CIIAObj::QueryInterface(REFIID riid, LPVOID FAR *ppv)
+STDMETHODIMP CIIAObj::QueryInterface(REFIID riid, LPVOID* ppv)
{
*ppv=nullptr;
diff --git a/embedserv/source/embed/intercept.cxx b/embedserv/source/embed/intercept.cxx
index ebe94913744b..d321bbfa476c 100644
--- a/embedserv/source/embed/intercept.cxx
+++ b/embedserv/source/embed/intercept.cxx
@@ -17,7 +17,6 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <cppuhelper/weak.hxx>
-#include <cppuhelper/interfacecontainer.hxx>
#include <embeddoc.hxx>
#include <docholder.hxx>
@@ -28,18 +27,14 @@ using namespace ::com::sun::star;
#define IUL 6
+constexpr OUString IU0 = u".uno:Save"_ustr;
+constexpr OUString IU1 = u".uno:SaveAll"_ustr;
+constexpr OUString IU2 = u".uno:CloseDoc"_ustr;
+constexpr OUString IU3 = u".uno:CloseWin"_ustr;
+constexpr OUString IU4 = u".uno:CloseFrame"_ustr;
+constexpr OUString IU5 = u".uno:SaveAs"_ustr;
+const uno::Sequence< OUString > Interceptor::m_aInterceptedURL{ IU0, IU1, IU2, IU3, IU4, IU5};
-uno::Sequence< OUString > Interceptor::m_aInterceptedURL(IUL);
-
-class StatusChangeListenerContainer
- : public cppu::OMultiTypeInterfaceContainerHelperVar<OUString>
-{
-public:
- explicit StatusChangeListenerContainer(osl::Mutex& aMutex)
- : cppu::OMultiTypeInterfaceContainerHelperVar<OUString>(aMutex)
- {
- }
-};
void
@@ -90,18 +85,12 @@ Interceptor::Interceptor(
DocumentHolder* pDocH,
bool bLink )
: m_xOleAccess( xOleAccess ),
- m_xDocHLocker( static_cast< ::cppu::OWeakObject* >( pDocH ) ),
+ m_xDocHLocker( cppu::getXWeak( pDocH ) ),
m_pDocH(pDocH),
m_pDisposeEventListeners(nullptr),
m_pStatCL(nullptr),
m_bLink( bLink )
{
- m_aInterceptedURL[0] = ".uno:Save";
- m_aInterceptedURL[1] = ".uno:SaveAll";
- m_aInterceptedURL[2] = ".uno:CloseDoc";
- m_aInterceptedURL[3] = ".uno:CloseWin";
- m_aInterceptedURL[4] = ".uno:CloseFrame";
- m_aInterceptedURL[5] = ".uno:SaveAs";
}
@@ -165,7 +154,7 @@ Interceptor::dispatch(
{
if ( aNewArgs[nInd].Name == "SaveTo" )
{
- aNewArgs[nInd].Value <<= true;
+ aNewArgs.getArray()[nInd].Value <<= true;
break;
}
nInd++;
@@ -174,8 +163,9 @@ Interceptor::dispatch(
if ( nInd == aNewArgs.getLength() )
{
aNewArgs.realloc( nInd + 1 );
- aNewArgs[nInd].Name = "SaveTo";
- aNewArgs[nInd].Value <<= true;
+ auto pNewArgs = aNewArgs.getArray();
+ pNewArgs[nInd].Name = "SaveTo";
+ pNewArgs[nInd].Value <<= true;
}
uno::Reference< frame::XDispatch > xDispatch = m_xSlaveDispatchProvider->queryDispatch(
@@ -210,12 +200,12 @@ void Interceptor::generateFeatureStateEvent()
if( i == 1 || (m_bLink && i != 5) )
continue;
- cppu::OInterfaceContainerHelper* pICH =
+ comphelper::OInterfaceContainerHelper3<css::frame::XStatusListener>* pICH =
m_pStatCL->getContainer(m_aInterceptedURL[i]);
- uno::Sequence<uno::Reference<uno::XInterface> > aSeq;
- if(pICH)
- aSeq = pICH->getElements();
- if(!aSeq.getLength())
+ if(!pICH)
+ continue;
+ std::vector<uno::Reference<css::frame::XStatusListener> > aSeq = pICH->getElements();
+ if(aSeq.empty())
continue;
frame::FeatureStateEvent aStateEvent;
@@ -243,13 +233,8 @@ void Interceptor::generateFeatureStateEvent()
}
- for(uno::Reference<uno::XInterface> const & k : std::as_const(aSeq))
- {
- uno::Reference<frame::XStatusListener> Control(k,uno::UNO_QUERY);
- if(Control.is())
- Control->statusChanged(aStateEvent);
-
- }
+ for (uno::Reference<css::frame::XStatusListener> const& control : aSeq)
+ control->statusChanged(aStateEvent);
}
}
}
@@ -383,13 +368,7 @@ Interceptor::getInterceptedURLs( )
{
// now implemented as update
if ( m_bLink )
- {
- uno::Sequence< OUString > aResult( 2 );
- aResult[0] = m_aInterceptedURL[1];
- aResult[1] = m_aInterceptedURL[5];
-
- return aResult;
- }
+ return { m_aInterceptedURL[1], m_aInterceptedURL[5] };
return m_aInterceptedURL;
}
@@ -435,20 +414,20 @@ Interceptor::queryDispatches(
aRet = m_xSlaveDispatchProvider->queryDispatches(Requests);
else
aRet.realloc(Requests.getLength());
-
+ auto aRetRange = asNonConstRange(aRet);
for(sal_Int32 i = 0; i < Requests.getLength(); ++i)
if ( !m_bLink && m_aInterceptedURL[0] == Requests[i].FeatureURL.Complete )
- aRet[i] = static_cast<frame::XDispatch*>(this);
+ aRetRange[i] = static_cast<frame::XDispatch*>(this);
else if(m_aInterceptedURL[1] == Requests[i].FeatureURL.Complete)
- aRet[i] = nullptr;
+ aRetRange[i] = nullptr;
else if( !m_bLink && m_aInterceptedURL[2] == Requests[i].FeatureURL.Complete )
- aRet[i] = static_cast<frame::XDispatch*>(this);
+ aRetRange[i] = static_cast<frame::XDispatch*>(this);
else if( !m_bLink && m_aInterceptedURL[3] == Requests[i].FeatureURL.Complete )
- aRet[i] = static_cast<frame::XDispatch*>(this);
+ aRetRange[i] = static_cast<frame::XDispatch*>(this);
else if( !m_bLink && m_aInterceptedURL[4] == Requests[i].FeatureURL.Complete )
- aRet[i] = static_cast<frame::XDispatch*>(this);
+ aRetRange[i] = static_cast<frame::XDispatch*>(this);
else if(m_aInterceptedURL[5] == Requests[i].FeatureURL.Complete)
- aRet[i] = static_cast<frame::XDispatch*>(this);
+ aRetRange[i] = static_cast<frame::XDispatch*>(this);
return aRet;
}
diff --git a/embedserv/source/embed/servprov.cxx b/embedserv/source/embed/servprov.cxx
index 46454667a42c..44eab63dd8b7 100644
--- a/embedserv/source/embed/servprov.cxx
+++ b/embedserv/source/embed/servprov.cxx
@@ -43,50 +43,9 @@ const GUID* const guidList[ SUPPORTED_FACTORIES_NUM ] = {
&OID_MathOASISServer
};
-namespace {
-
-class CurThreadData
-{
- public:
- CurThreadData();
- virtual ~CurThreadData();
-
- bool setData(void *pData);
-
- void* getData();
-
- protected:
- oslThreadKey m_hKey;
-};
-
-}
-
-CurThreadData::CurThreadData() : m_hKey(osl_createThreadKey( nullptr ))
-{
-}
-
-CurThreadData::~CurThreadData()
-{
- osl_destroyThreadKey(m_hKey);
-}
-
-bool CurThreadData::setData(void *pData)
-{
- OSL_ENSURE( m_hKey, "No thread key!" );
- return osl_setThreadKeyData(m_hKey, pData);
-}
-
-void *CurThreadData::getData()
-{
- OSL_ENSURE( m_hKey, "No thread key!" );
- return osl_getThreadKeyData(m_hKey);
-}
-
static void o2u_attachCurrentThread()
{
- static CurThreadData oleThreadData;
-
- if ( oleThreadData.getData() != nullptr )
+ [[maybe_unused]] static thread_local bool aInit = []
{
HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED);
if (!SUCCEEDED(hr))
@@ -95,8 +54,8 @@ static void o2u_attachCurrentThread()
SAL_INFO("embedserv.ole",
"CoInitializeEx fail: probably thread is in STA already?");
}
- oleThreadData.setData(reinterpret_cast<void*>(true));
- }
+ return SUCCEEDED(hr);
+ }();
}
@@ -173,7 +132,7 @@ bool EmbedProviderFactory_Impl::deregisterClass()
return (hresult == NOERROR);
}
-COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedProviderFactory_Impl::QueryInterface(REFIID riid, void FAR* FAR* ppv)
+COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedProviderFactory_Impl::QueryInterface(REFIID riid, void** ppv)
{
if(IsEqualIID(riid, IID_IUnknown))
{
@@ -209,13 +168,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP_(ULONG) EmbedProviderFactory_Impl::Release()
return nCount;
}
-COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedProviderFactory_Impl::CreateInstance(IUnknown FAR* punkOuter,
- REFIID riid,
- void FAR* FAR* ppv)
+COM_DECLSPEC_NOTHROW STDMETHODIMP EmbedProviderFactory_Impl::CreateInstance(IUnknown*,
+ REFIID riid, void** ppv)
{
- punkOuter = nullptr;
-
- IUnknown* pEmbedDocument = static_cast<IUnknown*>(static_cast<IPersistStorage*>( new EmbedDocument_Impl( m_xFactory, &m_guid ) ));
+ IUnknown* pEmbedDocument = static_cast<IPersistStorage*>( new EmbedDocument_Impl( m_xFactory, &m_guid ) );
return pEmbedDocument->QueryInterface( riid, ppv );
}
diff --git a/embedserv/source/embed/tracker.cxx b/embedserv/source/embed/tracker.cxx
index 00260481c0a8..fb331dfa1478 100644
--- a/embedserv/source/embed/tracker.cxx
+++ b/embedserv/source/embed/tracker.cxx
@@ -22,11 +22,18 @@
#include <algorithm>
#include <sal/types.h>
+#include <sal/log.hxx>
#include <stdafx.h>
#include <stddef.h>
#include <syswinwrapper.hxx>
+// windowserrorstring.hxx includes postwin.h, which #undef OPAQUE, so "#redef" it
+#include <comphelper/windowserrorstring.hxx>
+#ifdef OPAQUE
+#error OPAQUE should not be defined!?
+#endif
+#define OPAQUE 2
static HCURSOR afxCursors[10] = { nullptr, };
static HBRUSH afxHalftoneBrush = nullptr;
@@ -194,17 +201,10 @@ void winwrap::TransformRect(LPRECT rect,HWND pWnd,HWND pWndClipTo)
static void NormalizeRect(LPRECT rp)
{
- if(rp->left > rp->right) {
- UINT tmp = rp->left;
- rp->left = rp->right;
- rp->right = tmp;
- }
-
- if(rp->top > rp->bottom) {
- UINT tmp = rp->top;
- rp->top = rp->bottom;
- rp->bottom = tmp;
- }
+ if(rp->left > rp->right)
+ std::swap(rp->left, rp->right);
+ if(rp->top > rp->bottom)
+ std::swap(rp->top, rp->bottom);
}
@@ -398,7 +398,10 @@ BOOL Tracker::TrackHandle(int nHandle,HWND hWnd,POINT point,HWND hWndClipTo)
for (;;)
{
MSG msg;
- GetMessageW(&msg, nullptr, 0, 0);
+ int const bRet = GetMessageW(&msg, nullptr, 0, 0);
+ SAL_WARN_IF(-1 == bRet, "embedserv", "GetMessageW failed: " << WindowsErrorString(GetLastError()));
+ if (-1 == bRet || 0 == bRet)
+ break;
if (GetCapture() != hWnd)
break;
diff --git a/embedserv/source/inc/docholder.hxx b/embedserv/source/inc/docholder.hxx
index 7cb85af0fbf6..844435e3de83 100644
--- a/embedserv/source/inc/docholder.hxx
+++ b/embedserv/source/inc/docholder.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_DOCHOLDER_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_DOCHOLDER_HXX
+#pragma once
#include "common.h"
#include <com/sun/star/frame/XLayoutManager.hpp>
@@ -62,7 +61,7 @@ private:
::rtl::Reference< EmbeddedDocumentInstanceAccess_Impl > m_xOleAccess;
css::uno::WeakReference< css::frame::XDispatchProviderInterceptor > m_xInterceptorLocker;
- Interceptor* m_pInterceptor;
+ rtl::Reference<Interceptor> m_pInterceptor;
css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory;
@@ -248,6 +247,4 @@ public:
) override;
};
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inc/embeddoc.hxx b/embedserv/source/inc/embeddoc.hxx
index 488b142bc1a8..1ff0ed338cf4 100644
--- a/embedserv/source/inc/embeddoc.hxx
+++ b/embedserv/source/inc/embeddoc.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_EMBEDDOC_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_EMBEDDOC_HXX
+#pragma once
#include "common.h"
#include <oleidl.h>
@@ -26,6 +25,7 @@
#include <com/sun/star/uno/Reference.h>
#include <com/sun/star/uno/Sequence.h>
+#include <rtl/ref.hxx>
#include <unordered_map>
#include "embeddocaccess.hxx"
@@ -63,7 +63,7 @@ public:
virtual ~EmbedDocument_Impl();
/* IUnknown methods */
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj) override;
+ STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObj) override;
STDMETHOD_(ULONG, AddRef)() override;
STDMETHOD_(ULONG, Release)() override;
@@ -127,10 +127,10 @@ public:
STDMETHOD(GetCurFile) ( LPOLESTR *ppszFileName ) override;
/* IDispatch methods */
- STDMETHOD(GetTypeInfoCount) ( unsigned int FAR* pctinfo ) override;
- STDMETHOD(GetTypeInfo) ( unsigned int iTInfo, LCID lcid, ITypeInfo FAR* FAR* ppTInfo ) override;
- STDMETHOD(GetIDsOfNames) ( REFIID riid, OLECHAR FAR* FAR* rgszNames, unsigned int cNames, LCID lcid, DISPID FAR* rgDispId ) override;
- STDMETHOD(Invoke) ( DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS FAR* pDispParams, VARIANT FAR* pVarResult, EXCEPINFO FAR* pExcepInfo, unsigned int FAR* puArgErr ) override;
+ STDMETHOD(GetTypeInfoCount)(unsigned int* pctinfo) override;
+ STDMETHOD(GetTypeInfo)(unsigned int iTInfo, LCID lcid, ITypeInfo** ppTInfo) override;
+ STDMETHOD(GetIDsOfNames)(REFIID riid, OLECHAR** rgszNames, unsigned int cNames, LCID lcid, DISPID* rgDispId) override;
+ STDMETHOD(Invoke)(DISPID dispIdMember, REFIID riid, LCID lcid, WORD wFlags, DISPPARAMS* pDispParams, VARIANT* pVarResult, EXCEPINFO* pExcepInfo, unsigned int* puArgErr) override;
/* IExternalConnection methods */
virtual DWORD STDMETHODCALLTYPE AddConnection( DWORD extconn, DWORD reserved) override;
@@ -152,7 +152,7 @@ protected:
css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory;
- DocumentHolder* m_pDocHolder;
+ rtl::Reference<DocumentHolder> m_pDocHolder;
OUString m_aFileName;
CComPtr< IStorage > m_pMasterStorage;
@@ -190,6 +190,4 @@ public:
}
};
-#endif // INCLUDED_EMBEDSERV_SOURCE_INC_EMBEDDOC_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inc/embeddocaccess.hxx b/embedserv/source/inc/embeddocaccess.hxx
index 8b03900afd82..0a84b92c2cbe 100644
--- a/embedserv/source/inc/embeddocaccess.hxx
+++ b/embedserv/source/inc/embeddocaccess.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_EMBEDDOCACCESS_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_EMBEDDOCACCESS_HXX
+#pragma once
#define OLESERV_SAVEOBJECT 1
#define OLESERV_CLOSE 2
@@ -33,7 +32,6 @@
#pragma clang diagnostic ignored "-Wall"
#pragma clang diagnostic ignored "-Wextra"
#pragma clang diagnostic ignored "-Wmicrosoft"
-#pragma clang diagnostic ignored "-Wnon-virtual-dtor"
#endif
#include <atldbcli.h>
#if defined __clang__
@@ -75,6 +73,4 @@ class EmbeddedDocumentInstanceAccess_Impl : public ::cppu::OWeakObject
void ClearEmbedDocument();
};
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inc/iipaobj.hxx b/embedserv/source/inc/iipaobj.hxx
index 8bcc04688385..a6851e1277cb 100644
--- a/embedserv/source/inc/iipaobj.hxx
+++ b/embedserv/source/inc/iipaobj.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_IIPAOBJ_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_IIPAOBJ_HXX
+#pragma once
#include "stdafx.h"
#include <oleidl.h>
@@ -38,7 +37,7 @@ public:
virtual ~CIIAObj();
/* IUnknown methods */
- STDMETHODIMP QueryInterface(REFIID, LPVOID FAR * ppvObj) override;
+ STDMETHODIMP QueryInterface(REFIID, LPVOID* ppvObj) override;
STDMETHODIMP_(ULONG) AddRef() override;
STDMETHODIMP_(ULONG) Release() override;
@@ -59,6 +58,4 @@ private:
::rtl::Reference< DocumentHolder > m_rDocHolder;
};
-
-#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inc/intercept.hxx b/embedserv/source/inc/intercept.hxx
index ab3fb63cad8f..665f26aa82b9 100644
--- a/embedserv/source/inc/intercept.hxx
+++ b/embedserv/source/inc/intercept.hxx
@@ -17,11 +17,11 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_INTERCEPT_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_INTERCEPT_HXX
+#pragma once
#include <osl/mutex.hxx>
#include <cppuhelper/implbase.hxx>
+#include <comphelper/multiinterfacecontainer3.hxx>
#include <comphelper/interfacecontainer2.hxx>
#include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
#include <com/sun/star/frame/XInterceptorInfo.hpp>
@@ -31,10 +31,11 @@
#include "embeddocaccess.hxx"
-class StatusChangeListenerContainer;
class EmbedDocument_Impl;
class DocumentHolder;
+using StatusChangeListenerContainer = comphelper::OMultiTypeInterfaceContainerHelperVar3<css::frame::XStatusListener, OUString>;
+
class Interceptor
: public ::cppu::WeakImplHelper<
css::frame::XDispatchProviderInterceptor,
@@ -136,7 +137,7 @@ private:
css::uno::Reference< css::frame::XDispatchProvider > m_xMasterDispatchProvider;
- static css::uno::Sequence< OUString > m_aInterceptedURL;
+ static const css::uno::Sequence< OUString > m_aInterceptedURL;
comphelper::OInterfaceContainerHelper2* m_pDisposeEventListeners;
StatusChangeListenerContainer* m_pStatCL;
@@ -144,6 +145,4 @@ private:
bool m_bLink;
};
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inc/servprov.hxx b/embedserv/source/inc/servprov.hxx
index 6d1d887da4c0..f2b30fb6ccaa 100644
--- a/embedserv/source/inc/servprov.hxx
+++ b/embedserv/source/inc/servprov.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_SERVPROV_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_SERVPROV_HXX
+#pragma once
#include "common.h"
#include <oleidl.h>
@@ -60,12 +59,12 @@ public:
bool deregisterClass();
/* IUnknown methods */
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj) override;
+ STDMETHOD(QueryInterface)(REFIID riid, LPVOID* ppvObj) override;
STDMETHOD_(ULONG, AddRef)() override;
STDMETHOD_(ULONG, Release)() override;
/* IClassFactory methods */
- STDMETHOD(CreateInstance)(IUnknown FAR* punkOuter, REFIID riid, void FAR* FAR* ppv) override;
+ STDMETHOD(CreateInstance)(IUnknown* punkOuter, REFIID riid, void** ppv) override;
STDMETHOD(LockServer)(int fLock) override;
protected:
@@ -77,6 +76,4 @@ protected:
css::uno::Reference< css::lang::XMultiServiceFactory > m_xFactory;
};
-#endif
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inc/stdafx.h b/embedserv/source/inc/stdafx.h
index 9ec4fffcabee..44b79de4e600 100644
--- a/embedserv/source/inc/stdafx.h
+++ b/embedserv/source/inc/stdafx.h
@@ -18,7 +18,6 @@
#pragma clang diagnostic ignored "-Winvalid-noreturn"
#pragma clang diagnostic ignored "-Wmicrosoft"
#pragma clang diagnostic ignored "-Wnon-pod-varargs"
-#pragma clang diagnostic ignored "-Wnon-virtual-dtor"
#pragma clang diagnostic ignored "-Wnonportable-include-path"
#pragma clang diagnostic ignored "-Wsequence-point"
#pragma clang diagnostic ignored "-Wtypename-missing"
diff --git a/embedserv/source/inc/syswinwrapper.hxx b/embedserv/source/inc/syswinwrapper.hxx
index f255058bff26..46ec83ae4052 100644
--- a/embedserv/source/inc/syswinwrapper.hxx
+++ b/embedserv/source/inc/syswinwrapper.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INC_SYSWINWRAPPER_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INC_SYSWINWRAPPER_HXX
+#pragma once
#if !defined WIN32_LEAN_AND_MEAN
# define WIN32_LEAN_AND_MEAN
@@ -171,6 +170,4 @@ protected:
}
-#endif // INCLUDED_EMBEDSERV_SOURCE_INC_SYSWINWRAPPER_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/advisesink.cxx b/embedserv/source/inprocserv/advisesink.cxx
index faf37e20e4fd..f06cffbf62cd 100644
--- a/embedserv/source/inprocserv/advisesink.cxx
+++ b/embedserv/source/inprocserv/advisesink.cxx
@@ -36,7 +36,7 @@ OleWrapperAdviseSink::OleWrapperAdviseSink()
{
}
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener )
+OleWrapperAdviseSink::OleWrapperAdviseSink( const sal::systools::COMReference< IAdviseSink >& pListener )
: m_nRefCount( 0 )
, m_pListener( pListener )
, m_nAspect( DVASPECT_CONTENT )
@@ -49,7 +49,7 @@ OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pList
{
}
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener, FORMATETC* pFormatEtc, DWORD nDataRegFlag )
+OleWrapperAdviseSink::OleWrapperAdviseSink( const sal::systools::COMReference< IAdviseSink >& pListener, FORMATETC* pFormatEtc, DWORD nDataRegFlag )
: m_nRefCount( 0 )
, m_pListener( pListener )
, m_nAspect( DVASPECT_CONTENT )
@@ -71,7 +71,7 @@ OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pList
}
}
-OleWrapperAdviseSink::OleWrapperAdviseSink( const ComSmart< IAdviseSink >& pListener, DWORD nAspect, DWORD nViewRegFlag )
+OleWrapperAdviseSink::OleWrapperAdviseSink( const sal::systools::COMReference< IAdviseSink >& pListener, DWORD nAspect, DWORD nViewRegFlag )
: m_nRefCount( 0 )
, m_pListener( pListener )
, m_nAspect( nAspect )
diff --git a/embedserv/source/inprocserv/advisesink.hxx b/embedserv/source/inprocserv/advisesink.hxx
index 1a89e38b4c3b..525a655087c8 100644
--- a/embedserv/source/inprocserv/advisesink.hxx
+++ b/embedserv/source/inprocserv/advisesink.hxx
@@ -17,8 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INPROCSERV_ADVISESINK_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_INPROCSERV_ADVISESINK_HXX
+#pragma once
#include <sal/config.h>
@@ -29,7 +28,7 @@
#endif
#include <windows.h>
#include <objidl.h>
-#include "smartpointer.hxx"
+#include <systools/win32/comtools.hxx>
namespace inprocserv
{
@@ -38,7 +37,7 @@ class OleWrapperAdviseSink : public IAdviseSink
protected:
ULONG m_nRefCount;
- ComSmart<IAdviseSink> m_pListener;
+ sal::systools::COMReference<IAdviseSink> m_pListener;
DWORD m_nListenerID;
std::unique_ptr<FORMATETC> m_pFormatEtc;
@@ -57,14 +56,15 @@ public:
OleWrapperAdviseSink();
// an AdviseSink for IOleObject interface
- explicit OleWrapperAdviseSink(const ComSmart<IAdviseSink>& pListener);
+ explicit OleWrapperAdviseSink(const sal::systools::COMReference<IAdviseSink>& pListener);
// an AdviseSink for IDataObject interface
- OleWrapperAdviseSink(const ComSmart<IAdviseSink>& pListener, FORMATETC* pFormatEtc,
- DWORD nDataRegFlag);
+ OleWrapperAdviseSink(const sal::systools::COMReference<IAdviseSink>& pListener,
+ FORMATETC* pFormatEtc, DWORD nDataRegFlag);
// an AdviseSink for IViewObject interface
- OleWrapperAdviseSink(const ComSmart<IAdviseSink>& pListener, DWORD nAspect, DWORD nViewRegFlag);
+ OleWrapperAdviseSink(const sal::systools::COMReference<IAdviseSink>& pListener, DWORD nAspect,
+ DWORD nViewRegFlag);
virtual ~OleWrapperAdviseSink();
@@ -77,7 +77,7 @@ public:
FORMATETC* GetFormatEtc() { return m_pFormatEtc.get(); }
DWORD GetAspect() { return m_nAspect; }
- ComSmart<IAdviseSink>& GetOrigAdvise() { return m_pListener; }
+ sal::systools::COMReference<IAdviseSink>& GetOrigAdvise() { return m_pListener; }
void DisconnectOrigAdvise() { m_pListener = nullptr; }
void SetClosed() { m_bClosed = TRUE; }
@@ -97,6 +97,4 @@ public:
}; // namespace advisesink
-#endif // INCLUDED_EMBEDSERV_SOURCE_INPROCSERV_ADVISESINK_HXX
-
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/embedserv/source/inprocserv/dllentry.cxx b/embedserv/source/inprocserv/dllentry.cxx
index 78b7d18edf0a..12dee7b0cc85 100644
--- a/embedserv/source/inprocserv/dllentry.cxx
+++ b/embedserv/source/inprocserv/dllentry.cxx
@@ -95,8 +95,8 @@ namespace {
for ( int nInd = 0; nInd < SUPPORTED_FACTORIES_NUM; nInd++ )
{
const wchar_t pSubKeyTemplate[] = L"Software\\Classes\\CLSID\\.....................................\\InprocHandler32";
- wchar_t pSubKey[SAL_N_ELEMENTS(pSubKeyTemplate)];
- wcsncpy(pSubKey, pSubKeyTemplate, SAL_N_ELEMENTS(pSubKeyTemplate));
+ wchar_t pSubKey[std::size(pSubKeyTemplate)];
+ wcsncpy(pSubKey, pSubKeyTemplate, std::size(pSubKeyTemplate));
int nGuidLen = GetStringFromClassID( *guidList[nInd], &pSubKey[23], 38 );
@@ -147,7 +147,7 @@ public:
STDMETHOD_(ULONG, Release)() override;
/* IClassFactory methods */
- STDMETHOD(CreateInstance)(IUnknown FAR* punkOuter, REFIID riid, void FAR* FAR* ppv) override;
+ STDMETHOD(CreateInstance)(IUnknown* punkOuter, REFIID riid, void** ppv) override;
STDMETHOD(LockServer)(BOOL fLock) override;
protected:
@@ -203,7 +203,10 @@ STDAPI DllCanUnloadNow()
STDAPI DllRegisterServer()
{
- HMODULE aCurModule = GetModuleHandleW( L"inprocserv.dll" );
+ HMODULE aCurModule{};
+ GetModuleHandleExW(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS
+ | GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT,
+ reinterpret_cast<LPCWSTR>(&DllRegisterServer), &aCurModule);
if( aCurModule )
{
wchar_t aLibPath[1024];
@@ -298,9 +301,8 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP_(ULONG) InprocEmbedProvider_Impl::Release()
}
-COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedProvider_Impl::CreateInstance(IUnknown FAR* punkOuter,
- REFIID riid,
- void FAR* FAR* ppv)
+COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedProvider_Impl::CreateInstance(IUnknown* punkOuter,
+ REFIID riid, void** ppv)
{
// TODO/LATER: should the aggregation be supported?
// if ( punkOuter != NULL && riid != IID_IUnknown )
diff --git a/embedserv/source/inprocserv/inprocembobj.cxx b/embedserv/source/inprocserv/inprocembobj.cxx
index 23a1df21a579..b7bf89b6670a 100644
--- a/embedserv/source/inprocserv/inprocembobj.cxx
+++ b/embedserv/source/inprocserv/inprocembobj.cxx
@@ -27,6 +27,19 @@ namespace inprocserv
namespace {
+class ULONGGuard
+{
+ ULONG& m_rValue;
+
+public:
+ explicit ULONGGuard( ULONG& rValue )
+ : m_rValue( ++rValue )
+ {
+ }
+
+ ~ULONGGuard() { --m_rValue; }
+};
+
void SetName( LPCOLESTR pszNameFromOutside, wchar_t*& pOwnName )
{
if ( !pszNameFromOutside )
@@ -49,7 +62,7 @@ void SetName( LPCOLESTR pszNameFromOutside, wchar_t*& pOwnName )
pOwnName[nLen] = 0;
}
-DWORD InsertAdviseLinkToList( const ComSmart<OleWrapperAdviseSink>& pOwnAdvise, ComSmart< OleWrapperAdviseSink > pAdvises[] )
+DWORD InsertAdviseLinkToList( const sal::systools::COMReference<OleWrapperAdviseSink>& pOwnAdvise, sal::systools::COMReference< OleWrapperAdviseSink > pAdvises[] )
{
// the result should start from 1 in case of success, the element 0 can be used for own needs
DWORD nResult = 0;
@@ -58,7 +71,7 @@ DWORD InsertAdviseLinkToList( const ComSmart<OleWrapperAdviseSink>& pOwnAdvise,
{
for ( DWORD nInd = 1; nInd < DEFAULT_ARRAY_LEN && nResult == 0; nInd++ )
{
- if ( pAdvises[nInd] == pOwnAdvise )
+ if ( pAdvises[nInd].get() == pOwnAdvise.get() )
{
nResult = nInd;
}
@@ -90,9 +103,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
{
// deregister all the listeners
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
- if ( SUCCEEDED( hr ) && pOleObject )
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pOleObject )
{
for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
if ( m_pOleAdvises[nInd] )
@@ -105,9 +117,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
pOleObject->SetClientSite( nullptr );
}
- ComSmart< IDataObject > pIDataObject;
- hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
- if ( SUCCEEDED( hr ) && pIDataObject )
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pIDataObject )
{
for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
if ( m_pDataAdvises[nInd] )
@@ -118,17 +129,15 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
}
}
- ComSmart< IViewObject > pIViewObject;
- hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
- if ( SUCCEEDED( hr ) && pIViewObject )
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pIViewObject )
{
if ( m_pViewAdvise )
pIViewObject->SetAdvise( m_pViewAdvise->GetAspect(), m_pViewAdvise->GetViewAdviseFlag(), nullptr );
}
- ComSmart< IPersistStorage > pPersist;
- hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
- if ( SUCCEEDED( hr ) && pPersist )
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pPersist )
{
// disconnect the old wrapper from the storage
pPersist->HandsOffStorage();
@@ -152,29 +161,26 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
{
if ( m_nInitMode == INIT_FROM_STORAGE )
{
- ComSmart< IPersistStorage > pPersist;
- hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist && m_pStorage )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist && m_pStorage )
hr = pPersist->InitNew( m_pStorage.get() );
}
else if ( m_nInitMode == LOAD_FROM_STORAGE )
{
- ComSmart< IPersistStorage > pPersist;
- hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist && m_pStorage )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist && m_pStorage )
hr = pPersist->Load( m_pStorage.get() );
}
else if ( m_nInitMode == LOAD_FROM_FILE )
{
- ComSmart< IPersistFile > pPersistFile;
- hr = m_pDefHandler->QueryInterface( IID_IPersistFile, reinterpret_cast<void**>(&pPersistFile) );
+ sal::systools::COMReference< IPersistFile > pPersistFile(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersistFile && m_pFileName )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersistFile && m_pFileName )
hr = pPersistFile->Load( m_pFileName, m_nFileOpenMode );
}
}
@@ -187,9 +193,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
// register all the listeners new
- ComSmart< IOleObject > pOleObject;
- hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
- if ( SUCCEEDED( hr ) && pOleObject )
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pOleObject )
{
if ( m_pClientSite )
pOleObject->SetClientSite( m_pClientSite.get() );
@@ -203,9 +208,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
}
}
- ComSmart< IDataObject > pIDataObject;
- hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
- if ( SUCCEEDED( hr ) && pIDataObject )
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pIDataObject )
{
for ( DWORD nInd = 0; nInd < DEFAULT_ARRAY_LEN; nInd++ )
if ( m_pDataAdvises[nInd] )
@@ -216,9 +220,8 @@ BOOL InprocEmbedDocument_Impl::CheckDefHandler()
}
}
- ComSmart< IViewObject > pIViewObject;
- hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
- if ( SUCCEEDED( hr ) && pIViewObject )
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
+ if ( pIViewObject )
{
if ( m_pViewAdvise )
pIViewObject->SetAdvise( m_pViewAdvise->GetAspect(), m_pViewAdvise->GetViewAdviseFlag(), m_pViewAdvise.get() );
@@ -236,17 +239,8 @@ void InprocEmbedDocument_Impl::Clean()
// 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] = nullptr;
- }
-
- if ( m_pDataAdvises[nInd] )
- {
- ComSmart< OleWrapperAdviseSink > pAdvise = m_pDataAdvises[nInd];
- m_pDataAdvises[nInd] = nullptr;
- }
+ m_pOleAdvises[nInd].clear();
+ m_pDataAdvises[nInd].clear();
}
m_pViewAdvise = nullptr;
@@ -272,7 +266,7 @@ void InprocEmbedDocument_Impl::Clean()
// IUnknown
-COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::QueryInterface( REFIID riid, void FAR* FAR* ppv )
+COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::QueryInterface(REFIID riid, void** ppv)
{
if(IsEqualIID(riid, IID_IUnknown))
{
@@ -402,11 +396,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::IsDirty()
if ( CheckDefHandler() )
{
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
return pPersist->IsDirty();
}
@@ -418,13 +411,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InitNew( IStorage *p
{
if ( CheckDefHandler() )
{
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
{
- hr = pPersist->InitNew( pStg );
+ HRESULT hr = pPersist->InitNew( pStg );
if ( SUCCEEDED( hr ) )
{
m_nInitMode = INIT_FROM_STORAGE;
@@ -450,13 +442,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Load( IStorage *pStg
{
if ( CheckDefHandler() )
{
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
{
- hr = pPersist->Load( pStg );
+ HRESULT hr = pPersist->Load( pStg );
if ( SUCCEEDED( hr ) )
{
m_nInitMode = LOAD_FROM_STORAGE;
@@ -485,11 +476,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Save( IStorage *pStg
if ( CheckDefHandler() )
{
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
return pPersist->Save( pStgSave, fSameAsLoad );
}
@@ -509,13 +499,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SaveCompleted( IStor
if ( CheckDefHandler() )
{
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
{
- hr = pPersist->SaveCompleted( pStgNew );
+ HRESULT hr = pPersist->SaveCompleted( pStgNew );
if ( SUCCEEDED( hr ) )
{
m_nInitMode = LOAD_FROM_STORAGE;
@@ -544,13 +533,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::HandsOffStorage()
{
if ( CheckDefHandler() )
{
- ComSmart< IPersistStorage > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistStorage, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistStorage > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
{
- hr = pPersist->HandsOffStorage();
+ HRESULT hr = pPersist->HandsOffStorage();
if ( SUCCEEDED( hr ) )
{
m_pStorage = nullptr;
@@ -569,13 +557,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Load( LPCOLESTR pszF
{
if ( CheckDefHandler() && pszFileName )
{
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
{
- hr = pPersist->Load( pszFileName, dwMode );
+ HRESULT hr = pPersist->Load( pszFileName, dwMode );
if ( SUCCEEDED( hr ) )
{
m_nInitMode = LOAD_FROM_FILE;
@@ -599,11 +586,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Save( LPCOLESTR pszF
{
if ( CheckDefHandler() )
{
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
return pPersist->Save( pszFileName, fRemember );
}
@@ -615,13 +601,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SaveCompleted( LPCOL
{
if ( CheckDefHandler() )
{
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
{
- hr = pPersist->SaveCompleted( pszFileName );
+ HRESULT hr = pPersist->SaveCompleted( pszFileName );
if ( SUCCEEDED( hr ) )
{
m_nInitMode = LOAD_FROM_STORAGE;
@@ -644,11 +629,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetCurFile( LPOLESTR
{
if ( CheckDefHandler() )
{
- ComSmart< IPersistFile > pPersist;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IPersistFile, reinterpret_cast<void**>(&pPersist) );
+ sal::systools::COMReference< IPersistFile > pPersist(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pPersist )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pPersist )
return pPersist->GetCurFile( ppszFileName );
}
@@ -674,11 +658,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetClientSite( IOleC
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
{
HRESULT hr2 = pOleObject->SetClientSite( pSite );
if ( SUCCEEDED( hr2 ) )
@@ -708,11 +691,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetClientSite( IOleC
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->GetClientSite( pSite );
}
@@ -725,13 +707,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetHostNames( LPCOLE
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
{
- hr = pOleObject->SetHostNames( szContainerApp, szContainerObj );
+ pOleObject->SetHostNames( szContainerApp, szContainerObj );
}
}
@@ -745,13 +726,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Close( DWORD dwSaveO
if ( m_pDefHandler && CheckDefHandler() )
{
// no need to close if there is no default handler.
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
{
- hr = pOleObject->Close( dwSaveOption );
+ HRESULT hr = pOleObject->Close( dwSaveOption );
if (!SUCCEEDED(hr))
ret = hr;
hr = CoDisconnectObject( static_cast<IUnknown*>(static_cast<IPersistStorage*>(this)), 0 );
@@ -771,11 +751,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetMoniker( DWORD dw
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->SetMoniker( dwWhichMoniker, pmk );
}
@@ -787,11 +766,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetMoniker( DWORD dw
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->GetMoniker( dwAssign, dwWhichMoniker, ppmk );
}
@@ -803,11 +781,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InitFromData( IDataO
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->InitFromData( pDataObject, fCreation, dwReserved );
}
@@ -819,11 +796,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetClipboardData( DW
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->GetClipboardData( dwReserved, ppDataObject );
}
@@ -841,14 +817,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::DoVerb(
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
{
- hr = pOleObject->DoVerb( iVerb, pMsg, pActiveSite, nLong, hWin, pRect );
- return hr;
+ return pOleObject->DoVerb( iVerb, pMsg, pActiveSite, nLong, hWin, pRect );
}
}
@@ -861,11 +835,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::EnumVerbs( IEnumOLEV
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->EnumVerbs( ppEnumOleVerb );
}
@@ -878,11 +851,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Update()
if ( m_pDefHandler && CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->Update();
}
@@ -894,11 +866,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::IsUpToDate()
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->IsUpToDate();
}
@@ -919,11 +890,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetUserType( DWORD d
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->GetUserType( dwFormOfType, pszUserType );
}
@@ -935,11 +905,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetExtent( DWORD dwD
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->SetExtent( dwDrawAspect, psizel );
}
@@ -951,11 +920,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetExtent( DWORD dwD
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->GetExtent( dwDrawAspect, psizel );
}
@@ -978,14 +946,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Advise( IAdviseSink
if ( pAdvSink && CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
{
- ComSmart<IAdviseSink> aListener(pAdvSink);
- ComSmart<OleWrapperAdviseSink> pOwnAdvise(new OleWrapperAdviseSink(aListener));
+ sal::systools::COMReference pOwnAdvise(new OleWrapperAdviseSink(pAdvSink));
DWORD nRegID = 0;
if ( SUCCEEDED( pOleObject->Advise( pOwnAdvise.get(), &nRegID ) ) && nRegID > 0 )
@@ -1011,11 +977,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Unadvise( DWORD dwCo
{
if ( m_pDefHandler )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
{
DWORD nID = m_pOleAdvises[dwConnection]->GetRegID();
pOleObject->Unadvise( nID );
@@ -1042,11 +1007,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetMiscStatus( DWORD
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->GetMiscStatus( dwAspect, pdwStatus );
}
@@ -1058,11 +1022,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetColorScheme( LOGP
{
if ( CheckDefHandler() )
{
- ComSmart< IOleObject > pOleObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleObject, reinterpret_cast<void**>(&pOleObject) );
+ sal::systools::COMReference< IOleObject > pOleObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pOleObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pOleObject )
return pOleObject->SetColorScheme( pLogpal );
}
@@ -1075,11 +1038,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetData( FORMATETC *
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->GetData( pFormatetc, pMedium );
}
@@ -1091,11 +1053,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetDataHere( FORMATE
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->GetDataHere( pFormatetc, pMedium );
}
@@ -1107,11 +1068,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::QueryGetData( FORMAT
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->QueryGetData( pFormatetc );
}
@@ -1123,11 +1083,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetCanonicalFormatEt
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->GetCanonicalFormatEtc( pFormatetcIn, pFormatetcOut );
}
@@ -1139,11 +1098,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetData( FORMATETC *
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->SetData( pFormatetc, pMedium, fRelease );
}
@@ -1155,11 +1113,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::EnumFormatEtc( DWORD
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->EnumFormatEtc( dwDirection, ppFormatetc );
}
@@ -1182,13 +1139,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::DAdvise( FORMATETC *
if ( pAdvSink && CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
{
- ComSmart< OleWrapperAdviseSink > pOwnAdvise( new OleWrapperAdviseSink( ComSmart<IAdviseSink>( pAdvSink ), pFormatetc, advf ) );
+ sal::systools::COMReference pOwnAdvise( new OleWrapperAdviseSink( pAdvSink, pFormatetc, advf ) );
DWORD nRegID = 0;
if ( SUCCEEDED( pIDataObject->DAdvise( pFormatetc, advf, pOwnAdvise.get(), &nRegID ) ) && nRegID > 0 )
@@ -1214,11 +1170,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::DUnadvise( DWORD dwC
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
{
DWORD nID = m_pDataAdvises[dwConnection]->GetRegID();
pIDataObject->DUnadvise( nID );
@@ -1239,11 +1194,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::EnumDAdvise( IEnumST
{
if ( CheckDefHandler() )
{
- ComSmart< IDataObject > pIDataObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDataObject, reinterpret_cast<void**>(&pIDataObject) );
+ sal::systools::COMReference< IDataObject > pIDataObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDataObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDataObject )
return pIDataObject->EnumDAdvise( ppenumAdvise );
}
@@ -1256,11 +1210,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetRunningClass( LPC
{
if ( CheckDefHandler() )
{
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, reinterpret_cast<void**>(&pIRunObj) );
+ sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIRunObj )
return pIRunObj->GetRunningClass( lpClsid );
}
@@ -1272,11 +1225,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Run( LPBINDCTX pbc )
{
if ( CheckDefHandler() )
{
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, reinterpret_cast<void**>(&pIRunObj) );
+ sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIRunObj )
return pIRunObj->Run( pbc );
}
@@ -1287,11 +1239,10 @@ BOOL STDMETHODCALLTYPE InprocEmbedDocument_Impl::IsRunning()
{
if (CheckDefHandler())
{
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, reinterpret_cast<void**>(&pIRunObj) );
+ sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIRunObj )
return pIRunObj->IsRunning();
}
@@ -1302,11 +1253,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::LockRunning( BOOL fL
{
if ( CheckDefHandler() )
{
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, reinterpret_cast<void**>(&pIRunObj) );
+ sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIRunObj )
return pIRunObj->LockRunning( fLock, fLastUnlockCloses );
}
@@ -1318,11 +1268,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetContainedObject(
{
if ( CheckDefHandler() )
{
- ComSmart< IRunnableObject > pIRunObj;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IRunnableObject, reinterpret_cast<void**>(&pIRunObj) );
+ sal::systools::COMReference< IRunnableObject > pIRunObj(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIRunObj )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIRunObj )
return pIRunObj->SetContainedObject( fContained );
}
@@ -1336,11 +1285,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Draw( DWORD dwDrawAs
{
if ( CheckDefHandler() )
{
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIViewObject )
return pIViewObject->Draw( dwDrawAspect, lindex, pvAspect, ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue );
}
@@ -1352,11 +1300,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetColorSet( DWORD d
{
if ( CheckDefHandler() )
{
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIViewObject )
return pIViewObject->GetColorSet( dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet );
}
@@ -1368,11 +1315,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Freeze( DWORD dwDraw
{
if ( CheckDefHandler() )
{
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIViewObject )
return pIViewObject->Freeze( dwDrawAspect, lindex, pvAspect, pdwFreeze );
}
@@ -1384,11 +1330,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Unfreeze( DWORD dwFr
{
if ( CheckDefHandler() )
{
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIViewObject )
return pIViewObject->Unfreeze( dwFreeze );
}
@@ -1408,14 +1353,12 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetAdvise( DWORD asp
if ( pAdvSink && CheckDefHandler() )
{
- ComSmart< IViewObject > pIViewObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject, reinterpret_cast<void**>(&pIViewObject) );
+ sal::systools::COMReference< IViewObject > pIViewObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIViewObject )
{
- ComSmart<IAdviseSink> aListener(pAdvSink);
- ComSmart<OleWrapperAdviseSink> pOwnAdvise(new OleWrapperAdviseSink(aListener, aspects, advf));
+ sal::systools::COMReference pOwnAdvise(new OleWrapperAdviseSink(pAdvSink, aspects, advf));
if ( SUCCEEDED( pIViewObject->SetAdvise( aspects, advf, pOwnAdvise.get() ) ) )
{
@@ -1458,11 +1401,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetExtent( DWORD dwD
{
if ( CheckDefHandler() )
{
- ComSmart< IViewObject2 > pIViewObject2;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IViewObject2, reinterpret_cast<void**>(&pIViewObject2) );
+ sal::systools::COMReference< IViewObject2 > pIViewObject2(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIViewObject2 )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIViewObject2 )
return pIViewObject2->GetExtent( dwDrawAspect, lindex, ptd, lpsizel );
}
@@ -1476,11 +1418,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetWindow( HWND *phw
{
if ( CheckDefHandler() )
{
- ComSmart< IOleWindow > pIOleWindow;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleWindow, reinterpret_cast<void**>(&pIOleWindow) );
+ sal::systools::COMReference< IOleWindow > pIOleWindow(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleWindow )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleWindow )
return pIOleWindow->GetWindow( phwnd );
}
@@ -1492,11 +1433,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::ContextSensitiveHelp
{
if ( CheckDefHandler() )
{
- ComSmart< IOleWindow > pIOleWindow;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleWindow, reinterpret_cast<void**>(&pIOleWindow) );
+ sal::systools::COMReference< IOleWindow > pIOleWindow(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleWindow )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleWindow )
return pIOleWindow->ContextSensitiveHelp( fEnterMode );
}
@@ -1510,11 +1450,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InPlaceDeactivate()
{
if ( CheckDefHandler() )
{
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, reinterpret_cast<void**>(&pIOleInPlaceObject) );
+ sal::systools::COMReference< IOleInPlaceObject > pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleInPlaceObject )
return pIOleInPlaceObject->InPlaceDeactivate();
}
@@ -1526,11 +1465,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::UIDeactivate()
{
if ( CheckDefHandler() )
{
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, reinterpret_cast<void**>(&pIOleInPlaceObject) );
+ sal::systools::COMReference< IOleInPlaceObject > pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleInPlaceObject )
return pIOleInPlaceObject->UIDeactivate();
}
@@ -1542,11 +1480,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::SetObjectRects( LPCR
{
if ( CheckDefHandler() )
{
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, reinterpret_cast<void**>(&pIOleInPlaceObject) );
+ sal::systools::COMReference< IOleInPlaceObject > pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleInPlaceObject )
return pIOleInPlaceObject->SetObjectRects( lprcPosRect, lprcClipRect );
}
@@ -1558,11 +1495,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::ReactivateAndUndo()
{
if ( CheckDefHandler() )
{
- ComSmart< IOleInPlaceObject > pIOleInPlaceObject;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IOleInPlaceObject, reinterpret_cast<void**>(&pIOleInPlaceObject) );
+ sal::systools::COMReference< IOleInPlaceObject > pIOleInPlaceObject(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleInPlaceObject )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleInPlaceObject )
return pIOleInPlaceObject->ReactivateAndUndo();
}
@@ -1576,11 +1512,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetTypeInfoCount( UI
{
if ( CheckDefHandler() )
{
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, reinterpret_cast<void**>(&pIDispatch) );
+ sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDispatch )
return pIDispatch->GetTypeInfoCount( pctinfo );
}
@@ -1592,11 +1527,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetTypeInfo( UINT iT
{
if ( CheckDefHandler() )
{
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, reinterpret_cast<void**>(&pIDispatch) );
+ sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDispatch )
return pIDispatch->GetTypeInfo( iTInfo, lcid, ppTInfo );
}
@@ -1608,11 +1542,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::GetIDsOfNames( REFII
{
if ( CheckDefHandler() )
{
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, reinterpret_cast<void**>(&pIDispatch) );
+ sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDispatch )
return pIDispatch->GetIDsOfNames( riid, rgszNames, cNames, lcid, rgDispId );
}
@@ -1624,11 +1557,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Invoke( DISPID dispI
{
if ( CheckDefHandler() )
{
- ComSmart< IDispatch > pIDispatch;
- HRESULT hr = m_pDefHandler->QueryInterface( IID_IDispatch, reinterpret_cast<void**>(&pIDispatch) );
+ sal::systools::COMReference< IDispatch > pIDispatch(m_pDefHandler, sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIDispatch )
+ ULONGGuard aGuard( m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIDispatch )
return pIDispatch->Invoke( dispIdMember, riid, lcid, wFlags, pDispParams, pVarResult, pExcepInfo, puArgErr );
}
@@ -1641,7 +1573,8 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::Invoke( DISPID dispI
// IUnknown
-COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper::QueryInterface( REFIID riid, void FAR* FAR* ppv )
+COM_DECLSPEC_NOTHROW STDMETHODIMP
+InprocEmbedDocument_Impl::InternalCacheWrapper::QueryInterface(REFIID riid, void** ppv)
{
return m_rOwnDocument.QueryInterface( riid, ppv );
}
@@ -1664,11 +1597,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+ sal::systools::COMReference< IOleCache > pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache )
return pIOleCache->Cache( pformatetc, advf, pdwConnection );
}
@@ -1680,11 +1612,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+ sal::systools::COMReference< IOleCache > pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache )
return pIOleCache->Uncache( dwConnection );
}
@@ -1696,11 +1627,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+ sal::systools::COMReference< IOleCache > pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache )
return pIOleCache->EnumCache( ppenumSTATDATA );
}
@@ -1712,11 +1642,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+ sal::systools::COMReference< IOleCache > pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache )
return pIOleCache->InitCache( pDataObject );
}
@@ -1728,11 +1657,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache > pIOleCache;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache, reinterpret_cast<void**>(&pIOleCache) );
+ sal::systools::COMReference< IOleCache > pIOleCache(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache )
return pIOleCache->SetData( pformatetc, pmedium, fRelease );
}
@@ -1745,11 +1673,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache2 > pIOleCache2;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache2, reinterpret_cast<void**>(&pIOleCache2) );
+ sal::systools::COMReference< IOleCache2 > pIOleCache2(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache2 )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache2 )
return pIOleCache2->UpdateCache( pDataObject, grfUpdf, pReserved );
}
@@ -1761,11 +1688,10 @@ COM_DECLSPEC_NOTHROW STDMETHODIMP InprocEmbedDocument_Impl::InternalCacheWrapper
{
if ( m_rOwnDocument.CheckDefHandler() )
{
- ComSmart< IOleCache2 > pIOleCache2;
- HRESULT hr = m_rOwnDocument.GetDefHandler()->QueryInterface( IID_IOleCache2, reinterpret_cast<void**>(&pIOleCache2) );
+ sal::systools::COMReference< IOleCache2 > pIOleCache2(m_rOwnDocument.GetDefHandler(), sal::systools::COM_QUERY);
- ULONGGuard aGuard( &m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
- if ( SUCCEEDED( hr ) && pIOleCache2 )
+ ULONGGuard aGuard( m_rOwnDocument.m_nCallsOnStack ); // avoid reentrance problem
+ if ( pIOleCache2 )
return pIOleCache2->DiscardCache( dwDiscardOptions );
}
diff --git a/embedserv/source/inprocserv/inprocembobj.h b/embedserv/source/inprocserv/inprocembobj.h
index 8b0b8bd89e92..8591a56c3e87 100644
--- a/embedserv/source/inprocserv/inprocembobj.h
+++ b/embedserv/source/inprocserv/inprocembobj.h
@@ -26,7 +26,7 @@
#include <windows.h>
#include <oleidl.h>
-#include "smartpointer.hxx"
+#include <systools/win32/comtools.hxx>
#include "advisesink.hxx"
#define DEFAULT_ARRAY_LEN 256
@@ -69,24 +69,24 @@ class InprocEmbedDocument_Impl : public InprocCountedObject_Impl
GUID m_guid;
- ComSmart< IUnknown > m_pDefHandler;
+ sal::systools::COMReference< IUnknown > m_pDefHandler;
InitModes m_nInitMode;
DWORD m_nFileOpenMode;
wchar_t* m_pFileName;
- ComSmart< IStorage > m_pStorage;
+ sal::systools::COMReference< IStorage > m_pStorage;
- ComSmart< IOleClientSite > m_pClientSite;
- ComSmart< IOleContainer > m_pOleContainer;
+ sal::systools::COMReference< IOleClientSite > m_pClientSite;
+ sal::systools::COMReference< 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;
+ sal::systools::COMReference< OleWrapperAdviseSink > m_pOleAdvises[DEFAULT_ARRAY_LEN];
+ sal::systools::COMReference< OleWrapperAdviseSink > m_pDataAdvises[DEFAULT_ARRAY_LEN];
+ sal::systools::COMReference< OleWrapperAdviseSink > m_pViewAdvise;
class InternalCacheWrapper final: public IOleCache2
{
@@ -134,7 +134,7 @@ public:
{}
BOOL CheckDefHandler();
- ComSmart< IUnknown >& GetDefHandler() { return m_pDefHandler; }
+ sal::systools::COMReference< IUnknown >& GetDefHandler() { return m_pDefHandler; }
/* IUnknown methods */
STDMETHOD(QueryInterface)(REFIID riid, void ** ppvObj) override;
diff --git a/embedserv/source/inprocserv/smartpointer.hxx b/embedserv/source/inprocserv/smartpointer.hxx
deleted file mode 100644
index 5e1606cad725..000000000000
--- a/embedserv/source/inprocserv/smartpointer.hxx
+++ /dev/null
@@ -1,184 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_EMBEDSERV_SOURCE_INPROCSERV_SMARTPOINTER_HXX
-#define INCLUDED_EMBEDSERV_SOURCE_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 = nullptr;
- pInterface->Release();
- }
- }
-
-public:
- ComSmart()
- : m_pInterface( nullptr )
- {}
-
- ComSmart( const ComSmart<T>& rObj )
- : m_pInterface( rObj.m_pInterface )
- {
- if ( m_pInterface != nullptr )
- m_pInterface->AddRef();
- }
-
- explicit ComSmart( T* pInterface )
- : m_pInterface( pInterface )
- {
- if ( m_pInterface != nullptr )
- m_pInterface->AddRef();
- }
-
- ~ComSmart()
- {
- OwnRelease();
- }
-
- ComSmart& operator=( const ComSmart<T>& rObj )
- {
- if(this == &rObj)
- return *this;
-
- OwnRelease();
-
- m_pInterface = rObj.m_pInterface;
-
- if ( m_pInterface != nullptr )
- m_pInterface->AddRef();
-
- return *this;
- }
-
- ComSmart<T>& operator=( T* pInterface )
- {
- OwnRelease();
-
- m_pInterface = pInterface;
-
- if ( m_pInterface != nullptr )
- m_pInterface->AddRef();
-
- return *this;
- }
-
- explicit operator bool() const
- {
- return m_pInterface != nullptr;
- }
-
- T* get() const
- {
- return m_pInterface;
- }
-
- T& operator*() const
- {
- return *m_pInterface;
- }
-
- T** operator&()
- {
- OwnRelease();
-
- m_pInterface = nullptr;
-
- 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:
- explicit 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:
- explicit 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: */