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 GlobMatcher extends GlobVisitor {
  protected Glob glob;
  public Glob get_glob() { return glob; }
  public void set_glob(Glob new_glob)
    { glob = new_glob; }
  protected boolean found_one;
  public boolean get_found_one() { return found_one; }
  public void set_found_one(boolean new_found_one)
    { found_one = new_found_one; }
  GlobMatcher() { super(); }
  public GlobMatcher(Glob glob, boolean found_one) {
    super();
    set_glob(glob);
    set_found_one(found_one);
  }
  public void before(ClassGlob host) {
    if (glob instanceof ClassGlob &&
        host.get_name().match(((ClassGlob) glob).get_name()))
      found_one = true;
  }
  public void before(PartGlob host) {
    if (glob instanceof PartGlob) {
      PartGlob pglob = (PartGlob) glob;
      if (host.get_source().match(pglob.get_source()) &&
	  host.get_name().match(pglob.get_name()) &&
	  host.get_dest().match(pglob.get_dest()))
	found_one = true;
    }
  }
  public void before(SubclassGlob host) {
    if (glob instanceof SubclassGlob) {
      SubclassGlob sglob = (SubclassGlob) glob;
      if (host.get_source().match(sglob.get_source()) &&
	  host.get_dest().match(sglob.get_dest()))
	found_one = true;
    }
  }
  public void before(SuperclassGlob host) {
    if (glob instanceof SuperclassGlob) {
      SuperclassGlob sglob = (SuperclassGlob) glob;
      if (host.get_source().match(sglob.get_source()) &&
	  host.get_dest().match(sglob.get_dest()))
	found_one = true;
    }
  }
  void universal_trv0_bef(UniversalVisitor _v_) {
    super.universal_trv0_bef(_v_);
  }
  void universal_trv0_aft(UniversalVisitor _v_) {
    super.universal_trv0_aft(_v_);
  }
  void universal_trv0(UniversalVisitor _v_) {
    universal_trv0_bef(_v_);
    glob.universal_trv0(_v_);
    super.universal_trv0(_v_);
    universal_trv0_aft(_v_);
  }
}

