View difference between Paste ID: gYzT9i2z and XF3FeyQD
SHOW: | | - or go back to the newest paste.
1
*** C# ***
2
3
    public struct NimT
4
    {
5-
      public int intVal1;
5+
      public uint Val1;
6-
      public int intVal2;
6+
      public uint Val2;
7
      public uint Val2;
8
    }
9-
    [Dllimport(...)]
9+
10-
    populateArraySruct(int length, NimT** ArrayStructs)
10+
    [Dllimport("DllPath", CallingConvention = CallingConvention.Cdecl)]
11
    public static extern void populateArraySruct(uint length, NimT** ArrayStructs)
12
13
14
    public static unsafe List<NimT> PopulateLstPackNim(int ArrL)
15
    {
16
        NimT* PackUArrOut = null;
17-
        GetPacksPtrNimMe2(ArrL, &PackUArrOut);
17+
18
        populateArraySruct(ArrL, &PackUArrOut);
19
        NimT* CurrentPack = PackUArrOut;
20
        for (int i = 0; i < ArrL; i++, CurrentPack++)
21-
            RtPackLst.Add(new NimT() {intVal1 = CurrentPack->intVal1, intVal2 = CurrentPack->intVal2 });
21+
22
            RtPackLst.Add(new NimT() {Val1 = CurrentPack->Val1, Val2 = CurrentPack->Val2, Val3 = CurrentPack->Val3 });
23
        }
24
        return RtPackLst;
25
    }
26
27
28
**NIM** 
29
# feel free to change uint32 to int / int32 i have tried to be more specific in the type convention
30
31
type
32
  ExportNimTARRAY = seq[ExportNimT]
33-
    intVal1: int32
33+
34-
    intVal2: int32
34+
    Val1: uint32
35
    Val2: uint32
36-
proc GetPacksPtrNimMe2(parSze: int, PackArrINOUT: var ExportNimTARRAY) {.exportc,dynlib.} =
36+
37
proc populateArraySruct(parSze: int, PackArrINOUT: var ExportNimTARRAY) {.exportc,dynlib.} =
38
  PackArrINOUT.newSeq(parSze)
39-
    tmp1: int32
39+
40-
    tmp2: int32
40+
    tmp1: uint32
41
    tmp2: uint32    
42-
    tmp1 = 10 * int32 i
42+
    tmp3: uint32
43-
    tmp2 = int32 i
43+
44-
    curDataPack = ExportNimT (intVal1:tmp1, intVal2: tmp2)
44+
    tmp1 = (uint32 1) * (uint32 i) 
45
    tmp2 = (uint32 10) * (uint32 i)
46
    tmp3 = (uint32 11) * (uint32 i)
47
    curDataPack = ExportNimT (Val1:tmp1, Val2: tmp2, Val3: tmp3)