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 in6_addr {
 18  *     union {
 19  *         uint8_t __u6_addr8[16];
 20  *         uint16_t __u6_addr16[8];
 21  *         uint32_t __u6_addr32[4];
 22  *     } __in6_u;
 23  * }
 24  * }
 25  */
 26 @SuppressWarnings("restricted") public class in6_addr {
 27 
 28     in6_addr() {
 29         // Suppresses public default constructor, ensuring non-instantiability,
 30         // but allows generated subclasses in same package.
 31     }
 32 
 33     private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
 34         in6_addr.__in6_u.$LAYOUT().withName("__in6_u")
 35     ).withName("in6_addr");
 36 
 37     public static final GroupLayout $LAYOUT() {
 38         return $LAYOUT;
 39     }
 40 
 41     /**
 42      * {@snippet lang=c :
 43      * union {
 44      *     uint8_t __u6_addr8[16];
 45      *     uint16_t __u6_addr16[8];
 46      *     uint32_t __u6_addr32[4];
 47      * }
 48      * }
 49      */
 50     public static class __in6_u {
 51 
 52         __in6_u() {
 53             // Suppresses public default constructor, ensuring non-instantiability,
 54             // but allows generated subclasses in same package.
 55         }
 56 
 57         private static final GroupLayout $LAYOUT = MemoryLayout.unionLayout(
 58             MemoryLayout.sequenceLayout(16, iouring_h.C_CHAR).withName("__u6_addr8"),
 59             MemoryLayout.sequenceLayout(8, iouring_h.C_SHORT).withName("__u6_addr16"),
 60             MemoryLayout.sequenceLayout(4, iouring_h.C_INT).withName("__u6_addr32")
 61         ).withName("$anon$223:5");
 62 
 63         public static final GroupLayout $LAYOUT() {
 64             return $LAYOUT;
 65         }
 66 
 67         private static final long __u6_addr8$OFFSET = 0;
 68         private static final long __u6_addr8$SIZE = 16;
 69 
 70         /**
 71          * Getter for field:
 72          * {@snippet lang=c :
 73          * uint8_t __u6_addr8[16]
 74          * }
 75          */
 76         public static MemorySegment __u6_addr8(MemorySegment union) {
 77             return union.asSlice(__u6_addr8$OFFSET, __u6_addr8$SIZE);
 78         }
 79 
 80         /**
 81          * Setter for field:
 82          * {@snippet lang=c :
 83          * uint8_t __u6_addr8[16]
 84          * }
 85          */
 86         public static void __u6_addr8(MemorySegment union, MemorySegment fieldValue) {
 87             MemorySegment.copy(fieldValue, 0L, union, __u6_addr8$OFFSET, __u6_addr8$SIZE);
 88         }
 89 
 90         private static final long __u6_addr16$OFFSET = 0;
 91         private static final long __u6_addr16$SIZE = 16;
 92 
 93         /**
 94          * Getter for field:
 95          * {@snippet lang=c :
 96          * uint16_t __u6_addr16[8]
 97          * }
 98          */
 99         public static MemorySegment __u6_addr16(MemorySegment union) {
100             return union.asSlice(__u6_addr16$OFFSET, __u6_addr16$SIZE);
101         }
102 
103         /**
104          * Setter for field:
105          * {@snippet lang=c :
106          * uint16_t __u6_addr16[8]
107          * }
108          */
109         public static void __u6_addr16(MemorySegment union, MemorySegment fieldValue) {
110             MemorySegment.copy(fieldValue, 0L, union, __u6_addr16$OFFSET, __u6_addr16$SIZE);
111         }
112 
113         private static final long __u6_addr32$OFFSET = 0;
114         private static final long __u6_addr32$SIZE = 16;
115 
116         /**
117          * Getter for field:
118          * {@snippet lang=c :
119          * uint32_t __u6_addr32[4]
120          * }
121          */
122         public static MemorySegment __u6_addr32(MemorySegment union) {
123             return union.asSlice(__u6_addr32$OFFSET, __u6_addr32$SIZE);
124         }
125 
126         /**
127          * Setter for field:
128          * {@snippet lang=c :
129          * uint32_t __u6_addr32[4]
130          * }
131          */
132         public static void __u6_addr32(MemorySegment union, MemorySegment fieldValue) {
133             MemorySegment.copy(fieldValue, 0L, union, __u6_addr32$OFFSET, __u6_addr32$SIZE);
134         }
135 
136         public static MemorySegment asSlice(MemorySegment array, long index) {
137             return array.asSlice($LAYOUT().byteSize() * index);
138         }
139 
140         public static long sizeof() { return $LAYOUT().byteSize(); }
141 
142         public static MemorySegment allocate(SegmentAllocator allocator) {
143             return allocator.allocate($LAYOUT());
144         }
145 
146         public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
147             return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT()));
148         }
149 
150         public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) {
151             return reinterpret(addr, 1, scope, cleanup);
152         }
153 
154         public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) {
155             return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup);
156         }
157     }
158 
159     private static final long __in6_u$OFFSET = 0;
160     private static final long __in6_u$SIZE = 16;
161 
162     /**
163      * Getter for field:
164      * {@snippet lang=c :
165      * union (unnamed union at /usr/include/netinet/in.h:223:5) __in6_u
166      * }
167      */
168     public static MemorySegment __in6_u(MemorySegment struct) {
169         return struct.asSlice(__in6_u$OFFSET, __in6_u$SIZE);
170     }
171 
172     /**
173      * Setter for field:
174      * {@snippet lang=c :
175      * union (unnamed union at /usr/include/netinet/in.h:223:5) __in6_u
176      * }
177      */
178     public static void __in6_u(MemorySegment struct, MemorySegment fieldValue) {
179         MemorySegment.copy(fieldValue, 0L, struct, __in6_u$OFFSET, __in6_u$SIZE);
180     }
181 
182     public static MemorySegment asSlice(MemorySegment array, long index) {
183         return array.asSlice($LAYOUT().byteSize() * index);
184     }
185 
186     public static long sizeof() { return $LAYOUT().byteSize(); }
187 
188     public static MemorySegment allocate(SegmentAllocator allocator) {
189         return allocator.allocate($LAYOUT());
190     }
191 
192     public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
193         return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT()));
194     }
195 
196     public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) {
197         return reinterpret(addr, 1, scope, cleanup);
198     }
199 
200     public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) {
201         return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup);
202     }
203 }
204