While direct support for seqs and strings is not here (it's planned, according 
to the manual), you can wrap them in objects.
    
    
    type
      MySeq[T] = object
        data: seq[T]
      Cuda = object
    
    var foo = cast[ptr[Cuda, MySeq[int]]](alloc sizeOf(MySeq[int]))
    foo.data = newSeq[int]()
    
    foo.data.add 7
    echo foo.data[0]
    

or with constructor and wrapped procs
    
    
    proc newMySeq[T](size = 0.Natural): Cuda ptr MySeq[T] =
      result = cast[ptr[Cuda, MySeq[T]]](alloc sizeOf(MySeq[T]))
      result.data = newSeq[T](size)
    proc add[T](s: Cuda ptr MySeq[T], v: T) = s.data.add v
    proc `[]`[T](s: Cuda ptr MySeq[T], i: int): T = s.data[i]
    

for more convenient usage
    
    
    var s = newMySeq[float]()
    s.add 5
    echo s[0]
    

Reply via email to