diff a/src/java.base/macosx/classes/jdk/internal/sys/in_h$constants.java b/src/java.base/macosx/classes/jdk/internal/sys/in_h$constants.java --- /dev/null +++ b/src/java.base/macosx/classes/jdk/internal/sys/in_h$constants.java @@ -0,0 +1,43 @@ + +// 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; + } +}