/* * Copyright (c) 2008 * Jonathan Schleifer * * All rights reserved. * * This file is part of libobjfw. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #import "OFList.h" @implementation OFList - init { if ((self = [super init])) { first = nil; last = nil; } return self; } - free { OFListObject *iter, *next; for (iter = first; iter != nil; iter = next) { next = [iter next]; [iter free]; } return [super free]; } - freeWithData { OFListObject *iter, *next; for (iter = first; iter != nil; iter = next) { next = [iter next]; [iter freeWithData]; } first = last = nil; return [super free]; } - (OFListObject*)first { return first; } - (OFListObject*)last { return last; } - (void)add: (OFListObject*)ptr { if (!first || !last) { first = last = ptr; return; } [ptr setPrev: last]; [last setNext: ptr]; last = ptr; } - (void)addNew: (void*)ptr { return [self add: [OFListObject new: ptr]]; } @end