1 cananian 1.3.2.5 // LabelList.java, created Tue Jul 28  1:09:44 1998 by cananian
 2 cananian 1.3.2.4 // Copyright (C) 1998 C. Scott Ananian <cananian@alumni.princeton.edu>
 3 cananian 1.3.2.4 // Licensed under the terms of the GNU GPL; see COPYING for details.
 4 cananian 1.2     package harpoon.Temp;
 5 cananian 1.1     
 6 cananian 1.3.2.7 import java.util.ArrayList;
 7 cananian 1.3.2.7 import java.util.Collections;
 8 pnkfelix 1.3.2.6 import java.util.List;
 9 pnkfelix 1.3.2.6 
10 cananian 1.3.2.2 /**
11 pnkfelix 1.3.2.6    A <code>LabelList</code> is a simple singly-linked list of
12 pnkfelix 1.3.2.6    <code>Label</code>s.
13 pnkfelix 1.3.2.6 
14 pnkfelix 1.3.2.6    @deprecated Scott says so.  Use a real <code>java.util.List</code> instead.
15 pnkfelix 1.3.2.6    @author C. Scott Ananian <cananian@alumni.princeton.edu>
16 cananian 1.5        @version $Id: LabelList.java,v 1.5 2004/02/08 01:59:46 cananian Exp $
17 cananian 1.2      */
18 cananian 1.3.2.1 public final class LabelList {
19 cananian 1.3.2.2     /* The head of the list. */
20 pnkfelix 1.3.2.6     public final Label head;
21 cananian 1.3.2.2     /* The tail of the list. */
22 pnkfelix 1.3.2.6     public final LabelList tail;
23 cananian 1.3.2.2     /* Constructor. */
24 pnkfelix 1.3.2.6     public LabelList(Label head, LabelList tail){ 
25 pnkfelix 1.3.2.6         this.head=head; this.tail=tail; 
26 pnkfelix 1.3.2.6     }
27 pnkfelix 1.3.2.6     
28 pnkfelix 1.3.2.6     /** Converts a <code>LabelList</code> to a <code>java.util.List</code>. 
29 pnkfelix 1.3.2.6         Accepts <code>null</code> as an argument (which will
30 cananian 1.3.2.7         return an empty list). 
31 pnkfelix 1.3.2.6     */
32 cananian 1.5         public static List<Label> toList(final LabelList l) {
33 cananian 1.5             if (l==null) return (List<Label>) Collections.EMPTY_LIST; // optimization.
34 cananian 1.5             ArrayList<Label> al = new ArrayList<Label>();
35 cananian 1.3.2.7         for (LabelList ll=l; ll!=null; ll=ll.tail)
36 cananian 1.3.2.7             al.add(ll.head);
37 cananian 1.5             al.trimToSize();
38 cananian 1.3.2.7         return Collections.unmodifiableList(al);
39 pnkfelix 1.3.2.6     }
40 cananian 1.1     }
41 cananian 1.1