using System; using System.Collections.Generic; using System.Linq; using System.Text; using gr2lib.core.interfaces; using gr2lib.core.helpers; using System.Diagnostics; namespace gr2lib.core.coreclasses.header { public class granny_magic : igranny_magic { private const int GrannyGRNMagixValueCount = 4; private const int GrannyGRNReservedCount = 2; public granny_magic() { this.HeaderSize = 0; this.HeaderFormat = 0; this.MagicValue = new int[GrannyGRNMagixValueCount]; this.Reserved = new int[GrannyGRNReservedCount]; for (int i = 0; i < GrannyGRNMagixValueCount; i++) { this.MagicValue[i] = 0; } for (int i = 0; i < GrannyGRNReservedCount; i++) { this.Reserved[i] = 0; } } internal static granny_magic ReadFromMemory(IntPtr pointer) { try { if (pointer == IntPtr.Zero) return null; gr2lib.core.coretypes.native.granny_grn_file_magic_value native = Helpers.ReadFromMemory(pointer); granny_magic managed = ReadFromNative(native); managed.NativePointer = pointer; return managed; } catch { StackTrace st = new StackTrace(true); #if ENABLE_EXCEPTION_OUTPUT_TO_CONSOLE Console.WriteLine(st.ToString()); #endif return default(granny_magic); } } internal static granny_magic ReadFromNative(gr2lib.core.coretypes.native.granny_grn_file_magic_value native) { try { granny_magic managed = new granny_magic(); //process magic managed.MagicValue = native.MagicValue; managed.HeaderSize = native.HeaderSize; managed.HeaderFormat = native.HeaderFormat; managed.Reserved = native.Reserved; return managed; } catch { StackTrace st = new StackTrace(true); #if ENABLE_EXCEPTION_OUTPUT_TO_CONSOLE Console.WriteLine(st.ToString()); #endif return default(granny_magic); } } #region INativePointer Members private IntPtr _NativePointer; public IntPtr NativePointer { get { return _NativePointer; } set { _NativePointer = value; } } #endregion #region igranny_magic members private Int32[] _MagicValue; private Int32 _HeaderSize; private Int32 _HeaderFormat; private Int32[] _Reserved; public Int32[] MagicValue { get { return _MagicValue; } set { if (value.Length > GrannyGRNMagixValueCount) throw new InvalidOperationException("The size of MagicValue cannot be greater than " + GrannyGRNMagixValueCount); _MagicValue = value; } } // size 4 public Int32 HeaderSize { get { return _HeaderSize; } set { _HeaderSize = value; } } public Int32 HeaderFormat { get { return _HeaderFormat; } set { _HeaderFormat = value; } } public Int32[] Reserved { get { return _Reserved; } set { if (value.Length > GrannyGRNReservedCount) throw new InvalidOperationException("The size of Reserved cannot be greater than " + GrannyGRNReservedCount); _Reserved = value; } } // size 2 #endregion } }