Advertisement
Guest User

C#_interop_Nim

a guest
Nov 6th, 2015
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.08 KB | None | 0 0
  1. *** C# ***
  2.  
  3.     public struct NimT
  4.     {
  5.       public int intVal1;
  6.       public int intVal2;
  7.     }
  8.  
  9.     [Dllimport(...)]
  10.     populateArraySruct(int length, NimT** ArrayStructs)
  11.  
  12.  
  13.     public static unsafe List<NimT> PopulateLstPackNim(int ArrL)
  14.     {
  15.         NimT* PackUArrOut = null;
  16.         List<NimT> RtPackLst = new List<NimT>(ArrL);
  17.         GetPacksPtrNimMe2(ArrL, &PackUArrOut);
  18.         NimT* CurrentPack = PackUArrOut;
  19.         for (int i = 0; i < ArrL; i++, CurrentPack++)
  20.         {
  21.             RtPackLst.Add(new NimT() {intVal1 = CurrentPack->intVal1, intVal2 = CurrentPack->intVal2 });
  22.         }
  23.         return RtPackLst;
  24.     }
  25.  
  26.  
  27. **NIM**
  28.  
  29.  
  30. type
  31.   ExportNimTARRAY = seq[ExportNimT]
  32.   ExportNimT = object
  33.     intVal1: int32
  34.     intVal2: int32
  35.  
  36. proc GetPacksPtrNimMe2(parSze: int, PackArrINOUT: var ExportNimTARRAY) {.exportc,dynlib.} =
  37.   PackArrINOUT.newSeq(parSze)
  38.   var
  39.     tmp1: int32
  40.     tmp2: int32
  41.   for i, curDataPack in PackArrINOUT.mpairs:
  42.     tmp1 = 10 * int32 i
  43.     tmp2 = int32 i
  44.     curDataPack = ExportNimT (intVal1:tmp1, intVal2: tmp2)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement