setTextPointer
This commit is contained in:
parent
2ba6629c1b
commit
33fb16a5cd
2 changed files with 22 additions and 10 deletions
|
@ -7,7 +7,7 @@ public class Text {
|
||||||
public static final class Reader {
|
public static final class Reader {
|
||||||
public final ByteBuffer buffer;
|
public final ByteBuffer buffer;
|
||||||
public final int offset; // in bytes
|
public final int offset; // in bytes
|
||||||
public final int size; // in bytes
|
public final int size; // in bytes, not including NUL terminator
|
||||||
|
|
||||||
public Reader(ByteBuffer buffer, int offset, int size) {
|
public Reader(ByteBuffer buffer, int offset, int size) {
|
||||||
this.buffer = buffer;
|
this.buffer = buffer;
|
||||||
|
@ -44,9 +44,15 @@ public class Text {
|
||||||
|
|
||||||
public static final class Builder {
|
public static final class Builder {
|
||||||
public final ByteBuffer buffer;
|
public final ByteBuffer buffer;
|
||||||
|
public final int offset;
|
||||||
|
|
||||||
public Builder(ByteBuffer buffer) {
|
// size not including the NUL terminator
|
||||||
|
public final int size;
|
||||||
|
|
||||||
|
public Builder(ByteBuffer buffer, int offset, int size) {
|
||||||
this.buffer = buffer;
|
this.buffer = buffer;
|
||||||
|
this.offset = offset;
|
||||||
|
this.size = size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -61,9 +61,9 @@ final class WireHelpers {
|
||||||
}
|
}
|
||||||
|
|
||||||
// size is in bytes
|
// size is in bytes
|
||||||
public static void initTextPointer(int refOffset,
|
public static Text.Builder initTextPointer(int refOffset,
|
||||||
SegmentBuilder segment,
|
SegmentBuilder segment,
|
||||||
int size) {
|
int size) {
|
||||||
//# The byte list must include a NUL terminator.
|
//# The byte list must include a NUL terminator.
|
||||||
int byteSize = size + 1;
|
int byteSize = size + 1;
|
||||||
|
|
||||||
|
@ -73,13 +73,19 @@ final class WireHelpers {
|
||||||
//# Initialize the pointer.
|
//# Initialize the pointer.
|
||||||
ListPointer.set(segment.buffer, refOffset, FieldSize.BYTE, byteSize);
|
ListPointer.set(segment.buffer, refOffset, FieldSize.BYTE, byteSize);
|
||||||
|
|
||||||
throw new Error("unimplemented");
|
return new Text.Builder(segment.buffer, ptrOffset, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setTextPointer(int refOffset,
|
public static Text.Builder setTextPointer(int refOffset,
|
||||||
SegmentBuilder segment,
|
SegmentBuilder segment,
|
||||||
Text.Reader value) {
|
Text.Reader value) {
|
||||||
throw new Error("unimplemented");
|
Text.Builder builder = initTextPointer(refOffset, segment, value.size);
|
||||||
|
|
||||||
|
// TODO is there a way to do this with bulk methods?
|
||||||
|
for (int i = 0; i < builder.size; ++i) {
|
||||||
|
builder.buffer.put(builder.offset + i, value.buffer.get(value.offset + i));
|
||||||
|
}
|
||||||
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static StructReader readStructPointer(SegmentReader segment,
|
public static StructReader readStructPointer(SegmentReader segment,
|
||||||
|
|
Loading…
Reference in a new issue