@Override public int hashCode() { return hashMod ^ (int)min ^ (int)max ^ getSubPath().hashCode(); }
@Override public boolean equalTo(Path path2, NodeIsomorphismMap isoMap) { if ( !(path2 instanceof P_Mod) ) return false; P_Mod other = (P_Mod)path2; return other.min == min && other.max == max && getSubPath().equalTo(other.getSubPath(), isoMap); }
@Override public void visit(P_Mod path) { before(path); if (path.getSubPath() != null) { path.getSubPath().visit(this); } proc.visit(path); after(path); }
@Override public void visit(P_Mod path) { Path newSubPath = apply(path.getSubPath()); result = path.getSubPath() == newSubPath ? path : new P_Mod(newSubPath, path.getMin(), path.getMax()) ; }
@Override public void visit(P_Mod pathMod) { // do..Or.. need to take a visited set. if ( pathMod.isZeroOrMore() ) { // :p{0,} engine.doOneOrMoreN(pathMod.getSubPath(), node, output) ; return ; } if ( pathMod.isOneOrMore() ) { engine.doOneOrMoreN(pathMod.getSubPath(), node, output) ; return ; } if ( pathMod.isFixedLength() ) engine.doFixedLengthPath(pathMod.getSubPath(), node, pathMod.getFixedLength(), output) ; else engine.doMultiLengthPath(pathMod.getSubPath(), node, pathMod.getMin(), pathMod.getMax(), output) ; }
@Override public Path transform(P_Mod path, Path subPath, long min, long max) { Path result = path.getSubPath() == subPath && path.getMin() == min && path.getMax() == max ? path : new P_Mod(subPath, min, max) ; return result; }
@Override public void visit(P_Mod path) { result = new P_Mod(new P_Inverse(path.getSubPath()), path.getMin(), path.getMax()); }
@Override public void visit(P_Mod pathMod) { pathMod.getSubPath().visit(this); push(new P_Mod(pop(), pathMod.getMin(), pathMod.getMax())); }
@Override public void visit(P_Mod pathMod) { pathMod.getSubPath().visit(this); push(new P_Mod(pop(), pathMod.getMin(), pathMod.getMax())); }
@Override public void visit(P_Mod pathMod) { if ( pathMod.getMin() > pathMod.getMax() ) throw new ARQException("Bad path: "+pathMod) ; Op op = null ; for ( long i = pathMod.getMin() ; i <= pathMod.getMax() ; i++ ) { Path p = PathFactory.pathFixedLength(pathMod.getSubPath(), i) ; Op sub = transformPath(null, subject, p, object) ; op = union(op, sub) ; } result = op ; }
@Override public void visit(P_Mod pathMod) { if ( needParens ) out.print("(") ; if ( alwaysInnerParens ) out.print("(") ; pathMod.getSubPath().visit(this) ; if ( alwaysInnerParens ) out.print(")") ; out.print("{") ; if ( pathMod.getMin() != UNSET ) out.print(Long.toString(pathMod.getMin())) ; out.print(",") ; if ( pathMod.getMax() != UNSET ) out.print(Long.toString(pathMod.getMax())) ; out.print("}") ; if ( needParens ) out.print(")") ; }
@Override public void visit(P_Mod pathMod) { out.print("(") ; out.print(Tags.tagPathMod) ; out.print(" ") ; out.print(modInt(pathMod.getMin())) ; out.print(" ") ; out.print(modInt(pathMod.getMax())) ; writeOneLiner(pathMod.getSubPath()) ; out.print(")") ; }
reduce(x, varAlloc, stepStart, pMod.getSubPath(), v) ; stepStart = v ; reduce(x, varAlloc, stepStart, pMod.getSubPath(), endNode) ; return ; Path p1 = PathFactory.pathFixedLength(pMod.getSubPath(), pMod.getMin()) ; Path p2 ; p2 = PathFactory.pathZeroOrMoreN(pMod.getSubPath()) ; else p2 = PathFactory.pathMod(pMod.getSubPath(),0, len2) ;