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