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