using System; using System.Runtime.InteropServices; namespace Deltares.Piping.Data { // PC3 public delegate IntPtr PC3_Model3CreateHandle(); public delegate void PC3_Model3SetSoilProperties(IntPtr CalcHandle, SoilPropertiesStruct PCSoilProperties); public delegate void PC3_Model3SetWaterProperties(IntPtr CalcHandle, WaterPropertiesStruct PCWaterProperties); public delegate void PC3_Model3SetCrackLength(IntPtr CalcHandle, double CrackLength); public delegate void PC3_Model3SetWellContent(IntPtr CalcHandle, double WellContent); public delegate void PC3_Model3SetHeadDrop(IntPtr CalcHandle, double HeadDrop); public delegate void PC3_Model3SetSeepageLength(IntPtr CalcHandle, double SeepageLength); public delegate void PC3_Model3SetHeights(IntPtr CalcHandle, int HeightCount, double[] Height); public delegate void PC3_Model3SetPermeabilities(IntPtr CalcHandle, int PermeabilityCount, double[] Permeability); public delegate void PC3_Model3SetCalculationParameters(IntPtr CalcHandle, CalculationParametersStruct PCCalculationParameters); public delegate double PC3_Model3GetHeadDrop(IntPtr CalcHandle); public delegate double PC3_Model3GetHeadDropWell(IntPtr CalcHandle); public delegate double PC3_Model3GetSeepageLength(IntPtr CalcHandle); public delegate void PC3_Model3Calculate(IntPtr CalcHandle); public delegate string PC3_Model3GetCalculationMessages(IntPtr CalcHandle); public delegate void PC3_Model3DestroyHandle(IntPtr CalcHandle); public class PipingCalc3Dll { private const string CMPipingCalc3 = @"CalcDlls\MPipingCalc3.dll"; // PC3 [DllImport(CMPipingCalc3)] private static extern IntPtr PC3_CreateHandle(); [DllImport(CMPipingCalc3)] private static extern void PC3_SetSoilProperties(IntPtr CalcHandle, SoilPropertiesStruct PCSoilProperties); [DllImport(CMPipingCalc3)] private static extern void PC3_SetWaterProperties(IntPtr CalcHandle, WaterPropertiesStruct PCWaterProperties); [DllImport(CMPipingCalc3)] private static extern void PC3_SetCrackLength(IntPtr CalcHandle, double CrackLength); [DllImport(CMPipingCalc3)] private static extern void PC3_SetWellContent(IntPtr CalcHandle, double WellContent); [DllImport(CMPipingCalc3)] private static extern void PC3_SetHeadDrop(IntPtr CalcHandle, double HeadDrop); [DllImport(CMPipingCalc3)] private static extern void PC3_SetSeepageLength(IntPtr CalcHandle, double SeepageLength); [DllImport(CMPipingCalc3)] private static extern void PC3_SetHeights(IntPtr CalcHandle, int HeightCount, [MarshalAs(UnmanagedType.LPArray)] double[] Height); [DllImport(CMPipingCalc3)] private static extern void PC3_SetPermeabilities(IntPtr CalcHandle, int PermeabilityCount, [MarshalAs(UnmanagedType.LPArray)] double[] Permeability); [DllImport(CMPipingCalc3)] private static extern void PC3_SetCalculationParameters(IntPtr CalcHandle, CalculationParametersStruct PCCalculationParameters); [DllImport(CMPipingCalc3)] private static extern double PC3_GetHeadDrop(IntPtr CalcHandle); [DllImport(CMPipingCalc3)] private static extern double PC3_GetHeadDropWell(IntPtr CalcHandle); [DllImport(CMPipingCalc3)] private static extern double PC3_GetSeepageLength(IntPtr CalcHandle); [DllImport(CMPipingCalc3)] private static extern void PC3_Calculate(IntPtr CalcHandle); [DllImport(CMPipingCalc3)] [return: MarshalAs(UnmanagedType.LPStr)] private static extern string PC3_GetCalculationMessages(IntPtr CalcHandle); [DllImport(CMPipingCalc3)] private static extern void PC3_DestroyHandle(IntPtr CalcHandle); // PC3 public static PC3_Model3Calculate Model3PC3Calculate = null; public static PC3_Model3CreateHandle Model3PC3CreateHandle = null; public static PC3_Model3DestroyHandle Model3PC3DestroyHandle = null; public static PC3_Model3GetHeadDrop Model3PC3GetHeadDrop = null; public static PC3_Model3GetHeadDropWell Model3PC3GetHeadDropWell = null; public static PC3_Model3GetSeepageLength Model3PC3GetSeepageLength = null; public static PC3_Model3SetCalculationParameters Model3PC3SetCalculationParameters = null; public static PC3_Model3SetCrackLength Model3PC3SetCrackLength = null; public static PC3_Model3SetWellContent Model3PC3SetWellContent = null; public static PC3_Model3SetHeadDrop Model3PC3SetHeadDrop = null; public static PC3_Model3SetHeights Model3PC3SetHeights = null; public static PC3_Model3SetPermeabilities Model3PC3SetPermeabilities = null; public static PC3_Model3SetSeepageLength Model3PC3SetSeepageLength = null; public static PC3_Model3SetSoilProperties Model3PC3SetSoilProperties = null; public static PC3_Model3SetWaterProperties Model3PC3SetWaterProperties = null; public static PC3_Model3GetCalculationMessages Model3PC3GetCalculationMessages = null; static PipingCalc3Dll() { // PC3 Model3PC3Calculate = new PC3_Model3Calculate(PC3_Calculate); Model3PC3CreateHandle = new PC3_Model3CreateHandle(PC3_CreateHandle); Model3PC3DestroyHandle = new PC3_Model3DestroyHandle(PC3_DestroyHandle); Model3PC3GetCalculationMessages = new PC3_Model3GetCalculationMessages(PC3_GetCalculationMessages); Model3PC3GetHeadDrop = new PC3_Model3GetHeadDrop(PC3_GetHeadDrop); Model3PC3GetHeadDropWell = new PC3_Model3GetHeadDropWell(PC3_GetHeadDropWell); Model3PC3GetSeepageLength = new PC3_Model3GetSeepageLength(PC3_GetSeepageLength); Model3PC3SetCalculationParameters = new PC3_Model3SetCalculationParameters(PC3_SetCalculationParameters); Model3PC3SetCrackLength = new PC3_Model3SetCrackLength(PC3_SetCrackLength); Model3PC3SetWellContent = new PC3_Model3SetWellContent(PC3_SetWellContent); Model3PC3SetHeadDrop = new PC3_Model3SetHeadDrop(PC3_SetHeadDrop); Model3PC3SetHeights = new PC3_Model3SetHeights(PC3_SetHeights); Model3PC3SetPermeabilities = new PC3_Model3SetPermeabilities(PC3_SetPermeabilities); Model3PC3SetSeepageLength = new PC3_Model3SetSeepageLength(PC3_SetSeepageLength); Model3PC3SetSoilProperties = new PC3_Model3SetSoilProperties(PC3_SetSoilProperties); Model3PC3SetWaterProperties = new PC3_Model3SetWaterProperties(PC3_SetWaterProperties); } } }