src/share/tools/MakeDeps/FileList.java

Fri, 27 Feb 2009 13:27:09 -0800

author
twisti
date
Fri, 27 Feb 2009 13:27:09 -0800
changeset 1040
98cb887364d3
parent 435
a61af66fc99e
child 1907
c18cbe5936b8
permissions
-rw-r--r--

6810672: Comment typos
Summary: I have collected some typos I have found while looking at the code.
Reviewed-by: kvn, never

     1 /*
     2  * Copyright 1999-2000 Sun Microsystems, Inc.  All Rights Reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
    20  * CA 95054 USA or visit www.sun.com if you need additional information or
    21  * have any questions.
    22  *
    23  */
    25 import java.io.*;
    26 import java.util.*;
    28 /** This class implements the java.util.List interface as well as
    29     providing functionality specific to keeping track of lists of
    30     files. See the documentation for the Database class to see how
    31     these are used. Each FileList must only contain other FileLists
    32     (although that is not currently enforced in the mutators). */
    34 public class FileList extends Vector {
    35     private String name; // (also the file name)
    36     private boolean beenHere;
    37     private boolean mayBeCycle;
    38     private boolean isCycle;
    39     /** Put in list because a file can refuse to */
    40     private boolean useGrandInclude;
    41     private String platformDependentInclude;
    42     private int count;
    43     private Platform plat;
    45     public FileList(String n, Platform plat) {
    46         super();
    47         this.plat = plat;
    48         beenHere = mayBeCycle = isCycle = false;
    49         platformDependentInclude = null;
    50         name = n;
    51         count = 0;
    52         useGrandInclude = plat.haveGrandInclude();
    53     }
    55     // Change definition of equality from AbstractList so remove() works properly
    56     public boolean equals(Object o) {
    57       return ((Object) this) == o;
    58     }
    60     // Necessary accessors
    61     public String getName() {
    62         return name;
    63     }
    65     public void setPlatformDependentInclude(String arg) {
    66         platformDependentInclude = arg;
    67     }
    69     public String getPlatformDependentInclude() {
    70         return platformDependentInclude;
    71     }
    73     public boolean getUseGrandInclude() {
    74         return useGrandInclude;
    75     }
    77     public void setUseGrandInclude(boolean arg) {
    78         useGrandInclude = arg;
    79     }
    81     public void incrementCount() {
    82         count++;
    83     }
    85     public int getCount() {
    86         return count;
    87     }
    89     public FileList listForFile(String fileName) {
    90         for (Iterator iter = iterator(); iter.hasNext(); ) {
    91             FileList fl = (FileList) iter.next();
    92             if (plat.fileNameStringEquality(fl.name, fileName)) {
    93                 plat.fileNamePortabilityCheck(fl.name, fileName);
    94                 return fl;
    95             }
    96         }
    97         plat.fileNamePortabilityCheck(fileName);
    98         FileList newList = new FileList(fileName, plat);
    99         add(newList);
   100         return newList;
   101     }
   103     public boolean hasListForFile(String fileName) {
   104         for (Iterator iter = iterator(); iter.hasNext(); ) {
   105             FileList fl = (FileList) iter.next();
   106             if (plat.fileNameStringEquality(fl.name, fileName)) {
   107                 plat.fileNamePortabilityCheck(fl.name, fileName);
   108                 return true;
   109             }
   110         }
   111         return false;
   112     }
   114     public boolean compareLists(FileList s) {
   115         Iterator myIter = iterator();
   116         Iterator hisIter = s.iterator();
   118         while (myIter.hasNext() &&
   119                hisIter.hasNext()) {
   120             // crude: order dependent
   121             FileList myElement = (FileList) myIter.next();
   122             FileList hisElement = (FileList) hisIter.next();
   123             if (!plat.fileNameStringEquality(myElement.name,
   124                                              hisElement.name)) {
   125                 return false;
   126             }
   127         }
   129         if (myIter.hasNext() != hisIter.hasNext()) {
   130             // One ended earlier
   131             return false;
   132         }
   134         return true;
   135     }
   137     public void addIfAbsent(FileList s) {
   138         for (Iterator iter = iterator(); iter.hasNext(); ) {
   139             if (iter.next() == s) {
   140                 return;
   141             }
   142         }
   143         add(s);
   144     }
   146     public void sortByName() {
   147         Collections.sort(this, new Comparator() {
   148                 public int compare(Object o1, Object o2) {
   149                     FileList fl1 = (FileList) o1;
   150                     FileList fl2 = (FileList) o2;
   151                     return fl1.getName().compareTo(fl2.getName());
   152                 }
   153             });
   154     }
   156     public void setFirstFile(FileList s) {
   157       // Remove the file list if it's already here
   158       remove(s);
   159       add(0, s);
   160     }
   162     public void setLastFile(FileList s) {
   163       // Remove the file list if it's already here
   164       remove(s);
   165       add(s);
   166     }
   168     public boolean doFiles(FileList s) {
   169         boolean result = true;
   170         for (Iterator iter = iterator(); iter.hasNext(); ) {
   171             FileList h = (FileList) iter.next();
   172             if (h.platformDependentInclude != null) {
   173                 System.err.println("Error: the source for " +
   174                                    h.platformDependentInclude +
   175                                    " is " + h.name + ".");
   176                 System.err.println("\tIt shouldn't be included directly by " +
   177                                    name + ".");
   178                 h.platformDependentInclude = null; // report once per file
   179                 result = false;
   180             }
   181             h.doHFile(s);
   182         }
   183         return result;
   184     }
   186     public void traceCycle(FileList s) {
   187         if (isCycle) // already traced
   188             return;
   189         isCycle = true;
   190         System.err.println("\ttracing cycle for " + name);
   191         // FIXME: must return status in caller routine
   192         // exitCode = 1;
   193         for (Iterator iter = iterator(); iter.hasNext(); ) {
   194             FileList q = (FileList) iter.next();
   195             if (q.mayBeCycle) {
   196                 if (s == q) {
   197                     plat.fatalError("\tend of cycle for " + s.getName());
   198                 } else {
   199                     q.traceCycle(s);
   200                 }
   201             }
   202         }
   203     }
   205     public void doHFile(FileList s) {
   206         if (beenHere) {
   207             if (mayBeCycle) {
   208                 traceCycle(this);
   209             }
   210             return;
   211         }
   212         beenHere = true;
   213         mayBeCycle = true;
   214         doFiles(s);
   215         mayBeCycle = false;
   216         s.add(this);
   217     }
   219     public FileList doCFile() {
   220         FileList s = new FileList(name, plat);
   221         s.useGrandInclude = useGrandInclude; // propagate this
   222         doFiles(s);
   223         for (Iterator iter = s.iterator(); iter.hasNext(); ) {
   224             FileList l = (FileList) iter.next();
   225             l.beenHere = false;
   226         }
   227         return s;
   228     }
   230     /** if .h file is included thresh times, put it in the grand
   231         include file */
   232     public void putInclFile(Database db)
   233         throws IOException {
   234         boolean needline = true;
   235         FileName inclName = plat.getInclFileTemplate().copyStem(name);
   236         PrintWriter inclFile =
   237             new PrintWriter(new FileWriter(inclName.dirPreStemSuff()));
   238         if (plat.haveGrandInclude() && plat.includeGIInEachIncl()) {
   239             inclFile.println("# include \"" +
   240                              plat.getGIFileTemplate().dirPreStemAltSuff() +
   241                              "\"");
   242             needline = false;
   243         }
   244         for (Iterator iter = iterator(); iter.hasNext(); ) {
   245             FileList hfile = (FileList) iter.next();
   246             if (!db.hfileIsInGrandInclude(hfile, this)) {
   247                 inclFile.println("# include \"" +
   248                                  plat.getInclFileTemplate().getInvDir() +
   249                                  hfile.name +
   250                                  "\"");
   251                 needline = false;
   252             }
   253         }
   255         // Solaris C++ in strict mode warns about empty files
   257         if(needline) {
   258             inclFile.println();
   259         }
   261         inclFile.close();
   262     }
   263 }

mercurial