//#define HAVE_GRN_REFERENCE // when defined enabled GRN_REFERNCE in Header, else it is disabled using System; using System.Collections.Generic; using System.Linq; using System.Text; using gr2lib.core.interfaces; using System.Diagnostics; using gr2lib.core.helpers; namespace gr2lib.core.coreclasses.header { #if HAVE_GRN_REFERENCE public class granny_reference : igranny_reference { public granny_reference() { this.SectionIndex = 0; this.Offset = 0; } internal static granny_reference ReadFromMemory(IntPtr pointer) { try { if (pointer == IntPtr.Zero) return null; gr2lib.core.coretypes.native.granny_grn_reference native = Helpers.ReadFromMemory(pointer); granny_reference 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_reference); } } internal static granny_reference ReadFromNative(gr2lib.core.coretypes.native.granny_grn_reference native) { try { granny_reference managed = new granny_reference(); //process reference managed.SectionIndex = native.SectionIndex; managed.Offset = native.Offset; return managed; } catch { StackTrace st = new StackTrace(true); #if ENABLE_EXCEPTION_OUTPUT_TO_CONSOLE Console.WriteLine(st.ToString()); #endif return default(granny_reference); } } #region INativePointer Members private IntPtr _NativePointer; public IntPtr NativePointer { get { return _NativePointer; } set { _NativePointer = value; } } #endregion #region igranny_reference members private Int32 _SectionIndex; private Int32 _Offset; public Int32 SectionIndex { get { return _SectionIndex; } set { _SectionIndex = value; } } public Int32 Offset { get { return _Offset; } set { _Offset = value; } } #endregion } #endif }