// ** This file was generated with DemFGen (vers:05/23/2010)

package edu.neu.ccs.demeterf.demfgen.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 edu.neu.ccs.demeterf.lib.*;
import edu.neu.ccs.demeterf.demfgen.*;
import edu.neu.ccs.demeterf.demfgen.dgp.DGPFunc;
import edu.neu.ccs.demeterf.demfgen.traversals.Travs;
import edu.neu.ccs.demeterf.demfgen.pcdgp.PCDGPFunc;
import edu.neu.ccs.demeterf.dispatch.*;
import edu.neu.ccs.demeterf.*;
import edu.neu.ccs.demeterf.demfgen.ClassHier.InhrtPair;
import edu.neu.ccs.demeterf.demfgen.DemFGenMain;
import java.io.*;
import java.io.FileInputStream;
import edu.neu.ccs.demeterf.util.Util;
import edu.neu.ccs.demeterf.util.CLI;



/** 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(CDFile _h_, String incl, String dgpuse, String pkg, String look, String imports, String types)
   { return "CDFile("+incl+","+dgpuse+","+pkg+","+look+","+imports+","+types+")"; }
   public String combine(Include _h_, String gen, String file)
   { return "Include("+gen+","+file+")"; }
   public String combine(IncludeCons _h_, String first, String rest)
   { return "IncludeCons("+first+","+rest+")"; }
   public String combine(IncludeEmpty _h_)
   { return "IncludeEmpty("+")"; }
   public String combine(DGPUse _h_, String pkg)
   { return "DGPUse("+pkg+")"; }
   public String combine(NoDGPUse _h_)
   { return "NoDGPUse("+")"; }
   public String combine(Package _h_, String pkg)
   { return "Package("+pkg+")"; }
   public String combine(NoPackage _h_)
   { return "NoPackage("+")"; }
   public String combine(LookAhead _h_, String n)
   { return "LookAhead("+n+")"; }
   public String combine(NoLook _h_)
   { return "NoLook("+")"; }
   public String combine(Import _h_, String pkg)
   { return "Import("+pkg+")"; }
   public String combine(NEPkgList _h_, String id, String rest)
   { return "NEPkgList("+id+","+rest+")"; }
   public String combine(PkgCons _h_, String id, String rest)
   { return "PkgCons("+id+","+rest+")"; }
   public String combine(PkgStar _h_)
   { return "PkgStar("+")"; }
   public String combine(PkgEmpty _h_)
   { return "PkgEmpty("+")"; }
   public String combine(ImportCons _h_, String first, String rest)
   { return "ImportCons("+first+","+rest+")"; }
   public String combine(ImportEmpty _h_)
   { return "ImportEmpty("+")"; }
   public String combine(IntfcDef _h_, String gen, String name, String tparams, String subtypes)
   { return "IntfcDef("+gen+","+name+","+tparams+","+subtypes+")"; }
   public String combine(ClassDef _h_, String gen, String name, String tparams, String subtypes, String fields, String ext)
   { return "ClassDef("+gen+","+name+","+tparams+","+subtypes+","+fields+","+ext+")"; }
   public String combine(NoGen _h_)
   { return "NoGen("+")"; }
   public String combine(NoParse _h_)
   { return "NoParse("+")"; }
   public String combine(Extern _h_)
   { return "Extern("+")"; }
   public String combine(YesGen _h_)
   { return "YesGen("+")"; }
   public String combine(DefParams _h_, String types)
   { return "DefParams("+types+")"; }
   public String combine(EmptyDefParams _h_)
   { return "EmptyDefParams("+")"; }
   public String combine(NameDef _h_, String id, String bnd)
   { return "NameDef("+id+","+bnd+")"; }
   public String combine(ClassBound _h_, String bound)
   { return "ClassBound("+bound+")"; }
   public String combine(NoBound _h_)
   { return "NoBound("+")"; }
   public String combine(NoImpl _h_)
   { return "NoImpl("+")"; }
   public String combine(IntfImpl _h_, String intf)
   { return "IntfImpl("+intf+")"; }
   public String combine(NENameList _h_, String first, String rest)
   { return "NENameList("+first+","+rest+")"; }
   public String combine(NameCons _h_, String first, String rest)
   { return "NameCons("+first+","+rest+")"; }
   public String combine(NameEmpty _h_)
   { return "NameEmpty("+")"; }
   public String combine(TypeUse _h_, String name, String tparams)
   { return "TypeUse("+name+","+tparams+")"; }
   public String combine(UseParams _h_, String types)
   { return "UseParams("+types+")"; }
   public String combine(EmptyUseParams _h_)
   { return "EmptyUseParams("+")"; }
   public String combine(NETypeUseList _h_, String first, String rest)
   { return "NETypeUseList("+first+","+rest+")"; }
   public String combine(TypeUseCons _h_, String first, String rest)
   { return "TypeUseCons("+first+","+rest+")"; }
   public String combine(TypeUseEmpty _h_)
   { return "TypeUseEmpty("+")"; }
   public String combine(Field _h_, String name, String type)
   { return "Field("+name+","+type+")"; }
   public String combine(AddSpace _h_)
   { return "AddSpace("+")"; }
   public String combine(AddTab _h_)
   { return "AddTab("+")"; }
   public String combine(AddLine _h_)
   { return "AddLine("+")"; }
   public String combine(AddReturn _h_)
   { return "AddReturn("+")"; }
   public String combine(Plus _h_)
   { return "Plus("+")"; }
   public String combine(Minus _h_)
   { return "Minus("+")"; }
   public String combine(AddToken _h_, String str)
   { return "AddToken("+str+")"; }
   public String combine(TheEOF _h_)
   { return "TheEOF("+")"; }
   public String combine(RealToken _h_, String str)
   { return "RealToken("+str+")"; }
   public String combine(EmptyToken _h_)
   { return "EmptyToken("+")"; }
   public String combine(TypeDefCons _h_, String first, String rest)
   { return "TypeDefCons("+first+","+rest+")"; }
   public String combine(TypeDefEmpty _h_)
   { return "TypeDefEmpty("+")"; }
   public String combine(FieldCons _h_, String first, String rest)
   { return "FieldCons("+first+","+rest+")"; }
   public String combine(FieldEmpty _h_)
   { return "FieldEmpty("+")"; }
   public String combine(NESubtypeList _h_, String first, String rest)
   { return "NESubtypeList("+first+","+rest+")"; }
   public String combine(SubtypeCons _h_, String first, String rest)
   { return "SubtypeCons("+first+","+rest+")"; }
   public String combine(SubtypeEmpty _h_)
   { return "SubtypeEmpty("+")"; }
   public String combine(BehFile _h_, String incl, String behs)
   { return "BehFile("+incl+","+behs+")"; }
   public String combine(BehDefCons _h_, String first, String rest)
   { return "BehDefCons("+first+","+rest+")"; }
   public String combine(BehDefEmpty _h_)
   { return "BehDefEmpty("+")"; }
   public String combine(BehDef _h_, String name, String body)
   { return "BehDef("+name+","+body+")"; }
   public String combine(TE _h_)
   { return "TE("+")"; }
   public String combine(RTParseException _h_)
   { return "RTParseException("+")"; }
   public String combine(RTFileNotFound _h_)
   { return "RTFileNotFound("+")"; }
   public String combine(DummyDGP _h_, String behavior)
   { return "DummyDGP("+behavior+")"; }
   public String combine(DummyTrav _h_, String dfgl, String tdl, String dgpl, String otdl, String flds)
   { return "DummyTrav("+dfgl+","+tdl+","+dgpl+","+otdl+","+flds+")"; }
   public String combine(RED _h_)
   { return "RED("+")"; }
   public String combine(BLACK _h_)
   { return "BLACK("+")"; }
   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+")"; }


}