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: