// ** 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 an XML String representation */
public class ToXML extends edu.neu.ccs.demeterf.FC{
   /** Static stub method for calling toXML */
   public static String ToXMLM(Object o){
      return new edu.neu.ccs.demeterf.Traversal(new ToXML(),edu.neu.ccs.demeterf.Control.builtins()).<String>traverse(o,"   ");
   }

   public String combine(byte _h_, String _d_)
   { return "\n"+_d_+"<byte>"+""+_h_+"</byte>";  }
   public String combine(short _h_, String _d_)
   { return "\n"+_d_+"<short>"+""+_h_+"</short>";  }
   public String combine(int _h_, String _d_)
   { return "\n"+_d_+"<int>"+""+_h_+"</int>";  }
   public String combine(long _h_, String _d_)
   { return "\n"+_d_+"<long>"+""+_h_+"</long>";  }
   public String combine(float _h_, String _d_)
   { return "\n"+_d_+"<float>"+""+_h_+"</float>";  }
   public String combine(double _h_, String _d_)
   { return "\n"+_d_+"<double>"+""+_h_+"</double>";  }
   public String combine(char _h_, String _d_)
   { return "\n"+_d_+"<char>"+"\'"+escape(""+_h_)+"\'"+"</char>";  }
   public String combine(boolean _h_, String _d_)
   { return "\n"+_d_+"<boolean>"+""+_h_+"</boolean>";  }
   public String combine(String _h_, String _d_)
   { return "\n"+_d_+"<string>"+"\""+escape(""+_h_)+"\""+"</string>";  }
   public String combine(ident _h_, String _d_)
   { return "\n"+_d_+"<ident>"+""+_h_+"</ident>";  }
   public String combine(verbatim _h_, String _d_)
   { return "\n"+_d_+"<verbatim>"+""+_h_+"</verbatim>";  }


