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_in {
 18  *     sa_family_t sin_family;
 19  *     in_port_t sin_port;
 20  *     struct in_addr sin_addr;
 21  *     unsigned char sin_zero[8];
 22  * }
 23  * }
 24  */
 25 @SuppressWarnings("restricted") public class sockaddr_in {
 26 
 27     sockaddr_in() {
 28         // Suppresses public default constructor, ensuring non-instantiability,
 29         // but allows generated subclasses in same package.
 30     }
 31 
 32     private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
 33         iouring_h.C_SHORT.withName("sin_family"),
 34         iouring_h.C_SHORT.withName("sin_port"),
 35         in_addr.$LAYOUT().withName("sin_addr"),
 36         MemoryLayout.sequenceLayout(8, iouring_h.C_CHAR).withName("sin_zero")
 37     ).withName("sockaddr_in");
 38 
 39     public static final GroupLayout $LAYOUT() {
 40         return $LAYOUT;
 41     }
 42 
 43     private static final long sin_family$OFFSET = 0;
 44     private static final OfShort sin_family$LAYOUT = (OfShort)$LAYOUT.select(groupElement("sin_family"));
 45 
 46     /**
 47      * Getter for field:
 48      * {@snippet lang=c :
 49      * sa_family_t sin_family
 50      * }
 51      */
 52     public static short sin_family(MemorySegment struct) {
 53         return struct.get(sin_family$LAYOUT, sin_family$OFFSET);
 54     }
 55 
 56     /**
 57      * Setter for field:
 58      * {@snippet lang=c :
 59      * sa_family_t sin_family
 60      * }
 61      */
 62     public static void sin_family(MemorySegment struct, short fieldValue) {
 63         struct.set(sin_family$LAYOUT, sin_family$OFFSET, fieldValue);
 64     }
 65 
 66     private static final long sin_port$OFFSET = 2;
 67     private static final OfShort sin_port$LAYOUT = ((OfShort)$LAYOUT.select(groupElement("sin_port"))).withOrder(ByteOrder.BIG_ENDIAN);
 68 
 69     /**
 70      * Getter for field:
 71      * {@snippet lang=c :
 72      * in_port_t sin_port
 73      * }
 74      */
 75     public static short sin_port(MemorySegment struct) {
 76         return struct.get(sin_port$LAYOUT, sin_port$OFFSET);
 77     }
 78 
 79     /**
 80      * Setter for field:
 81      * {@snippet lang=c :
 82      * in_port_t sin_port
 83      * }
 84      */
 85     public static void sin_port(MemorySegment struct, short fieldValue) {
 86         struct.set(sin_port$LAYOUT, sin_port$OFFSET, fieldValue);
 87     }
 88 
 89     private static final long sin_addr$OFFSET = 4;
 90     private static final long sin_addr$SIZE = 4;
 91 
 92     /**
 93      * Getter for field:
 94      * {@snippet lang=c :
 95      * struct in_addr sin_addr
 96      * }
 97      */
 98     public static MemorySegment sin_addr(MemorySegment struct) {
 99         return struct.asSlice(sin_addr$OFFSET, sin_addr$SIZE);
100     }
101 
102     /**
103      * Setter for field:
104      * {@snippet lang=c :
105      * struct in_addr sin_addr
106      * }
107      */
108     public static void sin_addr(MemorySegment struct, MemorySegment fieldValue) {
109         MemorySegment.copy(fieldValue, 0L, struct, sin_addr$OFFSET, sin_addr$SIZE);
110     }
111 
112     private static final long sin_zero$OFFSET = 8;
113     private static final long sin_zero$SIZE = 8;
114 
115     /**
116      * Getter for field:
117      * {@snippet lang=c :
118      * unsigned char sin_zero[8]
119      * }
120      */
121     public static MemorySegment sin_zero(MemorySegment struct) {
122         return struct.asSlice(sin_zero$OFFSET, sin_zero$SIZE);
123     }
124 
125     /**
126      * Setter for field:
127      * {@snippet lang=c :
128      * unsigned char sin_zero[8]
129      * }
130      */
131     public static void sin_zero(MemorySegment struct, MemorySegment fieldValue) {
132         MemorySegment.copy(fieldValue, 0L, struct, sin_zero$OFFSET, sin_zero$SIZE);
133     }
134 
135     public static MemorySegment asSlice(MemorySegment array, long index) {
136         return array.asSlice($LAYOUT().byteSize() * index);
137     }
138 
139     public static long sizeof() { return $LAYOUT().byteSize(); }
140 
141     public static MemorySegment allocate(SegmentAllocator allocator) {
142         return allocator.allocate($LAYOUT());
143     }
144 
145     public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
146         return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, $LAYOUT()));
147     }
148 
149     public static MemorySegment reinterpret(MemorySegment addr, Arena scope, Consumer<MemorySegment> cleanup) {
150         return reinterpret(addr, 1, scope, cleanup);
151     }
152 
153     public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena scope, Consumer<MemorySegment> cleanup) {
154         return addr.reinterpret($LAYOUT().byteSize() * elementCount, scope, cleanup);
155     }
156 }
157