1 // Generated by jextract 2 3 package jdk.internal.ffi.generated.iouring; 4 5 import java.lang.invoke.*; 6 import java.lang.foreign.*; 7 import java.nio.ByteOrder; 8 import java.util.*; 9 import java.util.function.*; 10 import java.util.stream.*; 11 12 import static java.lang.foreign.ValueLayout.*; 13 import static java.lang.foreign.MemoryLayout.PathElement.*; 14 15 /** 16 * {@snippet lang=c : 17 * struct sockaddr_storage { 18 * sa_family_t ss_family; 19 * char __ss_padding[118]; 20 * unsigned long __ss_align; 21 * } 22 * } 23 */ 24 @SuppressWarnings("restricted") public class sockaddr_storage { 25 26 sockaddr_storage() { 27 // Suppresses public default constructor, ensuring non-instantiability, 28 // but allows generated subclasses in same package. 29 } 30 31 private static final GroupLayout $LAYOUT = MemoryLayout.structLayout( 32 iouring_h.C_SHORT.withName("ss_family"), 33 MemoryLayout.sequenceLayout(118, iouring_h.C_CHAR).withName("__ss_padding"), 34 iouring_h.C_LONG.withName("__ss_align") 35 ).withName("sockaddr_storage"); 36 37 public static final GroupLayout $LAYOUT() { 38 return $LAYOUT; 39 } 40 41 private static final long ss_family$OFFSET = 0; 42 private static final OfShort ss_family$LAYOUT = (OfShort)$LAYOUT.select(groupElement("ss_family")); 43 44 /** 45 * Getter for field: 46 * {@snippet lang=c : 47 * sa_family_t ss_family 48 * } 49 */ 50 public static short ss_family(MemorySegment struct) { 51 return struct.get(ss_family$LAYOUT, ss_family$OFFSET); 52 } 53 54 /** 55 * Setter for field: 56 * {@snippet lang=c : 57 * sa_family_t ss_family 58 * } 59 */ 60 public static void ss_family(MemorySegment struct, short fieldValue) { 61 struct.set(ss_family$LAYOUT, ss_family$OFFSET, fieldValue); 62 } 63 64 private static final long __ss_padding$OFFSET = 2; 65 private static final long __ss_padding$SIZE = 118; 66 67 /** 68 * Getter for field: 69 * {@snippet lang=c : 70 * char __ss_padding[118] 71 * } 72 */ 73 public static MemorySegment __ss_padding(MemorySegment struct) { 74 return struct.asSlice(__ss_padding$OFFSET, __ss_padding$SIZE); 75 } 76 77 /** 78 * Setter for field: 79 * {@snippet lang=c : 80 * char __ss_padding[118] 81 * } 82 */ 83 public static void __ss_padding(MemorySegment struct, MemorySegment fieldValue) { 84 MemorySegment.copy(fieldValue, 0L, struct, __ss_padding$OFFSET, __ss_padding$SIZE); 85 } 86 87 private static final long __ss_align$OFFSET = 120; 88 private static final OfLong __ss_align$LAYOUT = (OfLong)$LAYOUT.select(groupElement("__ss_align")); 89 90 /** 91 * Getter for field: 92 * {@snippet lang=c : 93 * unsigned long __ss_align 94 * } 95 */ 96 public static long __ss_align(MemorySegment struct) { 97 return struct.get(__ss_align$LAYOUT, __ss_align$OFFSET); 98 } 99 100 /** 101 * Setter for field: 102 * {@snippet lang=c : 103 * unsigned long __ss_align 104 * } 105 */ 106 public static void __ss_align(MemorySegment struct, long fieldValue) { 107 struct.set(__ss_align$LAYOUT, __ss_align$OFFSET, fieldValue); 108 } 109 110 public static MemorySegment asSlice(MemorySegment array, long index) { 111 return array.asSlice($LAYOUT().byteSize() * index); 112 } 113 114 public static long sizeof() { return $LAYOUT().byteSize(); } 115 116 public static MemorySegment allocate(SegmentAllocator allocator) { 117 return allocator.allocate($LAYOUT()); 118 } 119 120 public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) { 121 return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT())); 122 } 123 124 public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) { 125 return reinterpret(addr, 1, scope, cleanup); 126 } 127 128 public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) { 129 return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup); 130 } 131 } 132