void convertHeap(ArrayStructureBB asbb, int pos, StructureMembers sm) throws java.io.IOException, InvalidRangeException { ByteBuffer bb = asbb.getByteBuffer(); for (StructureMembers.Member m : sm.getMembers()) { if (m.getDataType() == DataType.STRING) { m.setDataObject(ByteOrder.nativeOrder()); // the index is always written in "native order" int size = m.getSize(); int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) result[i] = headerParser.readHeapString(bb, destPos + i * 16); // 16 byte "heap ids" are in the ByteBuffer int index = asbb.addObjectToHeap(result); bb.order(ByteOrder.nativeOrder()); // the string index is always written in "native order" bb.putInt(destPos, index); // overwrite with the index into the StringHeap } else if (m.isVariableLength()) { int destPos = pos + m.getDataParam(); bb.order(ByteOrder.LITTLE_ENDIAN); ByteOrder bo = (ByteOrder) m.getDataObject(); int endian = bo.equals(ByteOrder.LITTLE_ENDIAN) ? RandomAccessFile.LITTLE_ENDIAN : RandomAccessFile.BIG_ENDIAN; Array vlenArray = headerParser.readHeapVlen(bb, destPos, m.getDataType(), endian); int index = asbb.addObjectToHeap(vlenArray); bb.order(ByteOrder.nativeOrder()); // the string index is always written in "native order" bb.putInt(destPos, index); // overwrite with the index into the StringHeap } } }
@Override protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return positions[recnum] + m.getDataParam(); } }
@Override protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return positions[recnum] + m.getDataParam(); } }
int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) int startPos = pos + m.getDataParam(); bb.order(ByteOrder.LITTLE_ENDIAN);
if (m.getDataType() == DataType.STRING) { int size = m.getSize(); int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) { int startPos = pos + m.getDataParam();
int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) int startPos = pos + m.getDataParam(); bb.order(ByteOrder.LITTLE_ENDIAN);
if (m.getDataType() == DataType.STRING) { int size = m.getSize(); int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) { int startPos = pos + m.getDataParam();
StructureMembers.Member m = members.getMember(i); Assert.assertEquals("Bad offset for " + m.getName(), offs[i], m.getDataParam()); StructureMembers.Member m = nested1_members.getMember(i); Assert.assertEquals("Bad offset for " + m.getName(), offs2[i], m.getDataParam());
private void convertHeap(ArrayStructureBB asbb, int pos, StructureMembers sm) throws java.io.IOException { ByteBuffer bb = asbb.getByteBuffer(); for (StructureMembers.Member m : sm.getMembers()) { if (m.getDataType() == DataType.STRING) { int size = m.getSize(); int destPos = pos + m.getDataParam(); String[] result = new String[size]; for (int i = 0; i < size; i++) { long addr = bb.getLong(pos); Pointer p = new MyPointer(addr); result[i] = p.getString(0, false); } int index = asbb.addObjectToHeap(result); bb.putInt(destPos, index); // overwrite with the index into the StringHeap } else if (m.isVariableLength()) { int destPos = pos + m.getDataParam(); Array result = decodeVlen(m.getDataType(), pos + m.getDataParam(), bb); int index = asbb.addObjectToHeap(result); bb.order(ByteOrder.nativeOrder()); // the string index is always written in "native order" bb.putInt(destPos, index); // overwrite with the index into the StringHeap } } }
public static int showOffsets(StructureMembers members, Indent indent, Formatter f) { int offset = 0; for (StructureMembers.Member m : members.getMembers()) { f.format("%s%s offset=%d (%d %s = %d bytes)%n", indent, m.getName(), m.getDataParam(), m.getSize(), m.getDataType(), m.getSizeBytes()); if (m.getStructureMembers() != null) { indent.incr(); StructureMembers nested = m.getStructureMembers(); f.format("%n%s%s == %d bytes%n", indent, nested.getName(), nested.getStructureSize()); showOffsets(nested, indent, f); indent.decr(); } } return offset; }
public static int showOffsets(StructureMembers members, Indent indent, Formatter f) { int offset = 0; for (StructureMembers.Member m : members.getMembers()) { f.format("%s%s offset=%d (%d %s = %d bytes)%n", indent, m.getName(), m.getDataParam(), m.getSize(), m.getDataType(), m.getSizeBytes()); if (m.getStructureMembers() != null) { indent.incr(); StructureMembers nested = m.getStructureMembers(); f.format("%n%s%s == %d bytes%n", indent, nested.getName(), nested.getStructureSize()); showOffsets(nested, indent, f); indent.decr(); } } return offset; }
public static int showOffsets(StructureMembers members, Indent indent, Formatter f) { int offset = 0; for (StructureMembers.Member m : members.getMembers()) { f.format("%s%s offset=%d (%d %s = %d bytes)%n", indent, m.getName(), m.getDataParam(), m.getSize(), m.getDataType(), m.getSizeBytes()); if (m.getStructureMembers() != null) { indent.incr(); StructureMembers nested = m.getStructureMembers(); f.format("%n%s%s == %d bytes%n", indent, nested.getName(), nested.getStructureSize()); showOffsets(nested, indent, f); indent.decr(); } } return offset; }
@Override protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return positions[recnum] + m.getDataParam(); } }
protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return bb_offset + recnum * getStructureSize() + m.getDataParam(); }
@Override protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return bb_offset + orgRecnum[recnum] * getStructureSize() + m.getDataParam(); } }
protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return bb_offset + recnum * getStructureSize() + m.getDataParam(); }
protected int calcOffsetSetOrder(int recnum, StructureMembers.Member m) { if (null != m.getDataObject()) bbuffer.order( (ByteOrder) m.getDataObject()); return bb_offset + recnum * getStructureSize() + m.getDataParam(); }