summaryrefslogtreecommitdiff
path: root/extensions/source/ole/unoobjw.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/ole/unoobjw.hxx')
-rw-r--r--extensions/source/ole/unoobjw.hxx297
1 files changed, 0 insertions, 297 deletions
diff --git a/extensions/source/ole/unoobjw.hxx b/extensions/source/ole/unoobjw.hxx
deleted file mode 100644
index 7d7bca7c4..000000000
--- a/extensions/source/ole/unoobjw.hxx
+++ /dev/null
@@ -1,297 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef _UNOOBJW_HXX
-#define _UNOOBJW_HXX
-
-#include <com/sun/star/bridge/XBridgeSupplier2.hpp>
-#include <com/sun/star/beans/XExactName.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/script/InvocationInfo.hpp>
-#include <salhelper/simplereferenceobject.hxx>
-
-#include "comifaces.hxx"
-#include "ole2uno.hxx"
-#include "unoconversionutilities.hxx"
-
-//#define INVOCATION_SERVICE L"com.sun.star.script.Invocation"
-#define JSCRIPT_VALUE_FUNC L"_GetValueObject"
-#define GET_STRUCT_FUNC L"_GetStruct"
-#define BRIDGE_VALUE_FUNC L"Bridge_GetValueObject"
-#define BRIDGE_GET_STRUCT_FUNC L"Bridge_GetStruct"
-#define BRIDGE_CREATE_TYPE_FUNC L"Bridge_CreateType"
-
-#define DISPID_JSCRIPT_VALUE_FUNC -10l
-#define DISPID_GET_STRUCT_FUNC -102
-#define DISPID_CREATE_TYPE_FUNC -103
-
-using namespace std;
-using namespace cppu;
-using namespace com::sun::star::bridge;
-using namespace com::sun::star::script;
-namespace ole_adapter
-{
-
-
-
-struct hash_IUnknown_Impl
-{
- size_t operator()(const IUnknown* p) const
- {
- return (size_t)p;
- }
-};
-
-struct equal_to_IUnknown_Impl
-{
- bool operator()(const IUnknown* s1, const IUnknown* s2) const
- {
- return s1 == s2;
- }
-};
-
-
-
-struct MemberInfo
-{
- MemberInfo() : flags(0), name() {}
- MemberInfo(WORD f, const OUString& n) : flags(f), name(n) {}
-
- WORD flags;
- OUString name;
-};
-
-typedef boost::unordered_map
-<
- OUString,
- DISPID,
- hashOUString_Impl,
- equalOUString_Impl
-> NameToIdMap;
-
-typedef boost::unordered_map
-<
- OUString,
- sal_Bool,
- hashOUString_Impl,
- equalOUString_Impl
-> BadNameMap;
-
-typedef boost::unordered_map
-<
- DISPID,
- MemberInfo
-> IdToMemberInfoMap;
-
-/*****************************************************************************
-
- class declaration: InterfaceOleWrapper_Impl
-
-*****************************************************************************/
-
-class InterfaceOleWrapper_Impl : public WeakImplHelper2<XBridgeSupplier2, XInitialization>,
- public IDispatchEx,
- public UnoConversionUtilities<InterfaceOleWrapper_Impl>,
- public IUnoObjectWrapper
-{
-public:
-
-
- InterfaceOleWrapper_Impl(Reference<XMultiServiceFactory>& xFactory, sal_uInt8 unoWrapperClass, sal_uInt8 comWrapperClass);
- ~InterfaceOleWrapper_Impl();
-
- /* IUnknown methods */
- STDMETHOD(QueryInterface)(REFIID riid, LPVOID FAR * ppvObj);
- STDMETHOD_(ULONG, AddRef)();
- STDMETHOD_(ULONG, Release)();
-
- /* IDispatch methods */
- STDMETHOD( GetTypeInfoCount )( unsigned int * pctinfo );
- STDMETHOD( GetTypeInfo )( unsigned int itinfo, LCID lcid, ITypeInfo ** pptinfo );
- STDMETHOD( GetIDsOfNames )( REFIID riid, OLECHAR ** rgszNames, unsigned int cNames,
- LCID lcid, DISPID * rgdispid );
- STDMETHOD( Invoke )( DISPID dispidMember, REFIID riid, LCID lcid, unsigned short wFlags,
- DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo,
- unsigned int * puArgErr );
-
- /* IDispatchEx methods */
-
- virtual HRESULT STDMETHODCALLTYPE GetDispID(
- /* [in] */ BSTR bstrName,
- /* [in] */ DWORD grfdex,
- /* [out] */ DISPID __RPC_FAR *pid);
-
- virtual /* [local] */ HRESULT STDMETHODCALLTYPE InvokeEx(
- /* [in] */ DISPID id,
- /* [in] */ LCID lcid,
- /* [in] */ WORD wFlags,
- /* [in] */ DISPPARAMS __RPC_FAR *pdp,
- /* [out] */ VARIANT __RPC_FAR *pvarRes,
- /* [out] */ EXCEPINFO __RPC_FAR *pei,
- /* [unique][in] */ IServiceProvider __RPC_FAR *pspCaller);
-
- virtual HRESULT STDMETHODCALLTYPE DeleteMemberByName(
- /* [in] */ BSTR bstr,
- /* [in] */ DWORD grfdex);
-
- virtual HRESULT STDMETHODCALLTYPE DeleteMemberByDispID(
- /* [in] */ DISPID id);
-
- virtual HRESULT STDMETHODCALLTYPE GetMemberProperties(
- /* [in] */ DISPID id,
- /* [in] */ DWORD grfdexFetch,
- /* [out] */ DWORD __RPC_FAR *pgrfdex);
-
- virtual HRESULT STDMETHODCALLTYPE GetMemberName(
- /* [in] */ DISPID id,
- /* [out] */ BSTR __RPC_FAR *pbstrName);
-
- virtual HRESULT STDMETHODCALLTYPE GetNextDispID(
- /* [in] */ DWORD grfdex,
- /* [in] */ DISPID id,
- /* [out] */ DISPID __RPC_FAR *pid);
-
- virtual HRESULT STDMETHODCALLTYPE GetNameSpaceParent(
- /* [out] */ IUnknown __RPC_FAR *__RPC_FAR *ppunk);
-
- // XBridgeSupplier2 ---------------------------------------------------
- virtual Any SAL_CALL createBridge(const Any& modelDepObject,
- const Sequence<sal_Int8>& ProcessId,
- sal_Int16 sourceModelType,
- sal_Int16 destModelType)
- throw (IllegalArgumentException, RuntimeException);
-
- //XInitialization -----------------------------------------------------
- virtual void SAL_CALL initialize( const Sequence< Any >& aArguments ) throw(Exception, RuntimeException);
-
- // IUnoObjectWrapper
- STDMETHOD( getWrapperXInterface)( Reference<XInterface>* pXInt);
- STDMETHOD( getOriginalUnoObject)( Reference<XInterface>* pXInt);
- STDMETHOD( getOriginalUnoStruct)( Any * pStruct);
-
- // UnoConversionUtility
- virtual Reference< XInterface > createUnoWrapperInstance();
- virtual Reference< XInterface > createComWrapperInstance();
-
-
-protected:
- virtual HRESULT doInvoke( DISPPARAMS * pdispparams, VARIANT * pvarResult,
- EXCEPINFO * pexcepinfo, unsigned int * puArgErr, OUString & name, Sequence<Any>& params);
-
- virtual HRESULT doGetProperty( DISPPARAMS * pdispparams, VARIANT * pvarResult,
- EXCEPINFO * pexcepinfo, OUString & name );
-
- virtual HRESULT doSetProperty( DISPPARAMS * pdispparams, VARIANT * pvarResult,
- EXCEPINFO * pexcepinfo, unsigned int * puArgErr, OUString & name, Sequence<Any> params);
-
- virtual HRESULT InvokeGeneral( DISPID dispidMember, unsigned short wFlags,
- DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo,
- unsigned int * puArgErr, sal_Bool& bHandled);
-
- void convertDispparamsArgs( DISPID id, unsigned short wFlags, DISPPARAMS* pdispparams,
- Sequence<Any>& rSeq);
-
- sal_Bool getInvocationInfoForCall(DISPID id, InvocationInfo& info);
-
- Reference<XInvocation> m_xInvocation;
- Reference<XExactName> m_xExactName;
- Reference<XInterface> m_xOrigin;
- NameToIdMap m_nameToDispIdMap;
- vector<MemberInfo> m_MemberInfos;
- // This member is used to determine the default value
- // denoted by DISPID_VALUE (0). For proper results in JavaScript
- // we have to return the default value when we write an object
- // as out parameter. That is, we get an JScript Array as parameter
- // and put a wrapped object on index null. The array object tries
- // to detect the default value. The wrapped object must then return
- // its own IDispatch* otherwise we cannot access it within the script.
- // see InterfaceOleWrapper_Impl::Invoke
- VARTYPE m_defaultValueType;
-
-};
-
-/*****************************************************************************
-
- class declaration: UnoObjectWrapperRemoteOpt
- ( Uno Object Wrapper Remote Optimized)
- This is the UNO wrapper used in the service com.sun.star.bridge.OleBridgeSupplierVar1.
- Key features:
- DISPIDs are passed out blindly. That is in GetIDsOfNames is no name checking carried out.
- Only if Invoke fails the name is being checked. Moreover Invoke tries to figure out
- if a call is made to a property or method if the flags are DISPATCH_METHOD | DISPATCH_PROPERTYPUT.
- If something has been found out about a property or member than it is saved
- in a MemberInfo structure hold by a IdToMemberInfoMap stl map.
-
-*****************************************************************************/
-class UnoObjectWrapperRemoteOpt: public InterfaceOleWrapper_Impl
-{
-public:
- UnoObjectWrapperRemoteOpt( Reference<XMultiServiceFactory>& aFactory, sal_uInt8 unoWrapperClass, sal_uInt8 comWrapperClass);
- ~UnoObjectWrapperRemoteOpt();
-
- STDMETHOD( GetIDsOfNames )( REFIID riid, OLECHAR ** rgszNames, unsigned int cNames,
- LCID lcid, DISPID * rgdispid );
- STDMETHOD( Invoke )( DISPID dispidMember, REFIID riid, LCID lcid, unsigned short wFlags,
- DISPPARAMS * pdispparams, VARIANT * pvarResult, EXCEPINFO * pexcepinfo,
- unsigned int * puArgErr );
-
- // UnoConversionUtility
- // If UNO interfaces are converted in methods of this class then
- // they are always wrapped with instances of this class
- virtual Reference< XInterface > createUnoWrapperInstance();
-
-protected:
-
- HRESULT methodInvoke( DISPID dispidMember, DISPPARAMS * pdispparams, VARIANT * pvarResult,
- EXCEPINFO * pexcepinfo, unsigned int * puArgErr, Sequence<Any> params);
- // In GetIDsOfNames are blindly passed out, that is without verifying
- // the name. If two names are passed in during different calls to
- // GetIDsOfNames and the names differ only in their cases then different
- // id's are passed out ( e.g. "doSomethingMethod" or "dosomethingmethod").
- // In Invoke the DISPID is remapped to the name passed to GetIDsOfNames
- // and the name is used as parameter for XInvocation::invoke. If invoke
- // fails because of a wrong name, then m_xExactName ( XExactName) is used
- // to verify the name. The correct name is then inserted to m_MemberInfos
- // ( vector<MemberInfo> ). During the next call to Invoke the right name
- // is used. .
-
-
- BadNameMap m_badNameMap;
-
- IdToMemberInfoMap m_idToMemberInfoMap;
-
- DISPID m_currentId;
-
-
-};
-
-} // end namespace
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */