61 public X get(NativeType<X> type, long offset) {
62 if (type instanceof NativeType.OfInt intType) {
63 return (X) (Object) get(intType, offset);
64 } else if (type instanceof NativeType.OfDouble doubleType) {
65 return (X) (Object) get(doubleType, offset);
66 } else {
67 throw new UnsupportedOperationException();
68 }
69 }
70
71 public MemorySegment segment() {
72 return segment;
73 }
74
75 public static <X> Pointer<X> allocate(NativeType<X> type, SegmentAllocator allocator) {
76 MemorySegment segment = allocator.allocate(type.layout());
77 return new Pointer<>(segment);
78 }
79
80 public static <X> Pointer<X> allocate(NativeType<X> type, long size, SegmentAllocator allocator) {
81 MemorySegment segment = allocator.allocateArray(type.layout(), size);
82 return new Pointer<>(segment);
83 }
84
85 public static <X> Pointer<X> wrap(NativeType<X> type, MemorySegment segment) {
86 return new Pointer<>(segment);
87 }
88 }
|
61 public X get(NativeType<X> type, long offset) {
62 if (type instanceof NativeType.OfInt intType) {
63 return (X) (Object) get(intType, offset);
64 } else if (type instanceof NativeType.OfDouble doubleType) {
65 return (X) (Object) get(doubleType, offset);
66 } else {
67 throw new UnsupportedOperationException();
68 }
69 }
70
71 public MemorySegment segment() {
72 return segment;
73 }
74
75 public static <X> Pointer<X> allocate(NativeType<X> type, SegmentAllocator allocator) {
76 MemorySegment segment = allocator.allocate(type.layout());
77 return new Pointer<>(segment);
78 }
79
80 public static <X> Pointer<X> allocate(NativeType<X> type, long size, SegmentAllocator allocator) {
81 MemorySegment segment = allocator.allocate(type.layout(), size);
82 return new Pointer<>(segment);
83 }
84
85 public static <X> Pointer<X> wrap(NativeType<X> type, MemorySegment segment) {
86 return new Pointer<>(segment);
87 }
88 }
|