// Generatable but for now somewhat handcrafted to encapsulate the layouts // generated by JStruct, with some additional memory handles and accessors to // mirror that of the what jextract generates as dynamic constants. package jdk.internal.sys; import jdk.incubator.foreign.MemoryLayout; import jdk.incubator.foreign.MemoryLayout.PathElement; import jdk.incubator.foreign.MemoryLayouts; import java.lang.invoke.VarHandle; final class in_h$constants { private static final MemoryLayout Cin_addr$LAYOUT = MemoryLayout.ofStruct( MemoryLayouts.BITS_32_BE.withName("s_addr") // network byte order ).withName("in_addr"); private static final VarHandle VH_s_addr = Cin_addr$LAYOUT.varHandle(int.class, PathElement.groupElement("s_addr")); static final MemoryLayout Cin_addr$LAYOUT() { return Cin_addr$LAYOUT; } static final VarHandle s_addr$VH() { return VH_s_addr; } private static final MemoryLayout Csockaddr_in$LAYOUT = MemoryLayout.ofStruct( MemoryLayouts.BITS_8_LE.withName("sin_len"), MemoryLayouts.BITS_8_LE.withName("sin_family"), MemoryLayouts.BITS_16_BE.withName("sin_port"), // network byte order Cin_addr$LAYOUT, MemoryLayout.ofSequence(8, MemoryLayouts.BITS_8_LE).withName("sin_zero") ).withName("sockaddr_in"); private static final VarHandle sin_len$VH = Csockaddr_in$LAYOUT.varHandle(byte.class, PathElement.groupElement("sin_len")); private static final VarHandle sin_family$VH = Csockaddr_in$LAYOUT.varHandle(byte.class, PathElement.groupElement("sin_family")); private static final VarHandle sin_port$VH = Csockaddr_in$LAYOUT.varHandle(short.class, PathElement.groupElement("sin_port")); static MemoryLayout Csockaddr_in$LAYOUT() { return Csockaddr_in$LAYOUT; } static final VarHandle sin_len$VH() { return sin_len$VH; } static final VarHandle sin_family$VH() { return sin_family$VH; } static final VarHandle sin_port$VH() { return sin_port$VH; } }