@@ -1,7 +1,7 @@ /* - * Copyright (c) 2008-2022 Jonathan Schleifer + * Copyright (c) 2008-2024 Jonathan Schleifer * * All rights reserved. * * This file is part of ObjFW. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE.QPL included in @@ -31,14 +31,20 @@ static struct { Class isa; } placeholder; -@interface OFMutableStringPlaceholder: OFMutableString +@interface OFPlaceholderMutableString: OFMutableString @end -@implementation OFMutableStringPlaceholder +@implementation OFPlaceholderMutableString +#ifdef __clang__ +/* We intentionally don't call into super, so silence the warning. */ +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunknown-pragmas" +# pragma clang diagnostic ignored "-Wobjc-designated-initializers" +#endif - (instancetype)init { return (id)[[OFMutableUTF8String alloc] init]; } @@ -172,53 +178,35 @@ initWithContentsOfFile: path encoding: encoding]; } #endif -- (instancetype)initWithContentsOfURI: (OFURI *)URI +- (instancetype)initWithContentsOfIRI: (OFIRI *)IRI { - return (id)[[OFMutableUTF8String alloc] initWithContentsOfURI: URI]; + return (id)[[OFMutableUTF8String alloc] initWithContentsOfIRI: IRI]; } -- (instancetype)initWithContentsOfURI: (OFURI *)URI +- (instancetype)initWithContentsOfIRI: (OFIRI *)IRI encoding: (OFStringEncoding)encoding { return (id)[[OFMutableUTF8String alloc] - initWithContentsOfURI: URI + initWithContentsOfIRI: IRI encoding: encoding]; } - -- (instancetype)initWithSerialization: (OFXMLElement *)element -{ - return (id)[[OFMutableUTF8String alloc] initWithSerialization: element]; -} - -- (instancetype)retain -{ - return self; -} - -- (instancetype)autorelease -{ - return self; -} - -- (void)release -{ -} - -- (void)dealloc -{ - OF_DEALLOC_UNSUPPORTED -} +#ifdef __clang__ +# pragma clang diagnostic pop +#endif + +OF_SINGLETON_METHODS @end @implementation OFMutableString + (void)initialize { if (self == [OFMutableString class]) - placeholder.isa = [OFMutableStringPlaceholder class]; + object_setClass((id)&placeholder, + [OFPlaceholderMutableString class]); } + (instancetype)alloc { if (self == [OFMutableString class])