// Generated by jextract package demo.sqlite; import java.lang.invoke.*; import java.lang.foreign.*; import java.nio.ByteOrder; import java.util.*; import java.util.function.*; import java.util.stream.*; import static java.lang.foreign.ValueLayout.*; import static java.lang.foreign.MemoryLayout.PathElement.*; public class sqlite3_h$shared { sqlite3_h$shared() { // Should not be called directly } public static final ValueLayout.OfBoolean C_BOOL = (ValueLayout.OfBoolean) Linker.nativeLinker().canonicalLayouts().get("bool"); public static final ValueLayout.OfByte C_CHAR =(ValueLayout.OfByte)Linker.nativeLinker().canonicalLayouts().get("char"); public static final ValueLayout.OfShort C_SHORT = (ValueLayout.OfShort) Linker.nativeLinker().canonicalLayouts().get("short"); public static final ValueLayout.OfInt C_INT = (ValueLayout.OfInt) Linker.nativeLinker().canonicalLayouts().get("int"); public static final ValueLayout.OfLong C_LONG_LONG = (ValueLayout.OfLong) Linker.nativeLinker().canonicalLayouts().get("long long"); public static final ValueLayout.OfFloat C_FLOAT = (ValueLayout.OfFloat) Linker.nativeLinker().canonicalLayouts().get("float"); public static final ValueLayout.OfDouble C_DOUBLE = (ValueLayout.OfDouble) Linker.nativeLinker().canonicalLayouts().get("double"); public static final AddressLayout C_POINTER = ((AddressLayout) Linker.nativeLinker().canonicalLayouts().get("void*")) .withTargetLayout(MemoryLayout.sequenceLayout(java.lang.Long.MAX_VALUE, C_CHAR)); public static final ValueLayout.OfLong C_LONG = (ValueLayout.OfLong) Linker.nativeLinker().canonicalLayouts().get("long"); static final boolean TRACE_DOWNCALLS = Boolean.getBoolean("jextract.trace.downcalls"); static void traceDowncall(String name, Object... args) { String traceArgs = Arrays.stream(args) .map(Object::toString) .collect(Collectors.joining(", ")); System.out.printf("%s(%s)\n", name, traceArgs); } static MethodHandle upcallHandle(Class fi, String name, FunctionDescriptor fdesc) { try { return MethodHandles.lookup().findVirtual(fi, name, fdesc.toMethodType()); } catch (ReflectiveOperationException ex) { throw new AssertionError(ex); } } static MemoryLayout align(MemoryLayout layout, long align) { return switch (layout) { case PaddingLayout p -> p; case ValueLayout v -> v.withByteAlignment(align); case GroupLayout g -> { MemoryLayout[] alignedMembers = g.memberLayouts().stream() .map(m -> align(m, align)).toArray(MemoryLayout[]::new); yield g instanceof StructLayout ? MemoryLayout.structLayout(alignedMembers) : MemoryLayout.unionLayout(alignedMembers); } case SequenceLayout s -> MemoryLayout.sequenceLayout(s.elementCount(), align(s.elementLayout(), align)); }; } }