/* * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017 * Jonathan Schleifer <js@heap.zone> * * 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 * the packaging of this file. * * Alternatively, it may be distributed under the terms of the GNU General * Public License, either version 2 or 3, which can be found in the file * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this * file. */ #include "config.h" #import "OFMutableURL.h" #import "OFURL+Private.h" @implementation OFMutableURL @dynamic scheme, host, port, user, password, path, parameters, query, fragment; + (instancetype)URL { return [[[self alloc] init] autorelease]; } - init { return [super of_init]; } - (void)setScheme: (OFString *)scheme { OFString *old = _scheme; _scheme = [scheme copy]; [old release]; } - (void)setHost: (OFString *)host { OFString *old = _host; _host = [host copy]; [old release]; } - (void)setPort: (uint16_t)port { _port = port; } - (void)setUser: (OFString *)user { OFString *old = _user; _user = [user copy]; [old release]; } - (void)setPassword: (OFString *)password { OFString *old = _password; _password = [password copy]; [old release]; } - (void)setPath: (OFString *)path { OFString *old = _path; _path = [path copy]; [old release]; } - (void)setParameters: (OFString *)parameters { OFString *old = _parameters; _parameters = [parameters copy]; [old release]; } - (void)setQuery: (OFString *)query { OFString *old = _query; _query = [query copy]; [old release]; } - (void)setFragment: (OFString *)fragment { OFString *old = _fragment; _fragment = [fragment copy]; [old release]; } - copy { OFMutableURL *copy = [self mutableCopy]; [copy makeImmutable]; return copy; } - (void)makeImmutable { object_setClass(self, [OFURL class]); } @end