ObjFW  Artifact [679b0761d3]

Artifact 679b0761d3f9b94e58cc246d59ef582f17011f791e2538ba729b6fc65d0210bf:

  • File src/OFSortedList.m — part of check-in [7a8a5a2995] at 2012-11-24 00:07:49 on branch trunk — -[OFSortedList addObject:] -> -[insertObject:].

    The rationale behind this is that otherwise, there are two methods
    called addObject: with a different signature, the one from
    OFMutableArray and the one from OFSortedList. As OFSortedList is
    actually using insertion sort and all other methods on an OFList start
    with insert anyway, this is also more consistent. (user: js, size: 1692) [annotate] [blame] [check-ins using]


/*
 * Copyright (c) 2008, 2009, 2010, 2011, 2012
 *   Jonathan Schleifer <js@webkeks.org>
 *
 * 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 "OFSortedList.h"

#import "OFNotImplementedException.h"

@implementation OFSortedList
- (of_list_object_t*)appendObject: (id)object
{
	@throw [OFNotImplementedException exceptionWithClass: [self class]
						    selector: _cmd];
}

- (of_list_object_t*)prependObject: (id)object
{
	@throw [OFNotImplementedException exceptionWithClass: [self class]
						    selector: _cmd];
}

- (of_list_object_t*)insertObject: (id)object
		 beforeListObject: (of_list_object_t*)listObject
{
	@throw [OFNotImplementedException exceptionWithClass: [self class]
						    selector: _cmd];
}

- (of_list_object_t*)insertObject: (id)object
		  afterListObject: (of_list_object_t*)listObject
{
	@throw [OFNotImplementedException exceptionWithClass: [self class]
						    selector: _cmd];
}

- (of_list_object_t*)insertObject: (id <OFComparing>)object
{
	of_list_object_t *iter;

	for (iter = lastListObject; iter != NULL; iter = iter->previous) {
		if ([object compare: iter->object] != OF_ORDERED_ASCENDING)
			return [super insertObject: object
				   afterListObject: iter];
	}

	return [super prependObject: object];
}
@end