// ** This file was generated with DemFGen (vers:12/15/2010)

package gen;

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 edu.neu.ccs.demeterf.*;



/** Computes a simple String representation */
public class ToStr extends edu.neu.ccs.demeterf.FC{
   /** Static stub method for calling toStr */
   public static String ToStrM(Object o){
      return new edu.neu.ccs.demeterf.Traversal(new ToStr(),edu.neu.ccs.demeterf.Control.builtins()).<String>traverse(o);
   }

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

   public String combine(TestClaim _h_, String claims)
   { return "TestClaim("+claims+")"; }
   public String combine(SimpleClaim _h_, String cn, String args)
   { return "SimpleClaim("+cn+","+args+")"; }
   public String combine(ClaimName _h_, String v)
   { return "ClaimName("+v+")"; }
   public String combine(AndClaim _h_, String c1, String c2, String args)
   { return "AndClaim("+c1+","+c2+","+args+")"; }
   public String combine(OrClaim _h_, String c1, String c2, String args)
   { return "OrClaim("+c1+","+c2+","+args+")"; }
   public String combine(ImplicationClaim _h_, String premise, String consequent, String args)
   { return "ImplicationClaim("+premise+","+consequent+","+args+")"; }
   public String combine(NegatedClaim _h_, String c1, String args)
   { return "NegatedClaim("+c1+","+args+")"; }
   public String combine(ForAllClaim _h_, String var, String d, String c, String args)
   { return "ForAllClaim("+var+","+d+","+c+","+args+")"; }
   public String combine(ExistsClaim _h_, String var, String d, String c, String args)
   { return "ExistsClaim("+var+","+d+","+c+","+args+")"; }
   public String combine(Variable _h_, String v)
   { return "Variable("+v+")"; }
   public String combine(Instance _h_)
   { return "Instance("+")"; }
   public String combine(Solution _h_)
   { return "Solution("+")"; }
   public String combine(Predicate _h_, String pn, String args)
   { return "Predicate("+pn+","+args+")"; }
   public String combine(Args _h_, String args)
   { return "Args("+args+")"; }
   public String combine(PredicateName _h_, String v)
   { return "PredicateName("+v+")"; }
   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 String combine(Empty _h_)
   { return "Empty("+")"; }
   public String combine(Cons _h_, String first, String rest)
   { return "Cons("+first+","+rest+")"; }
   public String combine(None _h_)
   { return "None("+")"; }
   public String combine(Some _h_, String just)
   { return "Some("+just+")"; }


}