| 2367 | } |
| 2368 | |
| 2369 | extern "C" fn cb_flags<A>(ctxt: *mut c_void, count: *mut usize) -> *mut u32 |
| 2370 | where |
| 2371 | A: 'static + Architecture<Handle = CustomArchitectureHandle<A>> + Send + Sync, |
| 2372 | { |
| 2373 | let custom_arch = unsafe { &*(ctxt as *mut A) }; |
| 2374 | let mut flags: Box<[_]> = custom_arch.flags().iter().map(|f| f.id().0).collect(); |
| 2375 | |
| 2376 | // SAFETY: `count` is an out parameter |
| 2377 | unsafe { *count = flags.len() }; |
| 2378 | let flags_ptr = flags.as_mut_ptr(); |
| 2379 | std::mem::forget(flags); |
| 2380 | flags_ptr |
| 2381 | } |
| 2382 | |
| 2383 | extern "C" fn cb_flag_write_types<A>(ctxt: *mut c_void, count: *mut usize) -> *mut u32 |
| 2384 | where |