001    /* Copyright 2000, 2001, Compaq Computer Corporation */
002    
003    
004    package javafe.ast;
005    
006    import java.io.OutputStream;
007    import java.io.ByteArrayOutputStream;
008    import java.io.IOException;
009    import javafe.util.Assert;
010    import javafe.util.Location;
011    
012    public class DelegatingPrettyPrint extends PrettyPrint {
013      
014      //@ invariant del != null;
015      public PrettyPrint del;
016      
017      // Caller must establish del != null!
018      //@ requires false;
019      protected DelegatingPrettyPrint() { }
020      
021      //@ requires del != null;
022      //@ requires self != null;
023      protected DelegatingPrettyPrint(PrettyPrint self, PrettyPrint del) { 
024        super(self); 
025        this.del = del; 
026      }
027      
028      public void print(/*@ non_null @*/ OutputStream o, CompilationUnit cu) {
029        del.print(o, cu);
030      }
031      
032      public void printnoln(/*@ non_null @*/ OutputStream o, int ind, TypeDecl d) {
033        del.printnoln(o, ind, d);
034      }
035      
036      public void print(/*@ non_null @*/ OutputStream o, int ind, Stmt s) {
037        del.print(o, ind, s);
038      }
039      
040      public void print(/*@ non_null @*/ OutputStream o, int ind, TypeDeclElem d, 
041                        Identifier classId, boolean showBody) {
042        del.print(o, ind, d, classId, showBody);
043      }
044      
045      public void print(/*@ non_null @*/ OutputStream o, TypeNameVec tns) {
046        del.print(o, tns);
047      }
048      
049      public void print(/*@ non_null @*/ OutputStream o, int ind, FormalParaDeclVec fps) {
050        del.print(o, ind, fps);
051      }
052      
053      public void print(/*@ non_null @*/ OutputStream o, int ind, ExprVec es) {
054        del.print(o, ind, es);
055      }
056      
057      public void print(/*@ non_null @*/ OutputStream o, GenericVarDecl d) {
058        del.print(o, d);
059      }
060      
061      public void print(/*@ non_null @*/ OutputStream o, int ind, LocalVarDecl d,
062                        boolean showBody) {
063        del.print(o, ind, d, showBody);
064      }
065      
066      public void print(/*@ non_null @*/ OutputStream o, int ind, FieldDecl d, boolean showBody) {
067        del.print(o, ind, d, showBody);
068      }
069      
070      public void print(/*@ non_null @*/ OutputStream o, Type t) {
071        del.print(o, t);
072      }
073      
074      public void print(/*@ non_null @*/ OutputStream o, Name n) {
075        del.print(o, n);
076      }
077      
078      public void print(/*@ non_null @*/ OutputStream o, int ind, VarInit e) {
079        del.print(o, ind, e);
080      }
081      
082      public void print(/*@ non_null @*/ OutputStream o, int ind, ObjectDesignator od) {
083        del.print(o, ind, od);
084      }
085      
086      public void print(/*@ non_null @*/ OutputStream o, LexicalPragma lp) {
087        del.print(o, lp);
088      }
089      
090      public void print(/*@ non_null @*/ OutputStream o, int ind, TypeDeclElemPragma tp) {
091        del.print(o, ind, tp);
092      }
093      
094      public void print(/*@ non_null @*/ OutputStream o, int ind, ModifierPragma mp) {
095        del.print(o, ind, mp);
096      }
097      
098      public void print(/*@ non_null @*/ OutputStream o, int ind, StmtPragma sp) {
099        del.print(o, ind, sp);
100      }
101      
102      public void print(/*@ non_null @*/ OutputStream o, int ind, TypeModifierPragma tp) {
103        del.print(o, ind, tp);
104      }
105      
106      public /*@ non_null @*/ String toString(int tag) {
107        return del.toString(tag);
108      }
109    }
110    
111    
112    
113