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 OrtMIGraphXProviderOptions {
 18  *     int device_id;
 19  *     int migraphx_fp16_enable;
 20  *     int migraphx_fp8_enable;
 21  *     int migraphx_int8_enable;
 22  *     int migraphx_use_native_calibration_table;
 23  *     const char *migraphx_int8_calibration_table_name;
 24  *     int migraphx_save_compiled_model;
 25  *     const char *migraphx_save_model_path;
 26  *     int migraphx_load_compiled_model;
 27  *     const char *migraphx_load_model_path;
 28  *     bool migraphx_exhaustive_tune;
 29  *     size_t migraphx_mem_limit;
 30  *     int migraphx_arena_extend_strategy;
 31  * }
 32  * }
 33  */
 34 public class OrtMIGraphXProviderOptions {
 35 
 36     OrtMIGraphXProviderOptions() {
 37         // Should not be called directly
 38     }
 39 
 40     private static final GroupLayout $LAYOUT = MemoryLayout.structLayout(
 41         onnxruntime_c_api_h.C_INT.withName("device_id"),
 42         onnxruntime_c_api_h.C_INT.withName("migraphx_fp16_enable"),
 43         onnxruntime_c_api_h.C_INT.withName("migraphx_fp8_enable"),
 44         onnxruntime_c_api_h.C_INT.withName("migraphx_int8_enable"),
 45         onnxruntime_c_api_h.C_INT.withName("migraphx_use_native_calibration_table"),
 46         MemoryLayout.paddingLayout(4),
 47         onnxruntime_c_api_h.C_POINTER.withName("migraphx_int8_calibration_table_name"),
 48         onnxruntime_c_api_h.C_INT.withName("migraphx_save_compiled_model"),
 49         MemoryLayout.paddingLayout(4),
 50         onnxruntime_c_api_h.C_POINTER.withName("migraphx_save_model_path"),
 51         onnxruntime_c_api_h.C_INT.withName("migraphx_load_compiled_model"),
 52         MemoryLayout.paddingLayout(4),
 53         onnxruntime_c_api_h.C_POINTER.withName("migraphx_load_model_path"),
 54         onnxruntime_c_api_h.C_BOOL.withName("migraphx_exhaustive_tune"),
 55         MemoryLayout.paddingLayout(7),
 56         onnxruntime_c_api_h.C_LONG.withName("migraphx_mem_limit"),
 57         onnxruntime_c_api_h.C_INT.withName("migraphx_arena_extend_strategy"),
 58         MemoryLayout.paddingLayout(4)
 59     ).withName("OrtMIGraphXProviderOptions");
 60 
 61     /**
 62      * The layout of this struct
 63      */
 64     public static final GroupLayout layout() {
 65         return $LAYOUT;
 66     }
 67 
 68     private static final OfInt device_id$LAYOUT = (OfInt)$LAYOUT.select(groupElement("device_id"));
 69 
 70     /**
 71      * Layout for field:
 72      * {@snippet lang=c :
 73      * int device_id
 74      * }
 75      */
 76     public static final OfInt device_id$layout() {
 77         return device_id$LAYOUT;
 78     }
 79 
 80     private static final long device_id$OFFSET = 0;
 81 
 82     /**
 83      * Offset for field:
 84      * {@snippet lang=c :
 85      * int device_id
 86      * }
 87      */
 88     public static final long device_id$offset() {
 89         return device_id$OFFSET;
 90     }
 91 
 92     /**
 93      * Getter for field:
 94      * {@snippet lang=c :
 95      * int device_id
 96      * }
 97      */
 98     public static int device_id(MemorySegment struct) {
 99         return struct.get(device_id$LAYOUT, device_id$OFFSET);
100     }
101 
102     /**
103      * Setter for field:
104      * {@snippet lang=c :
105      * int device_id
106      * }
107      */
108     public static void device_id(MemorySegment struct, int fieldValue) {
109         struct.set(device_id$LAYOUT, device_id$OFFSET, fieldValue);
110     }
111 
112     private static final OfInt migraphx_fp16_enable$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_fp16_enable"));
113 
114     /**
115      * Layout for field:
116      * {@snippet lang=c :
117      * int migraphx_fp16_enable
118      * }
119      */
120     public static final OfInt migraphx_fp16_enable$layout() {
121         return migraphx_fp16_enable$LAYOUT;
122     }
123 
124     private static final long migraphx_fp16_enable$OFFSET = 4;
125 
126     /**
127      * Offset for field:
128      * {@snippet lang=c :
129      * int migraphx_fp16_enable
130      * }
131      */
132     public static final long migraphx_fp16_enable$offset() {
133         return migraphx_fp16_enable$OFFSET;
134     }
135 
136     /**
137      * Getter for field:
138      * {@snippet lang=c :
139      * int migraphx_fp16_enable
140      * }
141      */
142     public static int migraphx_fp16_enable(MemorySegment struct) {
143         return struct.get(migraphx_fp16_enable$LAYOUT, migraphx_fp16_enable$OFFSET);
144     }
145 
146     /**
147      * Setter for field:
148      * {@snippet lang=c :
149      * int migraphx_fp16_enable
150      * }
151      */
152     public static void migraphx_fp16_enable(MemorySegment struct, int fieldValue) {
153         struct.set(migraphx_fp16_enable$LAYOUT, migraphx_fp16_enable$OFFSET, fieldValue);
154     }
155 
156     private static final OfInt migraphx_fp8_enable$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_fp8_enable"));
157 
158     /**
159      * Layout for field:
160      * {@snippet lang=c :
161      * int migraphx_fp8_enable
162      * }
163      */
164     public static final OfInt migraphx_fp8_enable$layout() {
165         return migraphx_fp8_enable$LAYOUT;
166     }
167 
168     private static final long migraphx_fp8_enable$OFFSET = 8;
169 
170     /**
171      * Offset for field:
172      * {@snippet lang=c :
173      * int migraphx_fp8_enable
174      * }
175      */
176     public static final long migraphx_fp8_enable$offset() {
177         return migraphx_fp8_enable$OFFSET;
178     }
179 
180     /**
181      * Getter for field:
182      * {@snippet lang=c :
183      * int migraphx_fp8_enable
184      * }
185      */
186     public static int migraphx_fp8_enable(MemorySegment struct) {
187         return struct.get(migraphx_fp8_enable$LAYOUT, migraphx_fp8_enable$OFFSET);
188     }
189 
190     /**
191      * Setter for field:
192      * {@snippet lang=c :
193      * int migraphx_fp8_enable
194      * }
195      */
196     public static void migraphx_fp8_enable(MemorySegment struct, int fieldValue) {
197         struct.set(migraphx_fp8_enable$LAYOUT, migraphx_fp8_enable$OFFSET, fieldValue);
198     }
199 
200     private static final OfInt migraphx_int8_enable$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_int8_enable"));
201 
202     /**
203      * Layout for field:
204      * {@snippet lang=c :
205      * int migraphx_int8_enable
206      * }
207      */
208     public static final OfInt migraphx_int8_enable$layout() {
209         return migraphx_int8_enable$LAYOUT;
210     }
211 
212     private static final long migraphx_int8_enable$OFFSET = 12;
213 
214     /**
215      * Offset for field:
216      * {@snippet lang=c :
217      * int migraphx_int8_enable
218      * }
219      */
220     public static final long migraphx_int8_enable$offset() {
221         return migraphx_int8_enable$OFFSET;
222     }
223 
224     /**
225      * Getter for field:
226      * {@snippet lang=c :
227      * int migraphx_int8_enable
228      * }
229      */
230     public static int migraphx_int8_enable(MemorySegment struct) {
231         return struct.get(migraphx_int8_enable$LAYOUT, migraphx_int8_enable$OFFSET);
232     }
233 
234     /**
235      * Setter for field:
236      * {@snippet lang=c :
237      * int migraphx_int8_enable
238      * }
239      */
240     public static void migraphx_int8_enable(MemorySegment struct, int fieldValue) {
241         struct.set(migraphx_int8_enable$LAYOUT, migraphx_int8_enable$OFFSET, fieldValue);
242     }
243 
244     private static final OfInt migraphx_use_native_calibration_table$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_use_native_calibration_table"));
245 
246     /**
247      * Layout for field:
248      * {@snippet lang=c :
249      * int migraphx_use_native_calibration_table
250      * }
251      */
252     public static final OfInt migraphx_use_native_calibration_table$layout() {
253         return migraphx_use_native_calibration_table$LAYOUT;
254     }
255 
256     private static final long migraphx_use_native_calibration_table$OFFSET = 16;
257 
258     /**
259      * Offset for field:
260      * {@snippet lang=c :
261      * int migraphx_use_native_calibration_table
262      * }
263      */
264     public static final long migraphx_use_native_calibration_table$offset() {
265         return migraphx_use_native_calibration_table$OFFSET;
266     }
267 
268     /**
269      * Getter for field:
270      * {@snippet lang=c :
271      * int migraphx_use_native_calibration_table
272      * }
273      */
274     public static int migraphx_use_native_calibration_table(MemorySegment struct) {
275         return struct.get(migraphx_use_native_calibration_table$LAYOUT, migraphx_use_native_calibration_table$OFFSET);
276     }
277 
278     /**
279      * Setter for field:
280      * {@snippet lang=c :
281      * int migraphx_use_native_calibration_table
282      * }
283      */
284     public static void migraphx_use_native_calibration_table(MemorySegment struct, int fieldValue) {
285         struct.set(migraphx_use_native_calibration_table$LAYOUT, migraphx_use_native_calibration_table$OFFSET, fieldValue);
286     }
287 
288     private static final AddressLayout migraphx_int8_calibration_table_name$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("migraphx_int8_calibration_table_name"));
289 
290     /**
291      * Layout for field:
292      * {@snippet lang=c :
293      * const char *migraphx_int8_calibration_table_name
294      * }
295      */
296     public static final AddressLayout migraphx_int8_calibration_table_name$layout() {
297         return migraphx_int8_calibration_table_name$LAYOUT;
298     }
299 
300     private static final long migraphx_int8_calibration_table_name$OFFSET = 24;
301 
302     /**
303      * Offset for field:
304      * {@snippet lang=c :
305      * const char *migraphx_int8_calibration_table_name
306      * }
307      */
308     public static final long migraphx_int8_calibration_table_name$offset() {
309         return migraphx_int8_calibration_table_name$OFFSET;
310     }
311 
312     /**
313      * Getter for field:
314      * {@snippet lang=c :
315      * const char *migraphx_int8_calibration_table_name
316      * }
317      */
318     public static MemorySegment migraphx_int8_calibration_table_name(MemorySegment struct) {
319         return struct.get(migraphx_int8_calibration_table_name$LAYOUT, migraphx_int8_calibration_table_name$OFFSET);
320     }
321 
322     /**
323      * Setter for field:
324      * {@snippet lang=c :
325      * const char *migraphx_int8_calibration_table_name
326      * }
327      */
328     public static void migraphx_int8_calibration_table_name(MemorySegment struct, MemorySegment fieldValue) {
329         struct.set(migraphx_int8_calibration_table_name$LAYOUT, migraphx_int8_calibration_table_name$OFFSET, fieldValue);
330     }
331 
332     private static final OfInt migraphx_save_compiled_model$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_save_compiled_model"));
333 
334     /**
335      * Layout for field:
336      * {@snippet lang=c :
337      * int migraphx_save_compiled_model
338      * }
339      */
340     public static final OfInt migraphx_save_compiled_model$layout() {
341         return migraphx_save_compiled_model$LAYOUT;
342     }
343 
344     private static final long migraphx_save_compiled_model$OFFSET = 32;
345 
346     /**
347      * Offset for field:
348      * {@snippet lang=c :
349      * int migraphx_save_compiled_model
350      * }
351      */
352     public static final long migraphx_save_compiled_model$offset() {
353         return migraphx_save_compiled_model$OFFSET;
354     }
355 
356     /**
357      * Getter for field:
358      * {@snippet lang=c :
359      * int migraphx_save_compiled_model
360      * }
361      */
362     public static int migraphx_save_compiled_model(MemorySegment struct) {
363         return struct.get(migraphx_save_compiled_model$LAYOUT, migraphx_save_compiled_model$OFFSET);
364     }
365 
366     /**
367      * Setter for field:
368      * {@snippet lang=c :
369      * int migraphx_save_compiled_model
370      * }
371      */
372     public static void migraphx_save_compiled_model(MemorySegment struct, int fieldValue) {
373         struct.set(migraphx_save_compiled_model$LAYOUT, migraphx_save_compiled_model$OFFSET, fieldValue);
374     }
375 
376     private static final AddressLayout migraphx_save_model_path$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("migraphx_save_model_path"));
377 
378     /**
379      * Layout for field:
380      * {@snippet lang=c :
381      * const char *migraphx_save_model_path
382      * }
383      */
384     public static final AddressLayout migraphx_save_model_path$layout() {
385         return migraphx_save_model_path$LAYOUT;
386     }
387 
388     private static final long migraphx_save_model_path$OFFSET = 40;
389 
390     /**
391      * Offset for field:
392      * {@snippet lang=c :
393      * const char *migraphx_save_model_path
394      * }
395      */
396     public static final long migraphx_save_model_path$offset() {
397         return migraphx_save_model_path$OFFSET;
398     }
399 
400     /**
401      * Getter for field:
402      * {@snippet lang=c :
403      * const char *migraphx_save_model_path
404      * }
405      */
406     public static MemorySegment migraphx_save_model_path(MemorySegment struct) {
407         return struct.get(migraphx_save_model_path$LAYOUT, migraphx_save_model_path$OFFSET);
408     }
409 
410     /**
411      * Setter for field:
412      * {@snippet lang=c :
413      * const char *migraphx_save_model_path
414      * }
415      */
416     public static void migraphx_save_model_path(MemorySegment struct, MemorySegment fieldValue) {
417         struct.set(migraphx_save_model_path$LAYOUT, migraphx_save_model_path$OFFSET, fieldValue);
418     }
419 
420     private static final OfInt migraphx_load_compiled_model$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_load_compiled_model"));
421 
422     /**
423      * Layout for field:
424      * {@snippet lang=c :
425      * int migraphx_load_compiled_model
426      * }
427      */
428     public static final OfInt migraphx_load_compiled_model$layout() {
429         return migraphx_load_compiled_model$LAYOUT;
430     }
431 
432     private static final long migraphx_load_compiled_model$OFFSET = 48;
433 
434     /**
435      * Offset for field:
436      * {@snippet lang=c :
437      * int migraphx_load_compiled_model
438      * }
439      */
440     public static final long migraphx_load_compiled_model$offset() {
441         return migraphx_load_compiled_model$OFFSET;
442     }
443 
444     /**
445      * Getter for field:
446      * {@snippet lang=c :
447      * int migraphx_load_compiled_model
448      * }
449      */
450     public static int migraphx_load_compiled_model(MemorySegment struct) {
451         return struct.get(migraphx_load_compiled_model$LAYOUT, migraphx_load_compiled_model$OFFSET);
452     }
453 
454     /**
455      * Setter for field:
456      * {@snippet lang=c :
457      * int migraphx_load_compiled_model
458      * }
459      */
460     public static void migraphx_load_compiled_model(MemorySegment struct, int fieldValue) {
461         struct.set(migraphx_load_compiled_model$LAYOUT, migraphx_load_compiled_model$OFFSET, fieldValue);
462     }
463 
464     private static final AddressLayout migraphx_load_model_path$LAYOUT = (AddressLayout)$LAYOUT.select(groupElement("migraphx_load_model_path"));
465 
466     /**
467      * Layout for field:
468      * {@snippet lang=c :
469      * const char *migraphx_load_model_path
470      * }
471      */
472     public static final AddressLayout migraphx_load_model_path$layout() {
473         return migraphx_load_model_path$LAYOUT;
474     }
475 
476     private static final long migraphx_load_model_path$OFFSET = 56;
477 
478     /**
479      * Offset for field:
480      * {@snippet lang=c :
481      * const char *migraphx_load_model_path
482      * }
483      */
484     public static final long migraphx_load_model_path$offset() {
485         return migraphx_load_model_path$OFFSET;
486     }
487 
488     /**
489      * Getter for field:
490      * {@snippet lang=c :
491      * const char *migraphx_load_model_path
492      * }
493      */
494     public static MemorySegment migraphx_load_model_path(MemorySegment struct) {
495         return struct.get(migraphx_load_model_path$LAYOUT, migraphx_load_model_path$OFFSET);
496     }
497 
498     /**
499      * Setter for field:
500      * {@snippet lang=c :
501      * const char *migraphx_load_model_path
502      * }
503      */
504     public static void migraphx_load_model_path(MemorySegment struct, MemorySegment fieldValue) {
505         struct.set(migraphx_load_model_path$LAYOUT, migraphx_load_model_path$OFFSET, fieldValue);
506     }
507 
508     private static final OfBoolean migraphx_exhaustive_tune$LAYOUT = (OfBoolean)$LAYOUT.select(groupElement("migraphx_exhaustive_tune"));
509 
510     /**
511      * Layout for field:
512      * {@snippet lang=c :
513      * bool migraphx_exhaustive_tune
514      * }
515      */
516     public static final OfBoolean migraphx_exhaustive_tune$layout() {
517         return migraphx_exhaustive_tune$LAYOUT;
518     }
519 
520     private static final long migraphx_exhaustive_tune$OFFSET = 64;
521 
522     /**
523      * Offset for field:
524      * {@snippet lang=c :
525      * bool migraphx_exhaustive_tune
526      * }
527      */
528     public static final long migraphx_exhaustive_tune$offset() {
529         return migraphx_exhaustive_tune$OFFSET;
530     }
531 
532     /**
533      * Getter for field:
534      * {@snippet lang=c :
535      * bool migraphx_exhaustive_tune
536      * }
537      */
538     public static boolean migraphx_exhaustive_tune(MemorySegment struct) {
539         return struct.get(migraphx_exhaustive_tune$LAYOUT, migraphx_exhaustive_tune$OFFSET);
540     }
541 
542     /**
543      * Setter for field:
544      * {@snippet lang=c :
545      * bool migraphx_exhaustive_tune
546      * }
547      */
548     public static void migraphx_exhaustive_tune(MemorySegment struct, boolean fieldValue) {
549         struct.set(migraphx_exhaustive_tune$LAYOUT, migraphx_exhaustive_tune$OFFSET, fieldValue);
550     }
551 
552     private static final OfLong migraphx_mem_limit$LAYOUT = (OfLong)$LAYOUT.select(groupElement("migraphx_mem_limit"));
553 
554     /**
555      * Layout for field:
556      * {@snippet lang=c :
557      * size_t migraphx_mem_limit
558      * }
559      */
560     public static final OfLong migraphx_mem_limit$layout() {
561         return migraphx_mem_limit$LAYOUT;
562     }
563 
564     private static final long migraphx_mem_limit$OFFSET = 72;
565 
566     /**
567      * Offset for field:
568      * {@snippet lang=c :
569      * size_t migraphx_mem_limit
570      * }
571      */
572     public static final long migraphx_mem_limit$offset() {
573         return migraphx_mem_limit$OFFSET;
574     }
575 
576     /**
577      * Getter for field:
578      * {@snippet lang=c :
579      * size_t migraphx_mem_limit
580      * }
581      */
582     public static long migraphx_mem_limit(MemorySegment struct) {
583         return struct.get(migraphx_mem_limit$LAYOUT, migraphx_mem_limit$OFFSET);
584     }
585 
586     /**
587      * Setter for field:
588      * {@snippet lang=c :
589      * size_t migraphx_mem_limit
590      * }
591      */
592     public static void migraphx_mem_limit(MemorySegment struct, long fieldValue) {
593         struct.set(migraphx_mem_limit$LAYOUT, migraphx_mem_limit$OFFSET, fieldValue);
594     }
595 
596     private static final OfInt migraphx_arena_extend_strategy$LAYOUT = (OfInt)$LAYOUT.select(groupElement("migraphx_arena_extend_strategy"));
597 
598     /**
599      * Layout for field:
600      * {@snippet lang=c :
601      * int migraphx_arena_extend_strategy
602      * }
603      */
604     public static final OfInt migraphx_arena_extend_strategy$layout() {
605         return migraphx_arena_extend_strategy$LAYOUT;
606     }
607 
608     private static final long migraphx_arena_extend_strategy$OFFSET = 80;
609 
610     /**
611      * Offset for field:
612      * {@snippet lang=c :
613      * int migraphx_arena_extend_strategy
614      * }
615      */
616     public static final long migraphx_arena_extend_strategy$offset() {
617         return migraphx_arena_extend_strategy$OFFSET;
618     }
619 
620     /**
621      * Getter for field:
622      * {@snippet lang=c :
623      * int migraphx_arena_extend_strategy
624      * }
625      */
626     public static int migraphx_arena_extend_strategy(MemorySegment struct) {
627         return struct.get(migraphx_arena_extend_strategy$LAYOUT, migraphx_arena_extend_strategy$OFFSET);
628     }
629 
630     /**
631      * Setter for field:
632      * {@snippet lang=c :
633      * int migraphx_arena_extend_strategy
634      * }
635      */
636     public static void migraphx_arena_extend_strategy(MemorySegment struct, int fieldValue) {
637         struct.set(migraphx_arena_extend_strategy$LAYOUT, migraphx_arena_extend_strategy$OFFSET, fieldValue);
638     }
639 
640     /**
641      * Obtains a slice of {@code arrayParam} which selects the array element at {@code index}.
642      * The returned segment has address {@code arrayParam.address() + index * layout().byteSize()}
643      */
644     public static MemorySegment asSlice(MemorySegment array, long index) {
645         return array.asSlice(layout().byteSize() * index);
646     }
647 
648     /**
649      * The size (in bytes) of this struct
650      */
651     public static long sizeof() { return layout().byteSize(); }
652 
653     /**
654      * Allocate a segment of size {@code layout().byteSize()} using {@code allocator}
655      */
656     public static MemorySegment allocate(SegmentAllocator allocator) {
657         return allocator.allocate(layout());
658     }
659 
660     /**
661      * Allocate an array of size {@code elementCount} using {@code allocator}.
662      * The returned segment has size {@code elementCount * layout().byteSize()}.
663      */
664     public static MemorySegment allocateArray(long elementCount, SegmentAllocator allocator) {
665         return allocator.allocate(MemoryLayout.sequenceLayout(elementCount, layout()));
666     }
667 
668     /**
669      * Reinterprets {@code addr} using target {@code arena} and {@code cleanupAction} (if any).
670      * The returned segment has size {@code layout().byteSize()}
671      */
672     public static MemorySegment reinterpret(MemorySegment addr, Arena arena, Consumer<MemorySegment> cleanup) {
673         return reinterpret(addr, 1, arena, cleanup);
674     }
675 
676     /**
677      * Reinterprets {@code addr} using target {@code arena} and {@code cleanupAction} (if any).
678      * The returned segment has size {@code elementCount * layout().byteSize()}
679      */
680     public static MemorySegment reinterpret(MemorySegment addr, long elementCount, Arena arena, Consumer<MemorySegment> cleanup) {
681         return addr.reinterpret(layout().byteSize() * elementCount, arena, cleanup);
682     }
683 }
684