package aspectEditor.aspectEditorUtils;
import java.util.jar.JarFile;
import java.util.*;
import java.io.*;
import edu.neu.ccs.demeter.aplib.*;
import edu.neu.ccs.demeter.*;
class __V_GlobSpec_matchEdge {
  protected EdgeI e;
  public EdgeI get_e() { return e; }
  public void set_e(EdgeI new_e) { e = new_e; }
  protected NameMapI N;
  public NameMapI get_N() { return N; }
  public void set_N(NameMapI new_N) { N = new_N; }
  protected boolean return_val;
  public boolean get_return_val() { return return_val; }
  public void set_return_val(boolean new_return_val) { return_val = new_return_val; }
  public __V_GlobSpec_matchEdge() { super(); }
  public __V_GlobSpec_matchEdge(EdgeI e, NameMapI N, boolean return_val) {
    super();
    set_e(e);
    set_N(N);
    set_return_val(return_val);
  }
 boolean edgeglob_matches; 
  public void before(EdgeGlob host) { edgeglob_matches = false; }
  public void after(EdgeGlob host) { if (edgeglob_matches) return_val = true; }
  public void around(AroundContinuation subtraversal, PartGlob host) {
      if (e.isConstructionEdge()) {
	edgeglob_matches = true;
	subtraversal.apply();
      }
    }
  public void around(AroundContinuation subtraversal, SubclassGlob host) {
      if (e.isAlternationEdge()) {
	edgeglob_matches = true;
	subtraversal.apply();
      }
    }
  public void around(AroundContinuation subtraversal, SuperclassGlob host) {
      if (e.isInheritanceEdge()) {
	edgeglob_matches = true;
	subtraversal.apply();
      }
    }
 Object v; String l; 
  public void before(SourceGlob host) { v = e.getSource(); }
  public void before(PartNameGlob host) { l = e.getLabel(); }
  public void before(TargetGlob host) { v = e.getTarget(); }
  public void before(ClassName host) {
      // There is no &&= in Java for some reason...
      if (edgeglob_matches)
	edgeglob_matches = host.match(v, N);
    }
  public void before(PartName host) {
      if (edgeglob_matches)
	edgeglob_matches = host.match(l, N);
    }
  public void start() {}
  public void finish() {}
  void universal_trv0_bef(UniversalVisitor _v_) {  }

  void universal_trv0_aft(UniversalVisitor _v_) {  }

  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    universal_trv0_aft(_v_);
  }

}
