1 // Generated by jextract
2
3 package oracle.code.onnx.foreign;
4
5 import java.lang.invoke.*;
6 import java.lang.foreign.*;
7 import java.nio.ByteOrder;
8 import java.util.*;
9 import java.util.function.*;
10 import java.util.stream.*;
11
12 import static java.lang.foreign.ValueLayout.*;
13 import static java.lang.foreign.MemoryLayout.PathElement.*;
14
15 public class OrtGenApi$shared {
16
17 OrtGenApi$shared() {
18 // Should not be called directly
19 }
20
21 public static final ValueLayout.OfBoolean C_BOOL = (ValueLayout.OfBoolean) Linker.nativeLinker().canonicalLayouts().get("bool");
22 public static final ValueLayout.OfByte C_CHAR =(ValueLayout.OfByte)Linker.nativeLinker().canonicalLayouts().get("char");
23 public static final ValueLayout.OfShort C_SHORT = (ValueLayout.OfShort) Linker.nativeLinker().canonicalLayouts().get("short");
24 public static final ValueLayout.OfInt C_INT = (ValueLayout.OfInt) Linker.nativeLinker().canonicalLayouts().get("int");
25 public static final ValueLayout.OfLong C_LONG_LONG = (ValueLayout.OfLong) Linker.nativeLinker().canonicalLayouts().get("long long");
26 public static final ValueLayout.OfFloat C_FLOAT = (ValueLayout.OfFloat) Linker.nativeLinker().canonicalLayouts().get("float");
27 public static final ValueLayout.OfDouble C_DOUBLE = (ValueLayout.OfDouble) Linker.nativeLinker().canonicalLayouts().get("double");
28 public static final AddressLayout C_POINTER = ((AddressLayout) Linker.nativeLinker().canonicalLayouts().get("void*"))
29 .withTargetLayout(MemoryLayout.sequenceLayout(java.lang.Long.MAX_VALUE, C_CHAR));
30 public static final ValueLayout.OfLong C_LONG = (ValueLayout.OfLong) Linker.nativeLinker().canonicalLayouts().get("long");
31
32 static final boolean TRACE_DOWNCALLS = Boolean.getBoolean("jextract.trace.downcalls");
33
34 static void traceDowncall(String name, Object... args) {
35 String traceArgs = Arrays.stream(args)
36 .map(Object::toString)
37 .collect(Collectors.joining(", "));
38 System.out.printf("%s(%s)\n", name, traceArgs);
39 }
40
41 static MethodHandle upcallHandle(Class<?> fi, String name, FunctionDescriptor fdesc) {
42 try {
43 return MethodHandles.lookup().findVirtual(fi, name, fdesc.toMethodType());
44 } catch (ReflectiveOperationException ex) {
45 throw new AssertionError(ex);
46 }
47 }
48
49 static MemoryLayout align(MemoryLayout layout, long align) {
50 return switch (layout) {
51 case PaddingLayout p -> p;
52 case ValueLayout v -> v.withByteAlignment(align);
53 case GroupLayout g -> {
54 MemoryLayout[] alignedMembers = g.memberLayouts().stream()
55 .map(m -> align(m, align)).toArray(MemoryLayout[]::new);
56 yield g instanceof StructLayout ?
57 MemoryLayout.structLayout(alignedMembers) : MemoryLayout.unionLayout(alignedMembers);
58 }
59 case SequenceLayout s -> MemoryLayout.sequenceLayout(s.elementCount(), align(s.elementLayout(), align));
60 };
61 }
62 }
63