From 60ddd44d6257d13f9b1a5095a5046f9aaf1a42d3 Mon Sep 17 00:00:00 2001 From: Martin Evans Date: Sun, 12 May 2024 21:36:54 +0100 Subject: [PATCH] Hidden `LLamaTokenData*` and exposed span instead --- LLama/Native/LLamaTokenDataArray.cs | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/LLama/Native/LLamaTokenDataArray.cs b/LLama/Native/LLamaTokenDataArray.cs index 280882cdd..dcb0b5a82 100644 --- a/LLama/Native/LLamaTokenDataArray.cs +++ b/LLama/Native/LLamaTokenDataArray.cs @@ -362,13 +362,28 @@ public struct LLamaTokenDataArrayNative /// A pointer to an array of LlamaTokenData /// /// Memory must be pinned in place for all the time this LLamaTokenDataArrayNative is in use - public unsafe LLamaTokenData* data; + private unsafe LLamaTokenData* _data; /// /// Number of LLamaTokenData in the array /// public ulong size; - + + /// + /// A pointer to an array of LlamaTokenData + /// + /// Memory must be pinned in place for all the time this LLamaTokenDataArrayNative is in use + public Span data + { + get + { + unsafe + { + return new Span(_data, checked((int)size)); + } + } + } + /// /// Indicates if the items in the array are sorted /// @@ -393,7 +408,7 @@ public static MemoryHandle Create(LLamaTokenDataArray array, out LLamaTokenDataA { native = new LLamaTokenDataArrayNative { - data = (LLamaTokenData*)handle.Pointer, + _data = (LLamaTokenData*)handle.Pointer, size = (ulong)array.Data.Length, sorted = array.Sorted };