public <T> boolean identityVisit(DataInputBlobReader<?> reader, T attachedObject, StructFieldVisitor<T> visitor) { int structId = DataInputBlobReader.getStructType(reader); int idx = StructRegistry.FIELD_MASK & (int)fieldLookupByIdentity(attachedObject, structId); if (idx>=0) { DataInputBlobReader.position(reader, DataInputBlobReader.readFromLastInt(reader, idx)); visitor.read((T)(fieldLocals[structId][idx]), reader); return true; } else { return false; } }
visitor.read((T) locals[i], reader, fieldIdBase | i);
visitor.read((T) locals[i], reader, fieldIdBase | i);
visitor.read((T) locals[i], reader, fieldIdBase | i);
public <T> boolean visit(DataInputBlobReader<?> reader, Class<T> attachedInstanceOf, StructFieldVisitor<T> visitor) { boolean result = false; int structId = DataInputBlobReader.getStructType(reader); if (structId>0) { Object[] locals = this.fieldLocals[StructRegistry.STRUCT_MASK & structId]; for(int i = 0; i<locals.length; i++) { if (attachedInstanceOf.isInstance(locals[i])) { int readFromLastInt = DataInputBlobReader.readFromLastInt(reader, i); //if no value then do not visit if (readFromLastInt>=0 && readFromLastInt<reader.length()) { result = true; DataInputBlobReader.position(reader, readFromLastInt); //logger.info("visit struct id {} {}",structId, Integer.toHexString(structId)); //logger.info("bbb reading {} from position {} pos {} from pipe {}",locals[i], readFromLastInt, i, reader.getBackingPipe(reader).id ); visitor.read((T) locals[i], reader); } } } } return result; }
public <T> boolean identityVisit(DataInputBlobReader<?> reader, T attachedObject, StructFieldVisitor<T> visitor) { int structId = DataInputBlobReader.getStructType(reader); long fieldIdBase = ((long)(IS_STRUCT_BIT|(STRUCT_MASK & structId)))<<STRUCT_OFFSET; int idx = StructRegistry.FIELD_MASK & (int)fieldLookupByIdentity(attachedObject, structId); if (idx>=0) { int readFromLastInt = DataInputBlobReader.readFromLastInt(reader, idx); if (readFromLastInt>=0) { DataInputBlobReader.position(reader, readFromLastInt); visitor.read((T)(fieldLocals[STRUCT_MASK&structId][idx]), reader, fieldIdBase | idx); return true; } else { return false; } } else { return false; } }
visitor.read((T) locals[i], reader, fieldIdBase | i);
public <T> boolean identityVisit(DataInputBlobReader<?> reader, T attachedObject, StructFieldVisitor<T> visitor) { int structId = DataInputBlobReader.getStructType(reader); long fieldIdBase = ((long)(IS_STRUCT_BIT|(STRUCT_MASK & structId)))<<STRUCT_OFFSET; int idx = StructRegistry.FIELD_MASK & (int)fieldLookupByIdentity(attachedObject, structId); if (idx>=0) { int readFromLastInt = DataInputBlobReader.readFromLastInt(reader, idx); if (readFromLastInt>=0) { DataInputBlobReader.position(reader, readFromLastInt); visitor.read((T)(fieldLocals[STRUCT_MASK&structId][idx]), reader, fieldIdBase | idx); return true; } else { return false; } } else { return false; } }