    001    /* Copyright 2000, 2001, Compaq Computer Corporation */
    002
    003    package escjava.translate;
    004
    005    import java.io.*;
    006    import java.util.Enumeration;
    007    import javafe.ast.*;
    008    import javafe.util.*;
    009    import escjava.ast.*;
    010    import escjava.ast.TagConstants;
    011
    012
    013    public class LabelInfoToString {
    014
    015      /** set of <code>String</code>, each one of which has the format
    016        * filename:line:col and has been interned.
    017        **/
    018
    019      private static Set annotationLocations = new Set();
    020      private static Set theMark = new Set();
    021
    022      public static void reset() {
    023        annotationLocations.clear();
    024        theMark.clear();
    025      }
    026
    027      public static void mark() {
    028        theMark = annotationLocations;
    029        annotationLocations = new Set();
    030      }
    031
    032      public static void resetToMark() {
    033        annotationLocations = new Set(theMark.elements());
    034      }
    035
    036      public static String get() {
    037        StringBuffer sb = new StringBuffer();
    038        for (Enumeration annotations = annotationLocations.elements();
    039             annotations.hasMoreElements(); ) {
    040          String location = (String)annotations.nextElement();
    041          sb.append(' ');
    042          sb.append(location);
    043        }
    044        return sb.toString();
    045      }
    046
    047      public static void recordAnnotationAssumption(int locPragmaDecl) {
    048        if (escjava.Main.options().printAssumers && locPragmaDecl != Location.NULL) {
    049          String location = Location.toFileName(locPragmaDecl) + ':' +
    050                            Location.toLineNumber(locPragmaDecl) + ':' +
    051                            Location.toColumn(locPragmaDecl);
    052          annotationLocations.add(location.intern());
    053        }
    054      }
    055    }