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 /**
16 * {@snippet lang=c :
17 * struct OrtThreadPoolCallbacksConfig {
18 * uint32_t version;
19 * OrtThreadPoolWorkEnqueueFn on_enqueue;
20 * OrtThreadPoolWorkStartFn on_start_work;
21 * OrtThreadPoolWorkStopFn on_stop_work;
22 * OrtThreadPoolWorkAbandonFn on_abandon;
23 * void *user_context;
24 * }
25 * }
26 */
27 public class OrtThreadPoolCallbacksConfig {
28
29 OrtThreadPoolCallbacksConfig() {
30 // Should not be called directly
31 }
32
33 private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
34 onnxruntime_c_api_h.C_INT.withName("version"),
35 MemoryLayout.paddingLayout(4),
36 onnxruntime_c_api_h.C_POINTER.withName("on_enqueue"),
37 onnxruntime_c_api_h.C_POINTER.withName("on_start_work"),
38 onnxruntime_c_api_h.C_POINTER.withName("on_stop_work"),
39 onnxruntime_c_api_h.C_POINTER.withName("on_abandon"),
40 onnxruntime_c_api_h.C_POINTER.withName("user_context")
41 ).withName("OrtThreadPoolCallbacksConfig");
42
43 /**
44 * The layout of this struct
45 */
46 public static final GroupLayout layout() {
47 return $LAYOUT;
48 }
49
50 private static final OfInt version$LAYOUT = (OfInt)$LAYOUT.select(groupElement("version"));
51
52 /**
53 * Layout for field:
54 * {@snippet lang=c :
55 * uint32_t version
56 * }
57 */
58 public static final OfInt version$layout() {
59 return version$LAYOUT;
60 }
61
62 private static final long version$OFFSET = $LAYOUT.byteOffset(groupElement("version"));
63
64 /**
65 * Offset for field:
66 * {@snippet lang=c :
67 * uint32_t version
68 * }
69 */
70 public static final long version$offset() {
71 return version$OFFSET;
72 }
73
74 /**
75 * Getter for field:
76 * {@snippet lang=c :
77 * uint32_t version
78 * }
79 */
80 public static int version(MemorySegment struct) {
81 return struct.get(version$LAYOUT, version$OFFSET);
82 }
83
84 /**
85 * Setter for field:
86 * {@snippet lang=c :
87 * uint32_t version
88 * }
89 */
90 public static void version(MemorySegment struct, int fieldValue) {
91 struct.set(version$LAYOUT, version$OFFSET, fieldValue);
92 }
93
94 private static final AddressLayout on_enqueue$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("on_enqueue"));
95
96 /**
97 * Layout for field:
98 * {@snippet lang=c :
99 * OrtThreadPoolWorkEnqueueFn on_enqueue
100 * }
101 */
102 public static final AddressLayout on_enqueue$layout() {
103 return on_enqueue$LAYOUT;
104 }
105
106 private static final long on_enqueue$OFFSET = $LAYOUT.byteOffset(groupElement("on_enqueue"));
107
108 /**
109 * Offset for field:
110 * {@snippet lang=c :
111 * OrtThreadPoolWorkEnqueueFn on_enqueue
112 * }
113 */
114 public static final long on_enqueue$offset() {
115 return on_enqueue$OFFSET;
116 }
117
118 /**
119 * Getter for field:
120 * {@snippet lang=c :
121 * OrtThreadPoolWorkEnqueueFn on_enqueue
122 * }
123 */
124 public static MemorySegment on_enqueue(MemorySegment struct) {
125 return struct.get(on_enqueue$LAYOUT, on_enqueue$OFFSET);
126 }
127
128 /**
129 * Setter for field:
130 * {@snippet lang=c :
131 * OrtThreadPoolWorkEnqueueFn on_enqueue
132 * }
133 */
134 public static void on_enqueue(MemorySegment struct, MemorySegment fieldValue) {
135 struct.set(on_enqueue$LAYOUT, on_enqueue$OFFSET, fieldValue);
136 }
137
138 private static final AddressLayout on_start_work$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("on_start_work"));
139
140 /**
141 * Layout for field:
142 * {@snippet lang=c :
143 * OrtThreadPoolWorkStartFn on_start_work
144 * }
145 */
146 public static final AddressLayout on_start_work$layout() {
147 return on_start_work$LAYOUT;
148 }
149
150 private static final long on_start_work$OFFSET = $LAYOUT.byteOffset(groupElement("on_start_work"));
151
152 /**
153 * Offset for field:
154 * {@snippet lang=c :
155 * OrtThreadPoolWorkStartFn on_start_work
156 * }
157 */
158 public static final long on_start_work$offset() {
159 return on_start_work$OFFSET;
160 }
161
162 /**
163 * Getter for field:
164 * {@snippet lang=c :
165 * OrtThreadPoolWorkStartFn on_start_work
166 * }
167 */
168 public static MemorySegment on_start_work(MemorySegment struct) {
169 return struct.get(on_start_work$LAYOUT, on_start_work$OFFSET);
170 }
171
172 /**
173 * Setter for field:
174 * {@snippet lang=c :
175 * OrtThreadPoolWorkStartFn on_start_work
176 * }
177 */
178 public static void on_start_work(MemorySegment struct, MemorySegment fieldValue) {
179 struct.set(on_start_work$LAYOUT, on_start_work$OFFSET, fieldValue);
180 }
181
182 private static final AddressLayout on_stop_work$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("on_stop_work"));
183
184 /**
185 * Layout for field:
186 * {@snippet lang=c :
187 * OrtThreadPoolWorkStopFn on_stop_work
188 * }
189 */
190 public static final AddressLayout on_stop_work$layout() {
191 return on_stop_work$LAYOUT;
192 }
193
194 private static final long on_stop_work$OFFSET = $LAYOUT.byteOffset(groupElement("on_stop_work"));
195
196 /**
197 * Offset for field:
198 * {@snippet lang=c :
199 * OrtThreadPoolWorkStopFn on_stop_work
200 * }
201 */
202 public static final long on_stop_work$offset() {
203 return on_stop_work$OFFSET;
204 }
205
206 /**
207 * Getter for field:
208 * {@snippet lang=c :
209 * OrtThreadPoolWorkStopFn on_stop_work
210 * }
211 */
212 public static MemorySegment on_stop_work(MemorySegment struct) {
213 return struct.get(on_stop_work$LAYOUT, on_stop_work$OFFSET);
214 }
215
216 /**
217 * Setter for field:
218 * {@snippet lang=c :
219 * OrtThreadPoolWorkStopFn on_stop_work
220 * }
221 */
222 public static void on_stop_work(MemorySegment struct, MemorySegment fieldValue) {
223 struct.set(on_stop_work$LAYOUT, on_stop_work$OFFSET, fieldValue);
224 }
225
226 private static final AddressLayout on_abandon$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("on_abandon"));
227
228 /**
229 * Layout for field:
230 * {@snippet lang=c :
231 * OrtThreadPoolWorkAbandonFn on_abandon
232 * }
233 */
234 public static final AddressLayout on_abandon$layout() {
235 return on_abandon$LAYOUT;
236 }
237
238 private static final long on_abandon$OFFSET = $LAYOUT.byteOffset(groupElement("on_abandon"));
239
240 /**
241 * Offset for field:
242 * {@snippet lang=c :
243 * OrtThreadPoolWorkAbandonFn on_abandon
244 * }
245 */
246 public static final long on_abandon$offset() {
247 return on_abandon$OFFSET;
248 }
249
250 /**
251 * Getter for field:
252 * {@snippet lang=c :
253 * OrtThreadPoolWorkAbandonFn on_abandon
254 * }
255 */
256 public static MemorySegment on_abandon(MemorySegment struct) {
257 return struct.get(on_abandon$LAYOUT, on_abandon$OFFSET);
258 }
259
260 /**
261 * Setter for field:
262 * {@snippet lang=c :
263 * OrtThreadPoolWorkAbandonFn on_abandon
264 * }
265 */
266 public static void on_abandon(MemorySegment struct, MemorySegment fieldValue) {
267 struct.set(on_abandon$LAYOUT, on_abandon$OFFSET, fieldValue);
268 }
269
270 private static final AddressLayout user_context$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("user_context"));
271
272 /**
273 * Layout for field:
274 * {@snippet lang=c :
275 * void *user_context
276 * }
277 */
278 public static final AddressLayout user_context$layout() {
279 return user_context$LAYOUT;
280 }
281
282 private static final long user_context$OFFSET = $LAYOUT.byteOffset(groupElement("user_context"));
283
284 /**
285 * Offset for field:
286 * {@snippet lang=c :
287 * void *user_context
288 * }
289 */
290 public static final long user_context$offset() {
291 return user_context$OFFSET;
292 }
293
294 /**
295 * Getter for field:
296 * {@snippet lang=c :
297 * void *user_context
298 * }
299 */
300 public static MemorySegment user_context(MemorySegment struct) {
301 return struct.get(user_context$LAYOUT, user_context$OFFSET);
302 }
303
304 /**
305 * Setter for field:
306 * {@snippet lang=c :
307 * void *user_context
308 * }
309 */
310 public static void user_context(MemorySegment struct, MemorySegment fieldValue) {
311 struct.set(user_context$LAYOUT, user_context$OFFSET, fieldValue);
312 }
313
314 /**
315 * Obtains a slice of {@code arrayParam} which selects the array element at {@code index}.
316 * The returned segment has address {@code arrayParam.address() + index * layout().byteSize()}
317 */
318 public static MemorySegment asSlice(MemorySegment array, long index) {
319 return array.asSlice(layout().byteSize() * index);
320 }
321
322 /**
323 * The size (in bytes) of this struct
324 */
325 public static long sizeof() { return layout().byteSize(); }
326
327 /**
328 * Allocate a segment of size {@code layout().byteSize()} using {@code allocator}
329 */
330 public static MemorySegment allocate(SegmentAllocator allocator) {
331 return allocator.allocate(layout());
332 }
333
334 /**
335 * Allocate an array of size {@code elementCount} using {@code allocator}.
336 * The returned segment has size {@code elementCount * layout().byteSize()}.
337 */
338 public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
339 return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, layout()));
340 }
341
342 /**
343 * Reinterprets {@code addr} using target {@code arena} and {@code cleanupAction} (if any).
344 * The returned segment has size {@code layout().byteSize()}
345 */
346 public static MemorySegment reinterpret(MemorySegment addr, Arena arena, Consumer<MemorySegment> cleanup) {
347 return reinterpret(addr, 1, arena, cleanup);
348 }
349
350 /**
351 * Reinterprets {@code addr} using target {@code arena} and {@code cleanupAction} (if any).
352 * The returned segment has size {@code elementCount * layout().byteSize()}
353 */
354 public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena arena, Consumer<MemorySegment> cleanup) {
355 return addr.reinterpret(layout().byteSize() * elementCount, arena, cleanup);
356 }
357 }
358