private void intersect(BlockSet bs, boolean inverse) { //System.out.println("["+this+"].intersect(["+bs+"],"+inverse+"):"); subtract(bs, !inverse); }
private void intersect(BlockSet bs, boolean inverse) { //System.out.println("["+this+"].intersect(["+bs+"],"+inverse+"):"); subtract(bs, !inverse); }
final void subtract(BlockSet bs) { subtract(bs, false); }
final void subtract(BlockSet bs) { subtract(bs, false); }
private static int subtractImpl(BlockSet bs1, BlockSet bs2, boolean inv) { int s = 0; if (!bs1.isLarge && !bs2.isLarge && !inv) { IntBitSet bits1, bits2; if ((bits2 = bs2.block0) != null) { bits1 = bs1.block0; if (bits1 == null) return 0; s += subtract(bits1, bits2, false); } } else { if (!bs1.isLarge) bs1.enableLargeMode(); if (!bs2.isLarge) bs2.enableLargeMode(); s += Block.subtract(bs1.blocks, bs2.blocks, 0, BLOCK_COUNT - 1, inv); } return s; }
private static int subtractImpl(BlockSet bs1, BlockSet bs2, boolean inv) { int s = 0; if (!bs1.isLarge && !bs2.isLarge && !inv) { IntBitSet bits1, bits2; if ((bits2 = bs2.block0) != null) { bits1 = bs1.block0; if (bits1 == null) return 0; s += subtract(bits1, bits2, false); } } else { if (!bs1.isLarge) bs1.enableLargeMode(); if (!bs2.isLarge) bs2.enableLargeMode(); s += Block.subtract(bs1.blocks, bs2.blocks, 0, BLOCK_COUNT - 1, inv); } return s; }
break; case SUBTRACT: sum.subtract(bs); break; case INTERSECT:
break; case SUBTRACT: sum.subtract(bs); break; case INTERSECT:
else bs1.reset(); i = parseClass(data, i, out, bs1, icase, skipspaces, unicode, xml); bs.subtract(bs1); inRange = false; prev = -1;
else bs1.reset(); i = parseClass(data, i, out, bs1, icase, skipspaces, unicode, xml); bs.subtract(bs1); inRange = false; prev = -1;