This commit is contained in:
Jaremy Creechley 2024-02-21 22:12:55 -07:00
parent 776e7e6905
commit 0a5a1f1f5e

View File

@ -9,21 +9,22 @@ import taskpools
import apatheia/queues import apatheia/queues
type type
OpenArrayHolder*[T] = object Seq*[T] = object
data*: ptr UncheckedArray[T] data*: ptr UncheckedArray[T]
size*: int size*: int
DataObj = ref object
holder: OpenArrayHolder[char]
template toOpenArray*[T](arr: OpenArrayHolder[T]): auto = DataObj = ref object
holder: Seq[char]
template toOpenArray*[T](arr: Seq[T]): auto =
system.toOpenArray(arr.data, 0, arr.size) system.toOpenArray(arr.data, 0, arr.size)
proc toArrayHolder*[T](data: seq[T]): OpenArrayHolder[T] = proc toArrayHolder*[T](data: seq[T]): Seq[T] =
OpenArrayHolder[T]( Seq[T](
data: cast[ptr UncheckedArray[T]](unsafeAddr(data[0])), size: data.len() data: cast[ptr UncheckedArray[T]](unsafeAddr(data[0])), size: data.len()
) )
proc worker(data: ptr OpenArrayHolder[char], queue: SignalQueue[int]) = proc worker(data: ptr Seq[char], queue: SignalQueue[int]) =
os.sleep(1_000) os.sleep(1_000)
assert data[].data != nil assert data[].data != nil
echo "worker: ", data[].toOpenArray() echo "worker: ", data[].toOpenArray()