public static Path pathInverse(Path path) { return new P_Inverse(path) ; } public static Path pathMod(Path path, long min, long max) { return new P_Mod(path, min, max) ; }
@Override public Path transform(P_Shortest path, Path subPath) { Path result = new P_Shortest(new P_Inverse(subPath)); return result; }
@Override public Path transform(P_Distinct path, Path subPath) { Path result = new P_Distinct(new P_Inverse(subPath)); return result; }
@Override public Path transform(P_ZeroOrOne path, Path subPath) { Path result = new P_ZeroOrOne(new P_Inverse(subPath)); return result; }
@Override public Path transform(P_Multi path, Path subPath) { Path result = new P_Multi(new P_Inverse(subPath)); return result; }
@Override public void visit(P_ZeroOrMore1 path) { result = new P_ZeroOrMore1(new P_Inverse(path.getSubPath())); }
@Override public void visit(P_ZeroOrMoreN path) { result = new P_ZeroOrMoreN(new P_Inverse(path.getSubPath())); }
@Override public Path transform(P_Inverse path, Path subPath) { Path result = path.getSubPath() == subPath ? path : new P_Inverse(subPath) ; return result; }
@Override public void visit(P_ZeroOrOne path) { result = new P_ZeroOrOne(new P_Inverse(path.getSubPath())); }
@Override public void visit(P_Multi path) { result = new P_Multi(new P_Inverse(path.getSubPath())); }
@Override public void visit(P_Distinct path) { result = new P_Distinct(new P_Inverse(path.getSubPath())); }
@Override public void visit(P_OneOrMoreN path) { result = new P_OneOrMoreN(new P_Inverse(path.getSubPath())); }
@Override public void visit(P_FixedLength path) { result = new P_FixedLength(new P_Inverse(path.getSubPath()), path.getCount()); }
@Override public Path make(ItemList list) { BuilderLib.checkLength(2, 2, list, "path reverse: wanted 1 argument") ; Path path = build(list, 1) ; return new P_Inverse(path) ; } };
@Override public Path transform(P_Inverse path, Path subPath) { Path result = subPath instanceof P_Link ? new P_ReverseLink(((P_Path0)subPath).getNode()) : new P_Inverse(subPath); // Path result = // subPath instanceof P_Inverse ? ((P_Inverse)subPath).getSubPath() : // subPath instanceof P_Link ? new P_ReverseLink(((P_Path0)subPath).getNode()) : // subPath instanceof P_ReverseLink ? new P_Link(((P_Path0)subPath).getNode()) : // new P_Inverse(subPath); return result; } }
@Override public void visit(P_Inverse inversePath) { inversePath.getSubPath().visit(this); push(new P_Inverse(pop())); }
@Override public void visit(P_Inverse inversePath) { inversePath.getSubPath().visit(this); push(new P_Inverse(pop())); }