Ejemplo n.º 1
0
  public void defrag(
      final ClassMetadata classMetadata,
      final LatinStringIO sio,
      final DefragmentContextImpl context,
      int classIndexID) {
    readName(sio, context.sourceBuffer());
    readName(sio, context.targetBuffer());

    int metaClassID = 0;
    context.writeInt(metaClassID);

    // ancestor ID
    context.copyID();

    context.writeInt(indexIDForWriting(classIndexID));

    final int aspectCount = context.readInt();

    if (aspectCount > classMetadata.declaredAspectCount()) {
      throw new IllegalStateException();
    }

    final IntByRef processedAspectCount = new IntByRef(0);

    classMetadata.forEachDeclaredAspect(
        new Procedure4() {
          public void apply(Object arg) {
            if (processedAspectCount.value >= aspectCount) {
              return;
            }
            ClassAspect aspect = (ClassAspect) arg;
            _family._field.defrag(classMetadata, aspect, sio, context);
            processedAspectCount.value++;
          }
        });
  }