using System; using System.Text; using System.Runtime.InteropServices; namespace Deltares.RtcTools.Net { internal class RtcToolsDllNative { private const string Pathdllfile = @"RTCTools_OpenMI.dll"; // do not change! When deploying RTCTools for use // with other software RTCTools_OpenMI.dll is expected to // sit next to Deltares.RtcTools.Net.dll [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void LoadRtcToolsDll(); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern IntPtr CreateOmiAccessableRtcToolsClass(IntPtr schemaDirectory, IntPtr xmlFilesDirectory); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiInitialize(IntPtr @class); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void FinishOmiAccessableRtcToolsClass(IntPtr @class); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void PrepareOmiAccessableRtcToolsClass(IntPtr @class); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void DisposeOmiAccessableRtcToolsClass(IntPtr @class); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiGetStartTimeString(IntPtr @class, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiGetEndTimeString(IntPtr @class, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiGetCurrentTimeString(IntPtr @class, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern int OmiGetInputExchangeItemCount(IntPtr @class); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern int OmiGetOutputExchangeItemCount(IntPtr @class); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiInputExchangeItemGetElementId(IntPtr @class, int index, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiOutputExchangeItemGetElementId(IntPtr @class, int index, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiInputExchangeItemGetQuantityId(IntPtr @class, int index, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiOutputExchangeItemGetQuantityId(IntPtr @class, int index, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiInputExchangeItemGetUnit(IntPtr @class, int index, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiOutputExchangeItemGetUnit(IntPtr @class, int index, StringBuilder retstring, int len); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiSetInputValue(IntPtr @class, int index, double value, int timeStepCount); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern double OmiGetOutputValue(IntPtr @class, int index); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiPerformTimeStep(IntPtr @class, int timeStepCount); [DllImport(Pathdllfile, CallingConvention = CallingConvention.Cdecl)] public static extern void OmiWriteStateFile(IntPtr @class, IntPtr filepath, IntPtr filename); } }