// ** This class was generated with DemFGen (vers:11/09/2009)

package edu.neu.ccs.demeterf.http.classes;

import edu.neu.ccs.demeterf.Fields;
import edu.neu.ccs.demeterf.lib.ident;
import edu.neu.ccs.demeterf.lib.verbatim;
import edu.neu.ccs.demeterf.lib.*;
import java.net.Socket;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.InputStreamReader;
import java.io.InputStream;



/** Computes a String representation in CD Syntax, named as a ToString method */
public class PrintHeapToString extends edu.neu.ccs.demeterf.FC{
   /** Static stub method for calling toString */
   public static String PrintHeapToStringM(Object o){
      return new edu.neu.ccs.demeterf.stackless.HeapTrav(new PrintHeapToString(),edu.neu.ccs.demeterf.Control.builtins()).<StringBuffer>traverse(o).toString();
   }

   public StringBuffer combine(byte _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(short _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(int _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(long _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(float _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(double _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(char _h_){ return new StringBuffer("\'"+escape(""+_h_)+"\'"); }
   public StringBuffer combine(boolean _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(String _h_){ return new StringBuffer("\""+escape(""+_h_)+"\""); }
   public StringBuffer combine(ident _h_){ return new StringBuffer(""+_h_); }
   public StringBuffer combine(verbatim _h_){ return new StringBuffer(""+_h_); }

   public StringBuffer combine(HTTPReq _h_, StringBuffer head, StringBuffer keys, StringBuffer body){
      return new StringBuffer("").append(head).append(keys).append("\r\n").append(body);
   }
   public StringBuffer combine(HTTPResp _h_, StringBuffer ver, StringBuffer resp, StringBuffer label, StringBuffer keys, StringBuffer body){
      return new StringBuffer("").append(ver).append(" ").append(resp).append(" ").append(label).append("\r\n").append(keys).append("\r\n").append(body);
   }
   public StringBuffer combine(HTTPHead _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append(" ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(GetReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("GET ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(HeadReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("HEAD ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(PostReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("POST ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(PutReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("PUT ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(DeleteReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("DELETE ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(TraceReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("TRACE ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(ConnectReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("CONNECT ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(OptionsReq _h_, StringBuffer url, StringBuffer ver){
      return new StringBuffer("").append("OPTIONS ").append(url).append(" ").append(ver).append("\r\n");
   }
   public StringBuffer combine(URL _h_){
      return new StringBuffer("");
   }
   public StringBuffer combine(BaseURL _h_, StringBuffer rest){
      return new StringBuffer("").append("/").append(rest);
   }
   public StringBuffer combine(MidURL _h_, StringBuffer id, StringBuffer rest){
      return new StringBuffer("").append(id).append(rest);
   }
   public StringBuffer combine(NoURL _h_){
      return new StringBuffer("");
   }
   public StringBuffer combine(HTTPVer _h_, StringBuffer ver){
      return new StringBuffer("").append("HTTP/").append(ver);
   }
   public StringBuffer combine(MsgHead _h_, StringBuffer key, StringBuffer value){
      return new StringBuffer("").append(key).append(": ").append(value);
   }
   public static String escape(String s){
      char str[] = s.toCharArray();
      StringBuffer ret = new StringBuffer("");
      for(char c:str)ret.append(escape(c));
      return ret.toString();
   }
   public static String escape(char c){
      switch(c){
      case '\n':return "\\n";  case '\t':return "\\t";
      case '\b':return "\\b";  case '\r':return "\\r";
      case '\f':return "\\f";  case '\\':return "\\\\";
      case '\'':return "\\'"; case '\"':return "\\\"";
      default: return ""+c;
      }
   }

   public StringBuffer combine(List _h_){
      return new StringBuffer("");
   }
   public StringBuffer combine(Empty _h_){
      return new StringBuffer("");
   }
   public StringBuffer combine(Cons _h_, StringBuffer first, StringBuffer rest){
      return new StringBuffer("").append(first).append("\r\n").append(rest);
   }
}