private static boolean compareRegionsI(char[] arr, int off1, int off2, int len, int out) { int p1 = off1 + len - 1; int p2 = off2 + len - 1; if (p1 >= out || p2 >= out) { return false; } for (int c = len; c > 0; c--, p1--, p2--) { if(Category.caseFold(arr[p1]) != Category.caseFold(arr[p2])) return false; /* if ((c1 = arr[p1]) != Character.toLowerCase(c2 = arr[p2]) && c1 != Character.toUpperCase(c2) && c1 != Character.toTitleCase(c2)) return false; */ } return true; }
private static boolean compareRegionsI(char[] arr, int off1, int off2, int len, int out) { int p1 = off1 + len - 1; int p2 = off2 + len - 1; if (p1 >= out || p2 >= out) { return false; } for (int c = len; c > 0; c--, p1--, p2--) { if(Category.caseFold(arr[p1]) != Category.caseFold(arr[p2])) return false; /* if ((c1 = arr[p1]) != Character.toLowerCase(c2 = arr[p2]) && c1 != Character.toUpperCase(c2) && c1 != Character.toTitleCase(c2)) return false; */ } return true; }
@Override public boolean areEqual(Object left, Object right) { if(left == right) return true; if(!(left instanceof CharSequence && right instanceof CharSequence)) return false; CharSequence l = (CharSequence)left, r = (CharSequence)right; int llen = l.length(), rlen = r.length(); if(llen != rlen) return false; for (int i = 0; i < llen; i++) { if(Category.caseFold(l.charAt(i)) != Category.caseFold(r.charAt(i))) return false; } return true; } }
@Override public int hash(final Object data) { if(data == null) return 0; if(!(data instanceof CharSequence)) return data.hashCode(); CharSequence data2 = (CharSequence)data; long result = 0x1A976FDF6BF60B8EL, z = 0x60642E2A34326F15L; final int len = data2.length(); for (int i = 0; i < len; i++) { result ^= (z += (Category.caseFold(data2.charAt(i)) ^ 0xC6BC279692B5CC85L) * 0x6C8E9CF570932BABL); result = (result << 54 | result >>> 10); } result += (z ^ z >>> 26) * 0x632BE59BD9B4E019L; result = (result ^ result >>> 33) * 0xFF51AFD7ED558CCDL; return (int) ((result ^ result >>> 33) * 0xC4CEB9FE1A85EC53L); }
private static boolean compareRegionsReverse(char[] arr, int off1, int off2, int len, int out, boolean insensitive, boolean bracket) { int p1 = off1 + len - 1; int p2 = off2; if (p1 >= out || p2 >= out) { return false; } char a, b; for (int c = len; c > 0 && p2 < out; c--, p1--, p2++) { a = arr[p1]; b = arr[p2]; if(insensitive) { a = Category.caseFold(a); b = Category.caseFold(b); } if(bracket) { b = Category.matchBracket(b); } if (a != b) { return false; } } return true; }
private static boolean compareRegionsForward(char[] arr, int off1, int off2, int len, int out, boolean insensitive, boolean bracket) { int p1 = off1 + len - 1; int p2 = off2 + len - 1; if (p1 >= out || p2 >= out) { return false; } char a, b; for (int c = len; c > 0; c--, p1--, p2--) { a = arr[p1]; b = arr[p2]; if(insensitive) { a = Category.caseFold(a); b = Category.caseFold(b); } if(bracket) { b = Category.matchBracket(b); } if (a != b) { return false; } } return true; } private static boolean compareRegionsReverse(char[] arr, int off1, int off2, int len, int out,
private static boolean compareRegionsReverse(char[] arr, int off1, int off2, int len, int out, boolean insensitive, boolean bracket) { int p1 = off1 + len - 1; int p2 = off2; if (p1 >= out || p2 >= out) { return false; } char a, b; for (int c = len; c > 0 && p2 < out; c--, p1--, p2++) { a = arr[p1]; b = arr[p2]; if(insensitive) { a = Category.caseFold(a); b = Category.caseFold(b); } if(bracket) { b = Category.matchBracket(b); } if (a != b) { return false; } } return true; }
private static boolean compareRegionsForward(char[] arr, int off1, int off2, int len, int out, boolean insensitive, boolean bracket) { int p1 = off1 + len - 1; int p2 = off2 + len - 1; if (p1 >= out || p2 >= out) { return false; } char a, b; for (int c = len; c > 0; c--, p1--, p2--) { a = arr[p1]; b = arr[p2]; if(insensitive) { a = Category.caseFold(a); b = Category.caseFold(b); } if(bracket) { b = Category.matchBracket(b); } if (a != b) { return false; } } return true; } private static boolean compareRegionsReverse(char[] arr, int off1, int off2, int len, int out,
t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t); t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t);
t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t); t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t);
t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t); t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t);
t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t); t = data[j]; if((modes & PerlSubstitution.MODE_INSENSITIVE) > 0) t = Category.caseFold(t); if((modes & PerlSubstitution.MODE_BRACKET) > 0) t = Category.matchBracket(t);
if (i >= end || (re.caseless ? Category.caseFold(data[i]) : data[i]) != term.c) break; i++; c = re.caseless ? Category.caseFold(data[i]) : data[i]; if (!(c <= 255 && term.bitset.get(c)) ^ term.inverse) break; i++; c = re.caseless ? Category.caseFold(data[i]) : data[i]; IntBitSet arr = term.bitset2[c >> 8]; if (arr == null || !arr.get(c & 255) ^ term.inverse) break; c = re.caseless ? Category.caseFold(data[j]) : data[j]; ch1Meets = (c < 256 && bitset.get(c)); c = re.caseless ? Category.caseFold(data[i]) : data[i]; ch2Meets = (c < 256 && bitset.get(c)); c = re.caseless ? Category.caseFold(data[j]) : data[j]; IntBitSet bits = bitset2[c >> 8]; ch1Meets = bits != null && bits.get(c & 0xff); c = re.caseless ? Category.caseFold(data[i]) : data[i]; IntBitSet bits = bitset2[c >> 8]; ch2Meets = bits != null && bits.get(c & 0xff); c = re.caseless ? Category.caseFold(data[j]) : data[j]; ch1Meets = c < 256 && bitset.get(c);
if (i >= end || (re.caseless ? Category.caseFold(data[i]) : data[i]) != term.c) break; i++; c = re.caseless ? Category.caseFold(data[i]) : data[i]; if (!(c <= 255 && term.bitset.get(c)) ^ term.inverse) break; i++; c = re.caseless ? Category.caseFold(data[i]) : data[i]; IntBitSet arr = term.bitset2[c >> 8]; if (arr == null || !arr.get(c & 255) ^ term.inverse) break; c = re.caseless ? Category.caseFold(data[j]) : data[j]; ch1Meets = (c < 256 && bitset.get(c)); c = re.caseless ? Category.caseFold(data[i]) : data[i]; ch2Meets = (c < 256 && bitset.get(c)); c = re.caseless ? Category.caseFold(data[j]) : data[j]; IntBitSet bits = bitset2[c >> 8]; ch1Meets = bits != null && bits.get(c & 0xff); c = re.caseless ? Category.caseFold(data[i]) : data[i]; IntBitSet bits = bitset2[c >> 8]; ch2Meets = bits != null && bits.get(c & 0xff); c = re.caseless ? Category.caseFold(data[j]) : data[j]; ch1Meets = c < 256 && bitset.get(c);