/[gr2lib]/trunk/gr2lib/core/helpers/Helpers.cs
ViewVC logotype

Diff of /trunk/gr2lib/core/helpers/Helpers.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 70 by william, Thu Jul 15 12:55:21 2010 UTC revision 83 by william, Fri Jul 16 21:26:08 2010 UTC
# Line 11  namespace gr2lib.core.helpers Line 11  namespace gr2lib.core.helpers
11      {      {
12          public static T ReadFromMemory<T>(IntPtr pointer) where T : struct          public static T ReadFromMemory<T>(IntPtr pointer) where T : struct
13          {          {
14              if (pointer == IntPtr.Zero)              try
15              {              {
16                  throw new InvalidOperationException();                  if (pointer == IntPtr.Zero)
17              }                  {
18                        throw new InvalidOperationException();
19                    }
20    
21              return (T)Marshal.PtrToStructure(pointer, typeof(T));                  return (T)Marshal.PtrToStructure(pointer, typeof(T));
22                }
23                catch (Exception ex)
24                {
25                    Console.WriteLine(ex.ToString());
26                    return default(T);
27                }
28          }          }
29    
30          public static T[] ReadArrayFromMemory<T>(ArrayOfStructures array) where T : struct          public static T[] ReadArrayFromMemory<T>(ArrayOfStructures array) where T : struct
31          {          {
32              return ReadArrayFromMemory<T>(array.Count, array.Pointer);              try
33                {
34                    return ReadArrayFromMemory<T>(array.Count, array.Pointer);
35                }
36                catch (Exception ex)
37                {
38                    Console.WriteLine(ex.ToString());
39                    return default(T[]);
40                }
41          }          }
42    
43          public static T[] ReadArrayFromMemory<T>(int count, IntPtr pointer) where T : struct          public static T[] ReadArrayFromMemory<T>(int count, IntPtr pointer) where T : struct
44          {          {
45              T[] rez = new T[count];              try
             int size = SizeOfStruct<T>();  
             for (int i = 0; i < count; i++)  
46              {              {
47                  rez[i] = ReadFromMemory<T>(new IntPtr(pointer.ToInt32() + (i * size)));                  T[] rez = new T[count];
48                    int size = SizeOfStruct<T>();
49                    for (int i = 0; i < count; i++)
50                    {
51                        rez[i] = ReadFromMemory<T>(new IntPtr(pointer.ToInt32() + (i * size)));
52                    }
53                    return rez;
54                }
55                catch (Exception ex)
56                {
57                    Console.WriteLine(ex.ToString());
58                    return default(T[]);
59              }              }
             return rez;  
60          }          }
61    
62          public static IntPtr[] ReadPtrArrayFromMemory<T>(ArrayOfStructures array) where T : struct          public static IntPtr[] ReadPtrArrayFromMemory<T>(ArrayOfStructures array) where T : struct
63          {          {
64              return ReadPtrArrayFromMemory<T>(array.Count, array.Pointer);              try
65                {
66                    return ReadPtrArrayFromMemory<T>(array.Count, array.Pointer);
67                }
68                catch (Exception ex)
69                {
70                    Console.WriteLine(ex.ToString());
71                    return default(IntPtr[]);
72                }
73          }          }
74    
75          public static IntPtr[] ReadPtrArrayFromMemory<T>(int count, IntPtr pointer) where T : struct          public static IntPtr[] ReadPtrArrayFromMemory<T>(int count, IntPtr pointer) where T : struct
76          {          {
77              IntPtr[] rez = new IntPtr[count];              try
             int size = SizeOfStruct<T>();  
             for (int i = 0; i < count; i++)  
78              {              {
79                  rez[i] = new IntPtr(pointer.ToInt32() + (i * size));                  IntPtr[] rez = new IntPtr[count];
80                    int size = SizeOfStruct<T>();
81                    for (int i = 0; i < count; i++)
82                    {
83                        rez[i] = new IntPtr(pointer.ToInt32() + (i * size));
84                    }
85                    return rez;
86                }
87                catch (Exception ex)
88                {
89                    Console.WriteLine(ex.ToString());
90                    return default(IntPtr[]);
91              }              }
             return rez;  
92          }          }
93    
94          public static IntPtr[] ReadArrayFromMemory(ArrayOfReferences array)          public static IntPtr[] ReadArrayFromMemory(ArrayOfReferences array)
95          {          {
96              return ReadArrayFromMemory(array.Count, array.Pointer);              try
97                {
98                    return ReadArrayFromMemory(array.Count, array.Pointer);
99                }
100                catch (Exception ex)
101                {
102                    Console.WriteLine(ex.ToString());
103                    return default(IntPtr[]);
104                }
105          }          }
106    
107          public static IntPtr[] ReadArrayFromMemory(int count, IntPtr pointer)          public static IntPtr[] ReadArrayFromMemory(int count, IntPtr pointer)
108          {          {
109              IntPtr[] rez = new IntPtr[count];              try
110              for (int i = 0; i < count; i++)              {
111                    IntPtr[] rez = new IntPtr[count];
112                    for (int i = 0; i < count; i++)
113                    {
114                        rez[i] = new IntPtr(Marshal.ReadInt32(new IntPtr(pointer.ToInt32() + (i * 4))));
115                    }
116                    return rez;
117                }
118                catch (Exception ex)
119              {              {
120                  rez[i] = new IntPtr(Marshal.ReadInt32(new IntPtr(pointer.ToInt32() + (i * 4))));                  Console.WriteLine(ex.ToString());
121                    return default(IntPtr[]);
122              }              }
             return rez;  
123          }          }
124    
125          //public static VariantReference[] ReadArrayFromMemory(ArrayOfVariants array)          //public static VariantReference[] ReadArrayFromMemory(ArrayOfVariants array)

Legend:
Removed from v.70  
changed lines
  Added in v.83

  ViewVC Help
Powered by ViewVC 1.1.22