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);
- }
}