/*============================================================================= * Copyright Rob Clark 2000. All Rights Reserved. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * $ProjectHeader: OSCRIPT 0.155 Fri, 20 Dec 2002 18:34:22 -0800 rclark $ */ /** * The list class constructor. * * @author Rob Clark * <!--$Format: " * @version $Revision$"$--> * @version 1.2 */ public function List() { private var head = null; private var tail; /** * Add an object to the list. * * @param obj what to add to the list */ public function add( obj ) { if( head == null ) { head = new ListNode(obj); tail = head; } else { tail.setNext( new ListNode(obj) ); tail = tail.getNext(); } } /** * Remove an object from the list. The first occurance of this object is * removed. * * @param obj the object to remove * @return <code>true</code> if matching object found and removed, else * <code>false</code> if not found */ public function remove( obj ) { var node; var prev; for( node = head, prev = null; node != null; prev = node, node = node.getNext() ) { if( obj == node.getObj() ) { if( prev == null ) head = node.getNext(); else prev.setNext( node.getNext() ); return true; } } return false; } /** * Return the contents of the list as an array. * * @return an array */ public function toArray() { var arr = []; var i=0; for( var node = head; node != null; node = node.getNext(), i++ ) { arr[i] = node.getObj(); } return arr; } /** * Inner-class implementing a list node. * * @param obj the data */ private function ListNode( obj ) { var next = null; public function getObj() { return obj; } public function getNext() { return next; } public function setNext( next ) { this.next = next; } } } /* * Local Variables: * tab-width: 2 * indent-tabs-mode: nil * mode: java * c-indentation-style: java * c-basic-offset: 2 * eval: (c-set-offset 'statement-cont '0) * eval: (c-set-offset 'substatement-open '0) * eval: (c-set-offset 'case-label '+) * eval: (c-set-offset 'inclass '+) * eval: (c-set-offset 'inline-open '0) * End: */