   public String update(Object o, Fields.any f, String d){ return d+"   "; }
   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(CDFile _h_, String incl, String dgpuse, String pkg, String look, String imports, String types, String _d_)
   { return "\n"+_d_+"<cdfile>"+incl+dgpuse+pkg+look+imports+types+"\n"+_d_+"</cdfile>";  }
   public String combine(Include _h_, String gen, String file, String _d_)
   { return "\n"+_d_+"<include>"+gen+file+"\n"+_d_+"</include>";  }
   public String combine(IncludeCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<includecons>"+first+rest+"\n"+_d_+"</includecons>";  }
   public String combine(IncludeEmpty _h_, String _d_)
   { return "\n"+_d_+"<includeempty>"+"</includeempty>";  }
   public String combine(DGPUse _h_, String pkg, String _d_)
   { return "\n"+_d_+"<dgpuse>"+pkg+"\n"+_d_+"</dgpuse>";  }
   public String combine(NoDGPUse _h_, String _d_)
   { return "\n"+_d_+"<nodgpuse>"+"</nodgpuse>";  }
   public String combine(Package _h_, String pkg, String _d_)
   { return "\n"+_d_+"<package>"+pkg+"\n"+_d_+"</package>";  }
   public String combine(NoPackage _h_, String _d_)
   { return "\n"+_d_+"<nopackage>"+"</nopackage>";  }
   public String combine(LookAhead _h_, String n, String _d_)
   { return "\n"+_d_+"<lookahead>"+n+"\n"+_d_+"</lookahead>";  }
   public String combine(NoLook _h_, String _d_)
   { return "\n"+_d_+"<nolook>"+"</nolook>";  }
   public String combine(Import _h_, String pkg, String _d_)
   { return "\n"+_d_+"<import>"+pkg+"\n"+_d_+"</import>";  }
   public String combine(NEPkgList _h_, String id, String rest, String _d_)
   { return "\n"+_d_+"<nepkglist>"+id+rest+"\n"+_d_+"</nepkglist>";  }
   public String combine(PkgCons _h_, String id, String rest, String _d_)
   { return "\n"+_d_+"<pkgcons>"+id+rest+"\n"+_d_+"</pkgcons>";  }
   public String combine(PkgStar _h_, String _d_)
   { return "\n"+_d_+"<pkgstar>"+"</pkgstar>";  }
   public String combine(PkgEmpty _h_, String _d_)
   { return "\n"+_d_+"<pkgempty>"+"</pkgempty>";  }
   public String combine(ImportCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<importcons>"+first+rest+"\n"+_d_+"</importcons>";  }
   public String combine(ImportEmpty _h_, String _d_)
   { return "\n"+_d_+"<importempty>"+"</importempty>";  }
   public String combine(IntfcDef _h_, String gen, String name, String tparams, String subtypes, String _d_)
   { return "\n"+_d_+"<intfcdef>"+gen+name+tparams+subtypes+"\n"+_d_+"</intfcdef>";  }
   public String combine(ClassDef _h_, String gen, String name, String tparams, String subtypes, String fields, String ext, String _d_)
   { return "\n"+_d_+"<classdef>"+gen+name+tparams+subtypes+fields+ext+"\n"+_d_+"</classdef>";  }
   public String combine(NoGen _h_, String _d_)
   { return "\n"+_d_+"<nogen>"+"</nogen>";  }
   public String combine(NoParse _h_, String _d_)
   { return "\n"+_d_+"<noparse>"+"</noparse>";  }
   public String combine(Extern _h_, String _d_)
   { return "\n"+_d_+"<extern>"+"</extern>";  }
   public String combine(YesGen _h_, String _d_)
   { return "\n"+_d_+"<yesgen>"+"</yesgen>";  }
   public String combine(DefParams _h_, String types, String _d_)
   { return "\n"+_d_+"<defparams>"+types+"\n"+_d_+"</defparams>";  }
   public String combine(EmptyDefParams _h_, String _d_)
   { return "\n"+_d_+"<emptydefparams>"+"</emptydefparams>";  }
   public String combine(NameDef _h_, String id, String bnd, String _d_)
   { return "\n"+_d_+"<namedef>"+id+bnd+"\n"+_d_+"</namedef>";  }
   public String combine(ClassBound _h_, String bound, String _d_)
   { return "\n"+_d_+"<classbound>"+bound+"\n"+_d_+"</classbound>";  }
   public String combine(NoBound _h_, String _d_)
   { return "\n"+_d_+"<nobound>"+"</nobound>";  }
   public String combine(NoImpl _h_, String _d_)
   { return "\n"+_d_+"<noimpl>"+"</noimpl>";  }
   public String combine(IntfImpl _h_, String intf, String _d_)
   { return "\n"+_d_+"<intfimpl>"+intf+"\n"+_d_+"</intfimpl>";  }
   public String combine(NENameList _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<nenamelist>"+first+rest+"\n"+_d_+"</nenamelist>";  }
   public String combine(NameCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<namecons>"+first+rest+"\n"+_d_+"</namecons>";  }
   public String combine(NameEmpty _h_, String _d_)
   { return "\n"+_d_+"<nameempty>"+"</nameempty>";  }
   public String combine(TypeUse _h_, String name, String tparams, String _d_)
   { return "\n"+_d_+"<typeuse>"+name+tparams+"\n"+_d_+"</typeuse>";  }
   public String combine(UseParams _h_, String types, String _d_)
   { return "\n"+_d_+"<useparams>"+types+"\n"+_d_+"</useparams>";  }
   public String combine(EmptyUseParams _h_, String _d_)
   { return "\n"+_d_+"<emptyuseparams>"+"</emptyuseparams>";  }
   public String combine(NETypeUseList _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<netypeuselist>"+first+rest+"\n"+_d_+"</netypeuselist>";  }
   public String combine(TypeUseCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<typeusecons>"+first+rest+"\n"+_d_+"</typeusecons>";  }
   public String combine(TypeUseEmpty _h_, String _d_)
   { return "\n"+_d_+"<typeuseempty>"+"</typeuseempty>";  }
   public String combine(Field _h_, String name, String type, String _d_)
   { return "\n"+_d_+"<field>"+name+type+"\n"+_d_+"</field>";  }
   public String combine(AddSpace _h_, String _d_)
   { return "\n"+_d_+"<addspace>"+"</addspace>";  }
   public String combine(AddTab _h_, String _d_)
   { return "\n"+_d_+"<addtab>"+"</addtab>";  }
   public String combine(AddLine _h_, String _d_)
   { return "\n"+_d_+"<addline>"+"</addline>";  }
   public String combine(AddReturn _h_, String _d_)
   { return "\n"+_d_+"<addreturn>"+"</addreturn>";  }
   public String combine(Plus _h_, String _d_)
   { return "\n"+_d_+"<plus>"+"</plus>";  }
   public String combine(Minus _h_, String _d_)
   { return "\n"+_d_+"<minus>"+"</minus>";  }
   public String combine(AddToken _h_, String str, String _d_)
   { return "\n"+_d_+"<addtoken>"+str+"\n"+_d_+"</addtoken>";  }
   public String combine(TheEOF _h_, String _d_)
   { return "\n"+_d_+"<theeof>"+"</theeof>";  }
   public String combine(RealToken _h_, String str, String _d_)
   { return "\n"+_d_+"<realtoken>"+str+"\n"+_d_+"</realtoken>";  }
   public String combine(EmptyToken _h_, String _d_)
   { return "\n"+_d_+"<emptytoken>"+"</emptytoken>";  }
   public String combine(TypeDefCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<typedefcons>"+first+rest+"\n"+_d_+"</typedefcons>";  }
   public String combine(TypeDefEmpty _h_, String _d_)
   { return "\n"+_d_+"<typedefempty>"+"</typedefempty>";  }
   public String combine(FieldCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<fieldcons>"+first+rest+"\n"+_d_+"</fieldcons>";  }
   public String combine(FieldEmpty _h_, String _d_)
   { return "\n"+_d_+"<fieldempty>"+"</fieldempty>";  }
   public String combine(NESubtypeList _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<nesubtypelist>"+first+rest+"\n"+_d_+"</nesubtypelist>";  }
   public String combine(SubtypeCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<subtypecons>"+first+rest+"\n"+_d_+"</subtypecons>";  }
   public String combine(SubtypeEmpty _h_, String _d_)
   { return "\n"+_d_+"<subtypeempty>"+"</subtypeempty>";  }
   public String combine(BehFile _h_, String incl, String behs, String _d_)
   { return "\n"+_d_+"<behfile>"+incl+behs+"\n"+_d_+"</behfile>";  }
   public String combine(BehDefCons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<behdefcons>"+first+rest+"\n"+_d_+"</behdefcons>";  }
   public String combine(BehDefEmpty _h_, String _d_)
   { return "\n"+_d_+"<behdefempty>"+"</behdefempty>";  }
   public String combine(BehDef _h_, String name, String body, String _d_)
   { return "\n"+_d_+"<behdef>"+name+body+"\n"+_d_+"</behdef>";  }
   public String combine(TE _h_, String _d_)
   { return "\n"+_d_+"<te>"+"</te>";  }
   public String combine(RTParseException _h_, String _d_)
   { return "\n"+_d_+"<rtparseexception>"+"</rtparseexception>";  }
   public String combine(RTFileNotFound _h_, String _d_)
   { return "\n"+_d_+"<rtfilenotfound>"+"</rtfilenotfound>";  }
   public String combine(DummyDGP _h_, String behavior, String _d_)
   { return "\n"+_d_+"<dummydgp>"+behavior+"\n"+_d_+"</dummydgp>";  }
   public String combine(DummyTrav _h_, String dfgl, String tdl, String dgpl, String otdl, String flds, String _d_)
   { return "\n"+_d_+"<dummytrav>"+dfgl+tdl+dgpl+otdl+flds+"\n"+_d_+"</dummytrav>";  }
   public String combine(RED _h_, String _d_)
   { return "\n"+_d_+"<red>"+"</red>";  }
   public String combine(BLACK _h_, String _d_)
   { return "\n"+_d_+"<black>"+"</black>";  }

   public String combine(Empty _h_, String _d_)
   { return "\n"+_d_+"<empty>"+"</empty>";  }
   public String combine(Cons _h_, String first, String rest, String _d_)
   { return "\n"+_d_+"<cons>"+first+rest+"\n"+_d_+"</cons>";  }
   public String combine(None _h_, String _d_)
   { return "\n"+_d_+"<none>"+"</none>";  }
   public String combine(Some _h_, String just, String _d_)
   { return "\n"+_d_+"<some>"+just+"\n"+_d_+"</some>";  }


}