26#include <unordered_map>
31#include <com/sun/star/lang/XInitialization.hpp>
32#include <com/sun/star/bridge/oleautomation/XAutomationObject.hpp>
33#include <com/sun/star/script/XAutomationInvocation.hpp>
34#include <rtl/ustring.hxx>
36#include <com/sun/star/script/XDefaultProperty.hpp>
37#include <com/sun/star/script/XDefaultMethod.hpp>
38#include <com/sun/star/script/XDirectInvocation.hpp>
40#include <typelib/typedescription.hxx>
48typedef std::unordered_map<OUString, std::pair<DISPID, unsigned short>>
DispIdMap;
55class IUnknownWrapper :
public WeakImplHelper< XBridgeSupplier2, XInitialization, XAutomationObject, XDefaultProperty, XDefaultMethod, XDirectInvocation, XAutomationInvocation >,
71 virtual Any SAL_CALL
invoke(
const OUString& aFunctionName,
75 virtual void SAL_CALL
setValue(
const OUString& aPropertyName,
76 const Any& aValue )
override;
77 virtual Any SAL_CALL
getValue(
const OUString& aPropertyName )
override;
88 sal_Int16 sourceModelType,
89 sal_Int16 destModelType )
override;
100 virtual css::uno::Any SAL_CALL
invokeGetProperty(
const OUString& aFunctionName,
const css::uno::Sequence< css::uno::Any >& aParams, css::uno::Sequence< ::sal_Int16 >& aOutParamIndex, css::uno::Sequence< css::uno::Any >& aOutParam )
override;
101 virtual css::uno::Any SAL_CALL
invokePutProperty(
const OUString& aFunctionName,
const css::uno::Sequence< css::uno::Any >& aParams, css::uno::Sequence< ::sal_Int16 >& aOutParamIndex, css::uno::Sequence< css::uno::Any >& aOutParam )
override;
104 virtual css::uno::Any SAL_CALL
directInvoke(
const OUString& aName,
const css::uno::Sequence< css::uno::Any >& aParams )
override;
109 const OUString& sFuncName,
136 void getFuncDesc(
const OUString & sFuncName, FUNCDESC ** pFuncDesc);
146 void getPropDesc(
const OUString & sFuncName, FUNCDESC ** pFuncDescGet,
147 FUNCDESC** pFuncDescPut, VARDESC ** pVarDesc);
151 void getMethodInfo(std::u16string_view sName, TypeDescription& methodDescription);
153 void getAttributeInfo(std::u16string_view sName, TypeDescription& attributeInfo);
166 bool getDispid(
const OUString& sFuncName, DISPID *
id);
~IUnknownWrapper() override
virtual css::uno::Any SAL_CALL directInvoke(const OUString &aName, const css::uno::Sequence< css::uno::Any > &aParams) override
virtual Reference< XInterface > createUnoWrapperInstance() override
OUString m_sDefaultMember
TypeDescription getInterfaceMemberDescOfCurrentCall(std::u16string_view sName)
bool m_bOriginalDispatch
This value is set during XInitialization::initialize.
virtual Reference< XInterface > createComWrapperInstance() override
Any SAL_CALL queryInterface(const Type &t) override
IUnknownWrapper(Reference< XMultiServiceFactory > const &xFactory, sal_uInt8 unoWrapperClass, sal_uInt8 comWrapperClass)
ITypeInfo * getTypeInfo()
Returns always a valid ITypeInfo interface or throws a BridgeRuntimeError.
virtual Any invokeWithDispIdUnoTlb(const OUString &sFunctionName, const Sequence< Any > &Params, Sequence< sal_Int16 > &OutParamIndex, Sequence< Any > &OutParam)
virtual sal_Bool SAL_CALL hasProperty(const OUString &aName) override
virtual css::uno::Any SAL_CALL invokePutProperty(const OUString &aFunctionName, const css::uno::Sequence< css::uno::Any > &aParams, css::uno::Sequence< ::sal_Int16 > &aOutParamIndex, css::uno::Sequence< css::uno::Any > &aOutParam) override
virtual void SAL_CALL initialize(const Sequence< Any > &aArguments) override
VARTYPE getUserDefinedElementType(ITypeInfo *pTypeInfo, const DWORD nHrefType)
virtual sal_Bool SAL_CALL hasMember(const OUString &aName) override
void buildComTlbIndex()
Iterates over all functions and put the names and indices into the map m_mapComFunc of type TLBFuncIn...
virtual void SAL_CALL setValue(const OUString &aPropertyName, const Any &aValue) override
void getMethodInfo(std::u16string_view sName, TypeDescription &methodDescription)
bool getDispid(const OUString &sFuncName, DISPID *id)
Returns the DISPID for a function or property name.
CComPtr< IDispatch > m_spDispatch
void getFuncDescForInvoke(const OUString &sFuncName, const Sequence< Any > &seqArgs, FUNCDESC **pFuncDesc)
Returns a FUNCDESC structure which contains type information about the current XInvocation::invoke ca...
Sequence< Type > m_seqTypes
VARTYPE getElementTypeDesc(const TYPEDESC *desc)
Gets the element type in a VARIANT like style.
virtual sal_Bool SAL_CALL hasMethod(const OUString &aName) override
void getPropDesc(const OUString &sFuncName, FUNCDESC **pFuncDescGet, FUNCDESC **pFuncDescPut, VARDESC **pVarDesc)
Obtains a FUNCDESC structures or a VARDESC structure for a property.
virtual Reference< XIntrospectionAccess > SAL_CALL getIntrospection() override
virtual Any SAL_CALL createBridge(const Any &modelDepObject, const Sequence< sal_Int8 > &aProcessId, sal_Int16 sourceModelType, sal_Int16 destModelType) override
void getAttributeInfo(std::u16string_view sName, TypeDescription &attributeInfo)
Any invokeWithDispIdComTlb(FuncDesc &aFuncDesc, const OUString &sFuncName, const Sequence< Any > &Params, Sequence< sal_Int16 > &OutParamIndex, Sequence< Any > &OutParam)
TLBFuncIndexMap m_mapComFunc
virtual Any SAL_CALL invoke(const OUString &aFunctionName, const Sequence< Any > &aParams, Sequence< sal_Int16 > &aOutParamIndex, Sequence< Any > &aOutParam) override
virtual css::uno::Any SAL_CALL invokeGetProperty(const OUString &aFunctionName, const css::uno::Sequence< css::uno::Any > &aParams, css::uno::Sequence< ::sal_Int16 > &aOutParamIndex, css::uno::Sequence< css::uno::Any > &aOutParam) override
CComPtr< ITypeInfo > m_spTypeInfo
virtual Any SAL_CALL getValue(const OUString &aPropertyName) override
virtual OUString SAL_CALL getDefaultPropertyName() override
void getFuncDesc(const OUString &sFuncName, FUNCDESC **pFuncDesc)
Obtains a FUNCDESC structure for a function.
JScriptDetermination m_eJScript
virtual OUString SAL_CALL getDefaultMethodName() override
CComPtr< IUnknown > m_spUnknown
Reference< XIdlClass > * m_pxIdlClass
All methods are allowed to throw at least a BridgeRuntimeError.
Reference< XSingleServiceFactory > xFactory
Sequence< PropertyValue > aArguments
std::unordered_multimap< OUString, unsigned int > TLBFuncIndexMap
std::unordered_map< OUString, std::pair< DISPID, unsigned short > > DispIdMap