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 }