package EDU.neu.ccs.demeter.tools.apstudio.graphedit;
import java.awt.*;
import java.io.*;
import java.util.*;
import EDU.neu.ccs.demeter.*;
import EDU.neu.ccs.demeter.common.tg.*;


import EDU.neu.ccs.demeter.*;
class Decorator {
  protected Integer travtag;
  public Integer get_travtag() { return travtag; }
  public void set_travtag(Integer new_travtag)
    { travtag = new_travtag; }
  protected Vector travtaglist;
  public Vector get_travtaglist() { return travtaglist; }
  public void set_travtaglist(Vector new_travtaglist)
    { travtaglist = new_travtaglist; }
  Decorator() { super(); }
  public Decorator(Integer travtag, Vector travtaglist) {
    super();
    set_travtag(travtag);
    set_travtaglist(travtaglist);
  }
  public static Decorator parse(java.io.InputStream in) throws ParseException
    { return new Parser(in)._Decorator(); }
  public static Decorator parse(String s) {
    try { return parse(new java.io.ByteArrayInputStream(s.getBytes())); }
    catch (ParseException e) { throw new RuntimeException(e.toString()); }
  }

		boolean isSet(boolean flag)
		{
			if(flag)
			{
				if(travtag.equals(new Integer(1)))
					return true;
			}
			else
			{
				if(travtag.equals(new Integer(2)) || travtag.equals(new Integer(3)))
					return true;
			}
			return false;
		}

		void setMarked(int i)
		{
			switch(i)
			{
			case 0:
			case 1:
			case 2:
			case 3:
				travtag = new Integer(i);
				travtaglist = new Vector();
				break;
			
			default :System.out.println("error value in decorator");
			}
		}

		boolean isMarked()
		{
			return isSet(false);
		}


		void setMark(boolean flag)
		{
			if(flag)
			{
				travtag = new Integer(1);
			}
			else
			{
				switch(travtag.intValue())	
				{
					case 0 :
					case 2 :travtag = new Integer(2);break;
					case 1 :
					case 3 :travtag = new Integer(3);break;
					default :System.out.println("error value in decorator");
				}
			}
		}
	  void universal_trv0_bef(UniversalVisitor _v_) {
    _v_.before(this);
  }
  void universal_trv0_aft(UniversalVisitor _v_) {
    _v_.after(this);
  }
  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    _v_.before_travtag(this, travtag);
    _v_.after_travtag(this, travtag);
    _v_.before_travtaglist(this, travtaglist);
    _v_.after_travtaglist(this, travtaglist);
    universal_trv0_aft(_v_);
  }
  void saveGraph_UGraph_trv_bef(SaveGraphVisitor sgv) {  }
  void saveGraph_UGraph_trv_aft(SaveGraphVisitor sgv) {  }
  void saveGraph_UGraph_trv(SaveGraphVisitor sgv) {
    saveGraph_UGraph_trv_bef(sgv);
    saveGraph_UGraph_trv_aft(sgv);
  }
  void saveMarkedGraph_UGraph_trv_bef(SelectMarkedVisitor v) {  }
  void saveMarkedGraph_UGraph_trv_aft(SelectMarkedVisitor v) {  }
  void saveMarkedGraph_UGraph_trv(SelectMarkedVisitor v) {
    saveMarkedGraph_UGraph_trv_bef(v);
    saveMarkedGraph_UGraph_trv_aft(v);
  }
  void toallCdString_UVertex_trv_bef(cdStringVisitor __v0) {  }
  void toallCdString_UVertex_trv_aft(cdStringVisitor __v0) {  }
  void toallCdString_UVertex_trv(cdStringVisitor __v0) {
    toallCdString_UVertex_trv_bef(__v0);
    toallCdString_UVertex_trv_aft(__v0);
  }
  void __trav_isMarked_UVertex_trv_bef(__V_UVertex_isMarked __v0) {
    __v0.before(this);
  }
  void __trav_isMarked_UVertex_trv_aft(__V_UVertex_isMarked __v0) {  }
  void __trav_isMarked_UVertex_trv(__V_UVertex_isMarked __v0) {
    __trav_isMarked_UVertex_trv_bef(__v0);
    __trav_isMarked_UVertex_trv_aft(__v0);
  }
  void __trav_isMarked_UEdge_trv_bef(__V_UEdge_isMarked __v0) {
    __v0.before(this);
  }
  void __trav_isMarked_UEdge_trv_aft(__V_UEdge_isMarked __v0) {  }
  void __trav_isMarked_UEdge_trv(__V_UEdge_isMarked __v0) {
    __trav_isMarked_UEdge_trv_bef(__v0);
    __trav_isMarked_UEdge_trv_aft(__v0);
  }
}

