From 314c046ec965c3ce6fa15bdb73a7825427324d27 Mon Sep 17 00:00:00 2001 From: Kaz Wolfe Date: Mon, 24 Mar 2025 17:43:49 -0700 Subject: [PATCH] feat: Add CStringPointer#ExtractText - Move CString extensions to their own class. - Add some words to our dictionary. --- Dalamud.sln.DotSettings | 2 ++ Dalamud/Utility/CStringExtensions.cs | 32 +++++++++++++++++++++++++++ Dalamud/Utility/SeStringExtensions.cs | 10 --------- 3 files changed, 34 insertions(+), 10 deletions(-) create mode 100644 Dalamud/Utility/CStringExtensions.cs diff --git a/Dalamud.sln.DotSettings b/Dalamud.sln.DotSettings index b0f66b736..6d0e1fdcd 100644 --- a/Dalamud.sln.DotSettings +++ b/Dalamud.sln.DotSettings @@ -54,6 +54,7 @@ True True True + True True True True @@ -66,6 +67,7 @@ True True True + True True True True diff --git a/Dalamud/Utility/CStringExtensions.cs b/Dalamud/Utility/CStringExtensions.cs new file mode 100644 index 000000000..a1848c512 --- /dev/null +++ b/Dalamud/Utility/CStringExtensions.cs @@ -0,0 +1,32 @@ +using InteropGenerator.Runtime; + +using Lumina.Text.ReadOnly; + +namespace Dalamud.Utility; + +/// +/// A set of helpful utilities for working with s from ClientStructs. +/// +public static class CStringExtensions +{ + /// + /// Convert a CStringPointer to a ReadOnlySeStringSpan. + /// + /// The pointer to convert. + /// A span. + public static unsafe ReadOnlySeStringSpan AsReadOnlySeStringSpan(this CStringPointer ptr) + { + return ptr.AsSpan(); + } + + /// + /// Extract text from this CStringPointer following 's rules. Only + /// useful for SeStrings. + /// + /// The CStringPointer to process. + /// Extracted text. + public static string ExtractText(this CStringPointer ptr) + { + return ptr.AsReadOnlySeStringSpan().ExtractText(); + } +} diff --git a/Dalamud/Utility/SeStringExtensions.cs b/Dalamud/Utility/SeStringExtensions.cs index f2c28bd7d..904375250 100644 --- a/Dalamud/Utility/SeStringExtensions.cs +++ b/Dalamud/Utility/SeStringExtensions.cs @@ -228,14 +228,4 @@ public static class SeStringExtensions var replaced = ReplaceText(new ReadOnlySeString(builder.GetViewAsMemory()), toFind, replacement); builder.Clear().Append(replaced); } - - /// - /// Convert a CStringPointer to a ReadOnySeStringSpan. - /// - /// The pointer to convert. - /// A span. - public static unsafe ReadOnlySeStringSpan AsReadOnlySeStringSpan(this CStringPointer ptr) - { - return new ReadOnlySeStringSpan(ptr.Value); - } }