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