From 466fd782976fa1be95a13dd4fa067836dd79ebf3 Mon Sep 17 00:00:00 2001 From: Brent Simmons Date: Sun, 25 Aug 2024 22:00:02 -0700 Subject: [PATCH] =?UTF-8?q?Drop=20the=20interned=20string=20stuff=20?= =?UTF-8?q?=E2=80=94=C2=A0probably=20not=20worth=20the=20effort.=20Could?= =?UTF-8?q?=20always=20re-add=20later=20if=20needed.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Modules/Parser/Sources/Parser/SAXParser.swift | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/Modules/Parser/Sources/Parser/SAXParser.swift b/Modules/Parser/Sources/Parser/SAXParser.swift index ce9bbf885..c614e063f 100644 --- a/Modules/Parser/Sources/Parser/SAXParser.swift +++ b/Modules/Parser/Sources/Parser/SAXParser.swift @@ -17,10 +17,6 @@ protocol SAXParserDelegate { func saxParser(_: SAXParser, xmlEndElement: XMLPointer, prefix: XMLPointer?, uri: XMLPointer?) func saxParser(_: SAXParser, xmlCharactersFound: XMLPointer, count: Int) - - func saxParser(_: SAXParser, internedStringForName: XMLPointer, prefix: XMLPointer?) -> String? - - func saxParser(_: SAXParser, internedStringForValue: XMLPointer, count: Int) -> String? } final class SAXParser { @@ -111,24 +107,17 @@ final class SAXParser { continue } let prefix = attributes[j + 1] - var attributeName = delegate.saxParser(self, internedStringForName: attribute, prefix: prefix) - if attributeName == nil { - attributeName = String(cString: attribute) - if let prefix { - let attributePrefix = String(cString: prefix) - attributeName = "\(attributePrefix):\(attributeName!)" - } + var attributeName = String(cString: attribute) + if let prefix { + let attributePrefix = String(cString: prefix) + attributeName = "\(attributePrefix):\(attributeName!)" } guard let valueStart = attributes[j + 3], let valueEnd = attributes[j + 4] else { continue } let valueCount = valueEnd - valueStart - - var value = delegate.saxParser(self, internedStringForValue: valueStart, count: Int(valueCount)) - if value == nil { - value = String(bytes: UnsafeRawBufferPointer(start: valueStart, count: Int(valueCount)), encoding: .utf8) - } + var value = String(bytes: UnsafeRawBufferPointer(start: valueStart, count: Int(valueCount)), encoding: .utf8) if let value, let attributeName { dictionary[attributeName] = value @@ -140,6 +129,12 @@ final class SAXParser { return dictionary } + + func stringNoCopy(_ bytes: XMLPointer) -> String { + + let length = strlen(bytes) + return NSString(bytesNoCopy: bytes, length: length, encoding: .utf8, freeWhenDone: false) as String + } } private extension SAXParser {