using System; using System.IO; using System.Runtime.InteropServices; namespace Deltares.MStab.IO.Classic { public class MStabSerializerDefinitions { private int classicMStabHandle = 0; public int ClassicGetHandle { get { return classicMStabHandle; } } public void ClassicGetVersion(ref Version aVersion) { DllGetVersion(ref aVersion); } public void ClassicDescription(ref string aDesc) { Description(ref aDesc); } public bool ClassicCreateHandle() { // On LoaderLock error here, uncheck the LoaderLock from the Managed Debugging Assistents in the Debug|Exceptions dialog // Marshal.PrelinkAll(CMStabSerializerConstants.dgsSerializer); Load(); classicMStabHandle = CreateHandle(); if (classicMStabHandle != 0) { return true; } else { return false; } } public void ClassicDestroyHandle() { if (classicMStabHandle != 0) { classicMStabHandle = DestroyHandle(classicMStabHandle); } classicMStabHandle = 0; } public int ClassicGetHandleCount() { return GetActiveHandleCount(); } public bool ClassicLoadMStabFile(string aMStabFile) { if (!File.Exists(aMStabFile)) { throw new FileNotFoundException(aMStabFile); } return LoadMStabFile(classicMStabHandle, aMStabFile); } public bool ClassicWriteMStabFile(string aMStabFile) { return WriteMStabFile(classicMStabHandle, aMStabFile); } public bool ClassicCompairWithOtherInputFile(string aCompairFile) { return CompairWithOtherInputFile(classicMStabHandle, aCompairFile); } [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern void Load(); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern void DllGetVersion(ref Version aVersion); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern void Description(ref string aDesc); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern int CreateHandle(); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern int DestroyHandle(int aPointer); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern int GetActiveHandleCount(); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern bool LoadMStabFile(int aPointer, string aMStabFile); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern bool WriteMStabFile(int Pointer, string aMStabFile); [DllImport(CMStabSerializerConstants.dgsSerializer)] private static extern bool CompairWithOtherInputFile(int aPointer, string aCompairFile); #region Nested type: CMStabSerializerConstants public class CMStabSerializerConstants { public const String dgsSerializer = "DGSMStabSerializer.dll"; } #endregion #region Nested type: Version [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 8)] public class Version { private int dummy; public string codePage; public string languageID; public string companyName; public string fileDescription; public string fileVersion; public string internalName; public string legalCopyright; public string legalTradeMarks; public string originalFilename; public string productName; public string productVersion; public string comments; } #endregion } } ;