You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

LLamaToken.cs 1.1 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Diagnostics;
  2. using System.Runtime.InteropServices;
  3. namespace LLama.Native;
  4. /// <summary>
  5. /// A single token
  6. /// </summary>
  7. [StructLayout(LayoutKind.Sequential)]
  8. [DebuggerDisplay("{Value}")]
  9. public readonly record struct LLamaToken
  10. {
  11. /// <summary>
  12. /// The raw value
  13. /// </summary>
  14. private readonly int Value;
  15. /// <summary>
  16. /// Create a new LLamaToken
  17. /// </summary>
  18. /// <param name="value"></param>
  19. private LLamaToken(int value)
  20. {
  21. Value = value;
  22. }
  23. /// <summary>
  24. /// Convert a LLamaToken into an integer (extract the raw value)
  25. /// </summary>
  26. /// <param name="pos"></param>
  27. /// <returns></returns>
  28. public static explicit operator int(LLamaToken pos) => pos.Value;
  29. /// <summary>
  30. /// Convert an integer into a LLamaToken
  31. /// </summary>
  32. /// <param name="value"></param>
  33. /// <returns></returns>
  34. public static implicit operator LLamaToken(int value) => new(value);
  35. /// <inheritdoc />
  36. public override string ToString()
  37. {
  38. return Value.ToString();
  39. }
  40. }