Ejemplo n.º 1
0
 /**
  * Puts the given annotation lists into the given byte vector.
  *
  * @param panns an array of annotation writer lists.
  * @param out where the annotations must be put.
  */
 static void put(final AnnotationWriter[] panns, final ByteVector out) {
   int size = 1 + 2 * panns.length;
   for (int i = 0; i < panns.length; ++i) {
     size += panns[i] == null ? 0 : panns[i].getSize();
   }
   out.putInt(size).putByte(panns.length);
   for (int i = 0; i < panns.length; ++i) {
     AnnotationWriter aw = panns[i];
     AnnotationWriter last = null;
     int n = 0;
     while (aw != null) {
       ++n;
       aw.visitEnd(); // in case user forgot to call visitEnd
       aw.prev = last;
       last = aw;
       aw = aw.next;
     }
     out.putShort(n);
     aw = last;
     while (aw != null) {
       out.putByteArray(aw.bv.data, 0, aw.bv.length);
       aw = aw.prev;
     }
   }
 }
Ejemplo n.º 2
0
 /**
  * Puts the annotations of this annotation writer list into the given byte vector.
  *
  * @param out where the annotations must be put.
  */
 void put(final ByteVector out) {
   int n = 0;
   int size = 2;
   AnnotationWriter aw = this;
   AnnotationWriter last = null;
   while (aw != null) {
     ++n;
     size += aw.bv.length;
     aw.visitEnd(); // in case user forgot to call visitEnd
     aw.prev = last;
     last = aw;
     aw = aw.next;
   }
   out.putInt(size);
   out.putShort(n);
   aw = last;
   while (aw != null) {
     out.putByteArray(aw.bv.data, 0, aw.bv.length);
     aw = aw.prev;
   }
 }