c3c7b48fa9
This patch includes all marshalling and proxy handling code on the .NET side as well as the native side needed for a fully functional UNO bridge. It also includes some changes and corrections to net_basetypes and netmaker needed for the bridge to work properly. It also includes the FirstUnoContact example in C# as demonstration. Change-Id: I406932938a4415d24408fb41ddfa7d8eeb5d1f94 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/170916 Tested-by: Jenkins Reviewed-by: Hossein <hossein@libreoffice.org>
50 lines
2 KiB
C#
50 lines
2 KiB
C#
/*
|
|
* 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/.
|
|
*/
|
|
|
|
using System;
|
|
using System.Runtime.InteropServices;
|
|
|
|
namespace com.sun.star.uno.native
|
|
{
|
|
internal static class InteropMethods
|
|
{
|
|
private const string BOOTSTRAP_LIBRARY = "net_bootstrap";
|
|
private const string UNO_LIBRARY = "net_uno";
|
|
|
|
[DllImport(BOOTSTRAP_LIBRARY, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
|
|
public static extern IntPtr bootstrap(InteropContext pCtx);
|
|
|
|
[DllImport(BOOTSTRAP_LIBRARY, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
|
|
public static extern IntPtr defaultBootstrap_InitialComponentContext(
|
|
[MarshalAs(UnmanagedType.LPWStr)] string sIniFile,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string sParams,
|
|
InteropContext pCtx
|
|
);
|
|
|
|
[DllImport(UNO_LIBRARY, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
|
|
public static extern IntPtr allocateMemory(int nBytes);
|
|
|
|
[DllImport(UNO_LIBRARY, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
|
|
public static extern void freeMemory(IntPtr pMemory);
|
|
|
|
[DllImport(UNO_LIBRARY, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
|
|
public static extern void releaseProxy(IntPtr pBridgeHandle,
|
|
IntPtr pInterfaceHandle, IntPtr pTypeHandle);
|
|
|
|
[DllImport(UNO_LIBRARY, CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
|
|
public static unsafe extern byte dispatchCall(
|
|
IntPtr pBridgeHandle,
|
|
IntPtr pInterfaceHandle,
|
|
IntPtr pTypeHandle,
|
|
[MarshalAs(UnmanagedType.LPWStr)] string sMethod,
|
|
InteropValue* pNetArgs,
|
|
InteropValue* pNetRet,
|
|
InteropValue* pNetExc
|
|
);
|
|
}
|
|
}
|