Пример #1
0
 protected static int inplaceor(int[] bitmap, IteratingRLW32 i) {
   int pos = 0;
   int s;
   while ((s = i.size()) > 0) {
     if (pos + s < bitmap.length) {
       final int L = i.getRunningLength();
       if (i.getRunningBit()) java.util.Arrays.fill(bitmap, pos, pos + L, ~0);
       pos += L;
       final int LR = i.getNumberOfLiteralWords();
       for (int k = 0; k < LR; ++k) bitmap[pos++] |= i.getLiteralWordAt(k);
       if (!i.next()) {
         return pos;
       }
     } else {
       int howmany = bitmap.length - pos;
       int l = i.getRunningLength();
       if (pos + l > bitmap.length) {
         if (i.getRunningBit()) {
           java.util.Arrays.fill(bitmap, pos, bitmap.length, ~0);
         }
         i.discardFirstWords(howmany);
         return bitmap.length;
       }
       if (i.getRunningBit()) java.util.Arrays.fill(bitmap, pos, pos + l, ~0);
       pos += l;
       for (int k = 0; pos < bitmap.length; ++k) bitmap[pos++] |= i.getLiteralWordAt(k);
       i.discardFirstWords(howmany);
       return pos;
     }
   }
   return pos;
 }
Пример #2
0
 protected static int inplaceand(int[] bitmap, IteratingRLW32 i) {
   int pos = 0;
   int s;
   while ((s = i.size()) > 0) {
     if (pos + s < bitmap.length) {
       final int L = i.getRunningLength();
       if (!i.getRunningBit()) {
         for (int k = pos; k < pos + L; ++k) bitmap[k] = 0;
       }
       pos += L;
       final int LR = i.getNumberOfLiteralWords();
       for (int k = 0; k < LR; ++k) bitmap[pos++] &= i.getLiteralWordAt(k);
       if (!i.next()) {
         return pos;
       }
     } else {
       int howMany = bitmap.length - pos;
       int l = i.getRunningLength();
       if (pos + l > bitmap.length) {
         if (!i.getRunningBit()) {
           for (int k = pos; k < bitmap.length; ++k) bitmap[k] = 0;
         }
         i.discardFirstWords(howMany);
         return bitmap.length;
       }
       if (!i.getRunningBit()) for (int k = pos; k < pos + l; ++k) bitmap[k] = 0;
       pos += l;
       for (int k = 0; pos < bitmap.length; ++k) bitmap[pos++] &= i.getLiteralWordAt(k);
       i.discardFirstWords(howMany);
       return pos;
     }
   }
   return pos;
 }
Пример #3
0
 /**
  * Write out the content of the iterator, but as if it were all zeros.
  *
  * @param container where we write
  * @param i the iterator
  */
 protected static void dischargeAsEmpty(final BitmapStorage32 container, final IteratingRLW32 i) {
   while (i.size() > 0) {
     container.addStreamOfEmptyWords(false, i.size());
     i.next();
   }
 }