public StructBuilder addField(CharSequence fieldName, StructType fieldType, Object assoc) { return addField(fieldName, fieldType, 0, assoc); }
public int addStruct(byte[][] fieldNames, StructType[] fieldTypes //all fields are precede by array count byte ) { return addStruct(fieldNames, fieldTypes, null, null); }
public void visitAssociatedObject(int structId, AssocVisitor visitor) { int structIdx = StructRegistry.STRUCT_MASK&structId; Object[] objects = fieldLocals[structIdx]; int[] dims = fieldDims[structIdx]; StructType[] types = fieldTypes[structIdx]; for(int i=0; i<objects.length; i++) { if (null != objects[i]) { visitor.visit(objects[i],dims[i],types[i]); } } }
@Override public CompositeRouteFinish associatedObject(String key, Object object) { long fieldLookup = scs.registry.fieldLookup(key, structId); assert(-1 != fieldLookup) : "Unable to find associated key "+key; scs.registry.setAssociatedObject(fieldLookup, object); assert(fieldLookup == scs.registry.fieldLookupByIdentity(object, structId)); return this; }
public StructRegistry merge(StructRegistry source) { StructRegistry result = new StructRegistry(); for(int i=0; i<structCount; i++) { maxDims(fieldDims[i]); result.addStruct(fieldNames[i], fieldTypes[i], fieldDims[i]); } for(int i=0; i<source.structCount; i++) { result.addStruct(source.fieldNames[i], source.fieldTypes[i], source.fieldDims[i]); } return result; }
public boolean setAssociatedObject(final long id, Object localObject) { assert(null!=localObject) : "must not be null, not supported"; int structIdx = extractStructId(id); int fieldIdx = extractFieldPosition(id); return setAssoc(localObject, structIdx, fieldIdx); }
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; } }
public <T extends Object> T getAssociatedObject(long fieldId) { assert(fieldId>=0) : "bad fieldId"; return (T) this.fieldLocals[extractStructId(fieldId)][extractFieldPosition(fieldId)]; }
private void grow(int records) { if (records>fields.length) { int newSize = records*2; fields = grow(newSize, fields); fieldNames = grow(newSize, fieldNames); fieldTypes = grow(newSize, fieldTypes); fieldDims = grow(newSize, fieldDims); fieldLocals = grow(newSize, fieldLocals); fieldAttachedIndex = grow(newSize, fieldAttachedIndex); } }
private void visitSingleBlob(StructBlobListener visitor, int totalCount, final int[] curPos, final int[] curSize, int c) { visitor.value(channelReader, curPos, curSize, c, totalCount); } /**
public StructRegistry merge(StructRegistry source) { StructRegistry result = new StructRegistry(); for(int i=0; i<structCount; i++) { maxDims(fieldDims[i]); result.addStruct(fieldNames[i], fieldTypes[i], fieldDims[i]); } for(int i=0; i<source.structCount; i++) { result.addStruct(source.fieldNames[i], source.fieldTypes[i], source.fieldDims[i]); } return result; }
public StructBuilder addField(CharSequence fieldName, StructType fieldType, Object assoc) { return addField(fieldName, fieldType, 0, assoc); }
public int addStruct(byte[][] fieldNames, StructType[] fieldTypes, //all fields are precede by array count byte int[] fieldDims //Dimensionality, should be 0 for simple objects. ) { return addStruct(fieldNames, fieldTypes, fieldDims, null); }
public void visitAssociatedObject(int structId, AssocVisitor visitor) { int structIdx = StructRegistry.STRUCT_MASK&structId; Object[] objects = fieldLocals[structIdx]; int[] dims = fieldDims[structIdx]; StructType[] types = fieldTypes[structIdx]; for(int i=0; i<objects.length; i++) { if (null != objects[i]) { visitor.visit(objects[i],dims[i],types[i]); } } }
public StructBuilder addField(CharSequence fieldName, StructType fieldType) { return addField(fieldName, fieldType, 0, null); }
public int addStruct( byte[][] fieldNames, StructType[] fieldTypes, //all fields are precede by array count byte int[] fieldDim, //Dimensionality, should be 0 for simple objects. Object[] fieldAssoc ) { return addStruct(null,fieldNames,fieldTypes,fieldDim,fieldAssoc); }
public StructBuilder addField(CharSequence fieldName, StructType fieldType, int fieldDim) { return addField(fieldName,fieldType,fieldDim, null); }
public StructBuilder addField(CharSequence fieldName, StructType fieldType, int fieldDim) { return addField(fieldName,fieldType,fieldDim, null); }
public StructBuilder addField(CharSequence fieldName, StructType fieldType, Object assoc) { return addField(fieldName, fieldType, 0, assoc); }
public StructBuilder addField(CharSequence fieldName, StructType fieldType, int fieldDim) { return addField(fieldName,fieldType,fieldDim, null); }