00001: package clogs.ast; 00002: 00003: import clogs.util.List; 00004: 00005: 00006: public abstract class Stat 00007: { 00008: public final List<String> labels; 00009: 00010: 00011: Stat (List<String> labels) 00012: { 00013: clogs.util.NonNull.check (labels); 00014: this.labels = labels; 00015: } 00016: 00017: 00018: public abstract Stat removeLabels (); 00019: 00020: public abstract Stat addLabel (String label); 00021: 00022: 00023: public Stat addLabels (List<String> labels) 00024: { 00025: Stat result = this; 00026: for (String label : labels.reverse ()) { 00027: result = result.addLabel (label); 00028: } 00029: return result; 00030: } 00031: 00032: 00033: public String toString () 00034: { 00035: PrettyPrinter pp = new PrettyPrinter (); 00036: pp.printStat (this); 00037: return pp.toString (); 00038: } 00039: } 00040: