Pattern makeInterleave(Pattern p1, Pattern p2) { if (p1 == empty) return p2; if (p2 == empty) return p1; if (p1 == notAllowed || p2 == notAllowed) return notAllowed; if (false && p1 instanceof InterleavePattern) { InterleavePattern ip = (InterleavePattern)p1; return makeInterleave(ip.p1, makeInterleave(ip.p2, p2)); } if (false) { if (p2 instanceof InterleavePattern) { InterleavePattern ip = (InterleavePattern)p2; if (p1.hashCode() > ip.p1.hashCode()) return makeInterleave(ip.p1, makeInterleave(p1, ip.p2)); } else if (p1.hashCode() > p2.hashCode()) return makeInterleave(p2, p1); } Pattern p = new InterleavePattern(p1, p2); return interner.intern(p); }
InterleavePattern(Pattern p1, Pattern p2) { super(p1.isNullable() && p2.isNullable(), combineHashCode(INTERLEAVE_HASH_CODE, p1.hashCode(), p2.hashCode()), p1, p2); } @Override
&& !contentTypeGroupable(p1.getContentType(), p2.getContentType())) throw new RestrictionViolationException("interleave_string"); if (p1.getContentType() == MIXED_CONTENT_TYPE
&& !contentTypeGroupable(p1.getContentType(), p2.getContentType())) throw new RestrictionViolationException("interleave_string"); if (p1.getContentType() == MIXED_CONTENT_TYPE
InterleavePattern(Pattern p1, Pattern p2) { super(p1.isNullable() && p2.isNullable(), combineHashCode(INTERLEAVE_HASH_CODE, p1.hashCode(), p2.hashCode()), p1, p2); } Pattern expand(SchemaPatternBuilder b) {
Pattern makeInterleave(Pattern p1, Pattern p2) { if (p1 == empty) return p2; if (p2 == empty) return p1; if (p1 == notAllowed || p2 == notAllowed) return notAllowed; if (false && p1 instanceof InterleavePattern) { InterleavePattern ip = (InterleavePattern)p1; return makeInterleave(ip.p1, makeInterleave(ip.p2, p2)); } if (false) { if (p2 instanceof InterleavePattern) { InterleavePattern ip = (InterleavePattern)p2; if (p1.hashCode() > ip.p1.hashCode()) return makeInterleave(ip.p1, makeInterleave(p1, ip.p2)); } else if (p1.hashCode() > p2.hashCode()) return makeInterleave(p2, p1); } Pattern p = new InterleavePattern(p1, p2); return interner.intern(p); }