1 
 2 // Generatable but for now somewhat handcrafted to encapsulate the layouts
 3 // generated by JStruct, with some additional memory handles and accessors to
 4 // mirror that of the what jextract generates as dynamic constants.
 5 package jdk.internal.sys;
 6 
 7 import jdk.incubator.foreign.MemoryLayout;
 8 import jdk.incubator.foreign.MemoryLayout.PathElement;
 9 import jdk.incubator.foreign.MemoryLayouts;
10 import java.lang.invoke.VarHandle;
11 
12 final class in_h$constants {
13 
14     private static final MemoryLayout Cin_addr$LAYOUT = MemoryLayout.ofStruct(
15         MemoryLayouts.BITS_32_BE.withName("s_addr")  // network byte order
16     ).withName("in_addr");
17     private static final VarHandle VH_s_addr = Cin_addr$LAYOUT.varHandle(int.class, PathElement.groupElement("s_addr"));
18     static final MemoryLayout Cin_addr$LAYOUT() { return Cin_addr$LAYOUT; }
19     static final VarHandle s_addr$VH() {
20         return VH_s_addr;
21     }
22 
23     private static final MemoryLayout Csockaddr_in$LAYOUT = MemoryLayout.ofStruct(
24         MemoryLayouts.BITS_8_LE.withName("sin_len"),
25         MemoryLayouts.BITS_8_LE.withName("sin_family"),
26         MemoryLayouts.BITS_16_BE.withName("sin_port"), // network byte order
27         Cin_addr$LAYOUT,
28         MemoryLayout.ofSequence(8, MemoryLayouts.BITS_8_LE).withName("sin_zero")
29     ).withName("sockaddr_in");
30     private static final VarHandle sin_len$VH = Csockaddr_in$LAYOUT.varHandle(byte.class, PathElement.groupElement("sin_len"));
31     private static final VarHandle sin_family$VH = Csockaddr_in$LAYOUT.varHandle(byte.class, PathElement.groupElement("sin_family"));
32     private static final VarHandle sin_port$VH = Csockaddr_in$LAYOUT.varHandle(short.class, PathElement.groupElement("sin_port"));
33     static MemoryLayout Csockaddr_in$LAYOUT() { return Csockaddr_in$LAYOUT; }
34     static final VarHandle sin_len$VH() {
35         return sin_len$VH;
36     }
37     static final VarHandle sin_family$VH() {
38         return sin_family$VH;
39     }
40     static final VarHandle sin_port$VH() {
41         return sin_port$VH;
42     }
43 }