2014-05-15 23:05:20 +00:00
|
|
|
package org.capnproto;
|
|
|
|
|
2014-05-19 12:43:58 +00:00
|
|
|
public final class AnyPointer {
|
2014-05-15 23:05:20 +00:00
|
|
|
|
2014-05-19 12:43:58 +00:00
|
|
|
public final static class Reader {
|
2014-10-08 15:12:52 +00:00
|
|
|
final SegmentReader segment;
|
|
|
|
final int pointer;
|
|
|
|
final int nestingLimit;
|
|
|
|
|
|
|
|
public Reader(SegmentReader segment, int pointer, int nestingLimit) {
|
|
|
|
this.segment = segment;
|
|
|
|
this.pointer = pointer;
|
|
|
|
this.nestingLimit = nestingLimit;
|
2014-05-15 23:05:20 +00:00
|
|
|
}
|
|
|
|
|
2014-10-08 02:35:08 +00:00
|
|
|
public final <T> T getAs(FromPointerReader<T> factory) {
|
2014-10-08 17:37:26 +00:00
|
|
|
return factory.fromPointerReader(this.segment, this.pointer, this.nestingLimit);
|
2014-10-06 15:15:33 +00:00
|
|
|
}
|
2014-05-15 23:05:20 +00:00
|
|
|
}
|
|
|
|
|
2014-05-24 14:12:44 +00:00
|
|
|
public static final class Builder {
|
2014-10-08 16:22:58 +00:00
|
|
|
final SegmentBuilder segment;
|
|
|
|
final int pointer;
|
2014-05-24 14:12:44 +00:00
|
|
|
|
2014-10-08 16:22:58 +00:00
|
|
|
public Builder(SegmentBuilder segment, int pointer) {
|
|
|
|
this.segment = segment;
|
|
|
|
this.pointer = pointer;
|
2014-05-24 14:12:44 +00:00
|
|
|
}
|
|
|
|
|
2014-10-08 02:35:08 +00:00
|
|
|
public final <T> T initAs(InitFromPointerBuilder<T> factory) {
|
2014-10-08 16:22:58 +00:00
|
|
|
return factory.initFromPointerBuilder(this.segment, this.pointer);
|
2014-10-08 02:35:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
public final <T> T initAs(InitSizedFromPointerBuilder<T> factory, int elementCount) {
|
2014-10-08 16:22:58 +00:00
|
|
|
return factory.initSizedFromPointerBuilder(this.segment, this.pointer, elementCount);
|
2014-05-24 14:12:44 +00:00
|
|
|
}
|
2014-10-02 15:54:37 +00:00
|
|
|
|
|
|
|
public final void clear() {
|
2014-10-08 16:22:58 +00:00
|
|
|
WireHelpers.zeroObject(this.segment, this.pointer);
|
|
|
|
this.segment.buffer.putLong(this.pointer * 8, 0L);
|
2014-10-02 15:54:37 +00:00
|
|
|
}
|
2014-05-24 14:12:44 +00:00
|
|
|
}
|
|
|
|
|
2014-05-15 23:05:20 +00:00
|
|
|
}
|