예제 #1
0
    public virtual Differences VisitQueryTypeFilter(QueryTypeFilter filter1, QueryTypeFilter filter2){
      Differences differences = new Differences(filter1, filter2);
      if (filter1 == null || filter2 == null){
        if (filter1 != filter2) differences.NumberOfDifferences++; else differences.NumberOfSimilarities++;
        return differences;
      }
      QueryTypeFilter changes = (QueryTypeFilter)filter2.Clone();
      QueryTypeFilter deletions = (QueryTypeFilter)filter2.Clone();
      QueryTypeFilter insertions = (QueryTypeFilter)filter2.Clone();

      //      filter1.Constraint;
      //      filter1.Source;

      if (differences.NumberOfDifferences == 0){
        differences.Changes = null;
        differences.Deletions = null;
        differences.Insertions = null;
      }else{
        differences.Changes = changes;
        differences.Deletions = deletions;
        differences.Insertions = insertions;
      }
      return differences;
    }
예제 #2
0
 public virtual Node VisitQueryTypeFilter(QueryTypeFilter filter, QueryTypeFilter changes, QueryTypeFilter deletions, QueryTypeFilter insertions){
   this.UpdateSourceContext(filter, changes);
   if (filter == null) return changes;
   if (changes != null){
     if (deletions == null || insertions == null)
       Debug.Assert(false);
     else{
     }
   }else if (deletions != null)
     return null;
   return filter;
 }
예제 #3
0
 public override Node VisitQueryTypeFilter(QueryTypeFilter qtf) {
   if (qtf == null) return null;
   qtf.Source = this.VisitExpression(qtf.Source);
   if (qtf.Source == null || qtf.Source.Type == null) return null;
   Cardinality card = this.typeSystem.GetCardinality(qtf.Source, this.TypeViewer);
   if (card != Cardinality.OneOrMore && card != Cardinality.ZeroOrMore) {
     this.HandleError(qtf.Source, Error.QueryNotStream);
     return null;
   }
   qtf.Constraint = this.VisitTypeReference(qtf.Constraint);
   if (qtf.Constraint == null) {
     this.HandleError(qtf, Error.QueryBadTypeFilter);
     return null;
   }
   if (qtf.Type == null) return null;
   return qtf;
 }
예제 #4
0
 public virtual Node VisitQueryTypeFilter(QueryTypeFilter filter){
   if (filter == null) return null;
   filter.Source = this.VisitExpression(filter.Source);
   return filter;
 }
예제 #5
0
 public virtual void VisitQueryTypeFilter(QueryTypeFilter filter){
   if (filter == null) return;
   this.VisitExpression(filter.Source);
 }
예제 #6
0
 public override Node VisitQueryTypeFilter( QueryTypeFilter qtf ){
   if (qtf == null) return null;
   qtf.Source = this.VisitExpression(qtf.Source);
   return qtf;
 }    
예제 #7
0
 public override Node VisitQueryTypeFilter(QueryTypeFilter filter){
   if (filter == null) return null;
   return base.VisitQueryTypeFilter((QueryTypeFilter)filter.Clone());
 }
예제 #8
0
 public virtual Node VisitQueryTypeFilter(QueryTypeFilter filter1, QueryTypeFilter filter2){
   if (filter1 == null) return null;
   if (filter2 == null)
     filter1.Source = this.VisitExpression(filter1.Source, null);
   else
     filter1.Source = this.VisitExpression(filter1.Source, filter2.Source);
   return filter1;
 }
예제 #9
0
 public override Node VisitQueryTypeFilter( QueryTypeFilter qtf ) {
   base.VisitQueryTypeFilter(qtf);
   return this.Compose(qtf, this.GetComposer(qtf.Source));
 }    
예제 #10
0
 public override Node VisitQueryTypeFilter(QueryTypeFilter qtf)
 {
     base.VisitQueryTypeFilter(qtf);
     return(this.Compose(qtf, this.GetComposer(qtf.Source)));
 }
예제 #11
0
 public EventingVisitor(Action<QueryTypeFilter> visitQueryTypeFilter) { VisitedQueryTypeFilter += visitQueryTypeFilter; } public event Action<QueryTypeFilter> VisitedQueryTypeFilter; public override Node VisitQueryTypeFilter(QueryTypeFilter filter) { if (VisitedQueryTypeFilter != null) VisitedQueryTypeFilter(filter); return base.VisitQueryTypeFilter(filter); }