summaryrefslogtreecommitdiff
path: root/extensions/source/ole/oleobjw.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/source/ole/oleobjw.hxx')
-rw-r--r--extensions/source/ole/oleobjw.hxx295
1 files changed, 0 insertions, 295 deletions
diff --git a/extensions/source/ole/oleobjw.hxx b/extensions/source/ole/oleobjw.hxx
deleted file mode 100644
index 387d91d60..000000000
--- a/extensions/source/ole/oleobjw.hxx
+++ /dev/null
@@ -1,295 +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 __OLEOBJW_HXX
-#define __OLEOBJW_HXX
-#include "ole2uno.hxx"
-
-#ifdef _MSC_VER
-#pragma warning (push,1)
-#pragma warning (disable:4548)
-#endif
-
-#include <tools/presys.h>
-#define _WIN32_WINNT 0x0403
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1300)
-#undef _DEBUG
-#endif
-#include <atlbase.h>
-#include <vector>
-#include <boost/unordered_map.hpp>
-#include <tools/postsys.h>
-
-#ifdef _MSC_VER
-#pragma warning (pop)
-#endif
-#include <cppuhelper/implbase3.hxx>
-#include <cppuhelper/implbase4.hxx>
-#include <cppuhelper/implbase8.hxx>
-
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/bridge/oleautomation/XAutomationObject.hpp>
-#include <com/sun/star/script//XAutomationInvocation.hpp>
-#include <rtl/ustring.hxx>
-
-#include <com/sun/star/script/XDefaultProperty.hpp>
-#include <com/sun/star/script/XDefaultMethod.hpp>
-#include <com/sun/star/script/XDirectInvocation.hpp>
-
-#include <typelib/typedescription.hxx>
-#include "unoconversionutilities.hxx"
-#include "windata.hxx"
-using namespace cppu;
-using namespace std;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::bridge;
-using namespace com::sun::star::bridge::oleautomation;
-
-using ::rtl::OUString;
-namespace ole_adapter
-{
-
-
-
-typedef boost::unordered_map<OUString, pair<DISPID, unsigned short>, hashOUString_Impl, equalOUString_Impl> DispIdMap;
-
-typedef boost::unordered_multimap<OUString, unsigned int, hashOUString_Impl, equalOUString_Impl> TLBFuncIndexMap;
-
-// This class wraps an IDispatch and maps XInvocation calls to IDispatch calls on the wrapped object.
-// If m_TypeDescription is set then this class represents an UNO interface implemented in a COM component.
-// The interface is not a real interface in terms of an abstract class but is realized through IDispatch.
-class IUnknownWrapper_Impl : public WeakImplHelper8< XInvocation, XBridgeSupplier2, XInitialization, XAutomationObject, XDefaultProperty, XDefaultMethod, XDirectInvocation, XAutomationInvocation >,
-
- public UnoConversionUtilities<IUnknownWrapper_Impl>
-
-{
-public:
- IUnknownWrapper_Impl(Reference<XMultiServiceFactory> &xFactory,
- sal_uInt8 unoWrapperClass, sal_uInt8 comWrapperClass);
-
- ~IUnknownWrapper_Impl();
-
- //XInterface
- Any SAL_CALL queryInterface(const Type& t)
- throw (RuntimeException);
-
- // XInvokation
- virtual Reference< XIntrospectionAccess > SAL_CALL getIntrospection( )
- throw(RuntimeException);
- virtual Any SAL_CALL invoke( const OUString& aFunctionName,
- const Sequence< Any >& aParams,
- Sequence< sal_Int16 >& aOutParamIndex,
- Sequence< Any >& aOutParam )
- throw(IllegalArgumentException, CannotConvertException,
- InvocationTargetException, RuntimeException);
- virtual void SAL_CALL setValue( const OUString& aPropertyName,
- const Any& aValue )
- throw(UnknownPropertyException, CannotConvertException,
- InvocationTargetException, RuntimeException);
- virtual Any SAL_CALL getValue( const OUString& aPropertyName )
- throw(UnknownPropertyException, RuntimeException);
- virtual sal_Bool SAL_CALL hasMethod( const OUString& aName )
- throw(RuntimeException);
- virtual sal_Bool SAL_CALL hasProperty( const OUString& aName )
- throw(RuntimeException);
-
- // XBridgeSupplier2
- // This interface is implemented to provide a safe way to obtain the original
- // IUnknown or IDispatch within the function anyToVariant. The function asks
- // every UNO object for its XBridgeSupplier2 and if it is available uses it to convert
- // the object with its own supplier.
- virtual Any SAL_CALL createBridge( const Any& modelDepObject,
- const Sequence< sal_Int8 >& aProcessId,
- sal_Int16 sourceModelType,
- sal_Int16 destModelType )
- throw(IllegalArgumentException, RuntimeException);
-
- // XInitialization
- virtual void SAL_CALL initialize( const Sequence< Any >& aArguments )
- throw(Exception, RuntimeException);
-
- // XDefaultProperty
- virtual ::rtl::OUString SAL_CALL getDefaultPropertyName( ) throw (::com::sun::star::uno::RuntimeException) { return m_sDefaultMember; }
-
- // XDefaultMethod
- virtual ::rtl::OUString SAL_CALL getDefaultMethodName( ) throw (::com::sun::star::uno::RuntimeException) { return m_sDefaultMember; }
-
- virtual ::com::sun::star::uno::Any SAL_CALL invokeGetProperty( const ::rtl::OUString& aFunctionName, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, ::com::sun::star::uno::Sequence< ::sal_Int16 >& aOutParamIndex, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::script::CannotConvertException, ::com::sun::star::reflection::InvocationTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL invokePutProperty( const ::rtl::OUString& aFunctionName, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams, ::com::sun::star::uno::Sequence< ::sal_Int16 >& aOutParamIndex, ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aOutParam ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::script::CannotConvertException, ::com::sun::star::reflection::InvocationTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XDirectInvocation
- virtual ::com::sun::star::uno::Any SAL_CALL directInvoke( const ::rtl::OUString& aName, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aParams ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::script::CannotConvertException, ::com::sun::star::reflection::InvocationTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL hasMember( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
-
-
- Any invokeWithDispIdComTlb(FuncDesc& aFuncDesc,
- const OUString& sFuncName,
- const Sequence< Any >& Params,
- Sequence< sal_Int16 >& OutParamIndex,
- Sequence< Any >& OutParam);
-
-
-protected:
- // ----------------------------------------------------------------------------
- virtual Any invokeWithDispIdUnoTlb(const OUString& sFunctionName,
- const Sequence< Any >& Params,
- Sequence<sal_Int16 >& OutParamIndex,
- Sequence< Any >& OutParam);
- // Is used for OleObjectFactory service
- virtual Any invokeWithDispIdComTlb(const OUString& sFuncName,
- const Sequence< Any >& Params,
- Sequence< sal_Int16 >& OutParamIndex,
- Sequence< Any >& OutParam);
-
-// virtual void setValueWithDispId(DISPID dispID, const Any& Value);
-
-// virtual Any getValueWithDispId(const OUString& sName, DISPID dispID);
-
-
- // UnoConversionUtilities -------------------------------------------------------------------------------
- virtual Reference<XInterface> createUnoWrapperInstance();
- virtual Reference<XInterface> createComWrapperInstance();
-
- /**Obtains a FUNCDESC structure for a function.
- Fills the FUNCDESC structure if ITypeInfo provides information for
- the function of name sFuncName or pFuncDesc will not be filled in.
- May throw a BridgeRuntimeError.
- */
- void getFuncDesc(const OUString & sFuncName, FUNCDESC ** pFuncDesc);
- /**Obtains a FUNCDESC structures or a VARDESC structure
- for a property. pFuncDescPut may also contain
- a structure for a "propertyputref" operation. If pFuncDesc contains a
- "put ref" or "put" FUNCDESC depends on what was found first in the type
- description.
- Fills the FUNCDESC structure if ITypeInfo provides information for
- the respective property functions or the structures will not be filled in.
- May throw a BridgeRuntimeError.
- */
- void getPropDesc(const OUString & sFuncName, FUNCDESC ** pFuncDescGet,
- FUNCDESC** pFuncDescPut, VARDESC ** pVarDesc);
- // These functions are for the case if an object of this class wraps an IDispatch
- // object that implements UNO interfaces. In that case the member m_seqTypes
- // is set through XInitialization::initialize.
- void getMethodInfo(const OUString& sName, TypeDescription& methodDescription);
- // After return attributInfo contains typelib_InterfaceAttributeTypeDescription::pAttributeTypeRef
- void getAttributeInfo(const OUString& sName, TypeDescription& attributeInfo);
- // used by get MethodInfo
- TypeDescription getInterfaceMemberDescOfCurrentCall(const OUString& sName);
- /** Returns alway a valid ITypeInfo interface or throws a BridgeRuntimeError.
- The returned interface does not need to be AddRef'ed as long as it is locally
- used. The interface is kept in the instance of this class.
- */
- ITypeInfo* getTypeInfo();
-
- /** Returns the DISPID for a function or property name. If true is returned then
- id contains a valid DISPID.
- */
-
- bool getDispid(const OUString& sFuncName, DISPID * id);
-
- VARTYPE getUserDefinedElementType( ITypeInfo* pTypeInfo, const DWORD nHrefType );
-
- /** Gets the element type in a VARIANT like style. E.g. if desc->lptdesc contains
- a VT_PTR than it is replaced by VT_BYREF and VT_SAFEARRAY is replaced by VT_ARRAY
- If the TYPEDESC describes an SAFEARRAY then varType is a combination of VT_ARRAY
- and the element type.
- The argument desc must be obtained from FUNCDESC::lprgelemdescParam[i].tdesc where
- FUNCDESC was obtained from the ITypeInfo belonging to wrapped IDispatch.
- */
- VARTYPE getElementTypeDesc( const TYPEDESC *desc);
- /** Iterates over all functions and put the names and indices into the map
- m_mapComFunc of type TLBFuncIndexMap.
- Call the function every time before accessing the map.
- Throws a BridgeRuntimeError on failure.
- */
- void buildComTlbIndex();
-
- /** Returns a FUNCDESC structure which contains type information about the
- current XInvocation::invoke call. The FUNCDESC either describes a method,
- a property put or a property get operation.
- It uses the types com.sun.star.bridge.oleautomation.PropertyPutArgument
- which can be
- contained in the sequence of in-arguments of invoke to determine if the call is
- a property put or property get operation.
- If no adequate FUNCDESC was found, an IllegalArgumentException is thrown.
- Therefore it is safe to assume that the returned FUNCDESC* is not NULL.
-
- @exception IllegalArgumentException
- Thrown if no adequate FUNCDESC could be found.
- */
- void getFuncDescForInvoke(const OUString & sFuncName,
- const Sequence<Any> & seqArgs, FUNCDESC** pFuncDesc);
-
- // Finds out wheter the wrapped IDispatch is an JScript Object. This is is
- // done by
- // asking for the property "_environment". If it has the value "JScript"
- // (case insensitive) then the IDispatch is considered a JScript object.
- sal_Bool isJScriptObject();
- // -------------------------------------------------------------------------------
-
- // If UNO interfaces are implemented in JScript objects, VB or C++ COM objects
- // and those are passed as parameter to a UNO interface function, then
- // the IDispatch* are wrapped by objects of this class. Assuming that the functions
- // implemented by the IDispatch object returns another UNO interface then
- // it has to be wrapped to this type. But this is only possible if an object of this
- // wrapper class knows what type it is represting. The member m_TypeDescription holds this
- // information.
- // m_TypeDescription is only useful when an object wraps an IDispatch object that implements
- // an UNO interface. The value is set during a call to XInitialization::initialize.
- Sequence<Type> m_seqTypes;
- CComPtr<IUnknown> m_spUnknown;
- CComPtr<IDispatch> m_spDispatch;
- rtl::OUString m_sTypeName; // is "" ( not initialised ), "IDispatch" ( we have no idea ) or "SomeLibrary.SomeTypeName" if we managed to get a type
- /** This value is set dureing XInitialization::initialize. It indicates that the COM interface
- was transported as VT_DISPATCH in a VARIANT rather then a VT_UNKNOWN
- */
- sal_Bool m_bOriginalDispatch;
- DispIdMap m_dispIdMap;
- Reference<XIdlClass>* m_pxIdlClass;
-
-
- // used by isJScriptObject
- enum JScriptDetermination{ JScriptUndefined=0, NoJScript, IsJScript};
- JScriptDetermination m_eJScript;
- // The map is filled by buildComTlbIndex
- // It maps Uno Function names to an index which is used in ITypeInfo::GetFuncDesc
- TLBFuncIndexMap m_mapComFunc;
- // used for synchroizing the computation of the content for m_mapComFunc
- bool m_bComTlbIndexInit;
- // Keeps the ITypeInfo obtained from IDispatch::GetTypeInfo
- CComPtr< ITypeInfo > m_spTypeInfo;
- rtl::OUString m_sDefaultMember;
- bool m_bHasDfltMethod;
- bool m_bHasDfltProperty;
-};
-
-} // end namespace
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */