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    }