Skip to main content

anvil_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.73.2 */
2
3// @generated by sdk/rust/regen-bindings.ps1 from include/anvil/anvil_plugin.h, anvil_game.h, anvil_panel.h, anvil_benchmark.h and anvil_map.h. Do not edit.
4
5pub const ANVIL_API_VERSION: u32 = 2;
6pub const ANVIL_EVENT_PLUGINS_LOADED: &[u8; 21] = b"anvil.plugins_loaded\0";
7pub const ANVIL_EVENT_SUSPENDED: &[u8; 16] = b"anvil.suspended\0";
8pub const ANVIL_EVENT_RESUMED: &[u8; 14] = b"anvil.resumed\0";
9pub const ANVIL_GAME_ID: &[u8; 11] = b"anvil-game\0";
10pub const ANVIL_GAME_EVENT_READY: &[u8; 17] = b"anvil-game.ready\0";
11pub const ANVIL_GAME_EVENT_FRAME: &[u8; 17] = b"anvil-game.frame\0";
12pub const ANVIL_GAME_EVENT_SESSION: &[u8; 19] = b"anvil-game.session\0";
13pub const ANVIL_GAME_EVENT_MAIN_MENU: &[u8; 21] = b"anvil-game.main_menu\0";
14pub const ANVIL_GAME_SERVICE: &[u8; 16] = b"anvil-game.game\0";
15pub const ANVIL_GAME_SERVICE_VERSION: u32 = 1;
16pub const ANVIL_GAME_OOS_DETECTED: u32 = 1;
17pub const ANVIL_GAME_OOS_PAUSED: u32 = 2;
18pub const ANVIL_GAME_EVENT_OOS: &[u8; 15] = b"anvil-game.oos\0";
19pub const ANVIL_GAME_EVENT_DAY: &[u8; 15] = b"anvil-game.day\0";
20pub const ANVIL_GAME_EVENT_MONTH: &[u8; 17] = b"anvil-game.month\0";
21pub const ANVIL_GAME_EVENT_YEAR: &[u8; 16] = b"anvil-game.year\0";
22pub const ANVIL_GAME_EVENT_PLAYER: &[u8; 18] = b"anvil-game.player\0";
23pub const ANVIL_GAME_EVENT_WAR: &[u8; 15] = b"anvil-game.war\0";
24pub const ANVIL_GAME_PROVINCE_LAND: u32 = 1;
25pub const ANVIL_GAME_PROVINCE_WASTELAND: u32 = 2;
26pub const ANVIL_GAME_COUNTRY_OBSERVER: u32 = 1;
27pub const ANVIL_GAME_VALUE_TREASURY: u32 = 1;
28pub const ANVIL_GAME_VALUE_STABILITY: u32 = 2;
29pub const ANVIL_GAME_VALUE_PRESTIGE: u32 = 4;
30pub const ANVIL_GAME_VALUE_MANPOWER: u32 = 8;
31pub const ANVIL_GAME_VALUE_MONTHLY_INCOME: u32 = 16;
32pub const ANVIL_GAME_WAR_ATTACKERS: u32 = 0;
33pub const ANVIL_GAME_WAR_DEFENDERS: u32 = 1;
34pub const ANVIL_GAME_UNIT_ARMY: u32 = 0;
35pub const ANVIL_GAME_UNIT_NAVY: u32 = 1;
36pub const ANVIL_GAME_MISSION_UNKNOWN: i32 = -1;
37pub const ANVIL_GAME_MISSION_NONE: u32 = 0;
38pub const ANVIL_GAME_MISSION_PROTECT_TRADE: u32 = 1;
39pub const ANVIL_GAME_MISSION_PRIVATEER: u32 = 2;
40pub const ANVIL_GAME_MISSION_HUNT_PIRATES: u32 = 3;
41pub const ANVIL_GAME_MISSION_PATROL: u32 = 4;
42pub const ANVIL_GAME_MISSION_EXPLORE: u32 = 5;
43pub const ANVIL_GAME_MISSION_EVADE: u32 = 6;
44pub const ANVIL_GAME_MISSION_HUNT_FLEETS: u32 = 7;
45pub const ANVIL_GAME_MISSION_BLOCKADE: u32 = 8;
46pub const ANVIL_GAME_MISSION_INTERCEPT: u32 = 9;
47pub const ANVIL_GAME_MISSION_REPAIR: u32 = 10;
48pub const ANVIL_GAME_MISSION_CIRCUMNAVIGATE: u32 = 11;
49pub const ANVIL_GAME_MISSION_EXPLORE_LAND: u32 = 12;
50pub const ANVIL_GAME_MISSION_HUNT_REBELS: u32 = 13;
51pub const ANVIL_GAME_MISSION_SIEGE: u32 = 14;
52pub const ANVIL_GAME_MISSION_DRILL: u32 = 15;
53pub const ANVIL_GAME_WORLD_SERVICE: &[u8; 17] = b"anvil-game.world\0";
54pub const ANVIL_GAME_WORLD_SERVICE_VERSION: u32 = 1;
55pub const ANVIL_OVERLAY_ID: &[u8; 14] = b"anvil-overlay\0";
56pub const ANVIL_PANEL_SERVICE: &[u8; 20] = b"anvil-overlay.panel\0";
57pub const ANVIL_PANEL_SERVICE_VERSION: u32 = 1;
58pub const ANVIL_BENCHMARK_SERVICE: &[u8; 16] = b"anvil.benchmark\0";
59pub const ANVIL_BENCHMARK_SERVICE_VERSION: u32 = 1;
60pub const ANVIL_BENCHMARK_EVENT_QUIT: &[u8; 21] = b"anvil.benchmark_quit\0";
61pub const ANVIL_BENCHMARK_QUIT_LIMIT_MS: u32 = 30000;
62pub const ANVIL_BENCHMARK_MAX_FIELDS: u32 = 128;
63pub const ANVIL_BENCHMARK_MAX_OPTIONS: u32 = 32;
64pub const ANVIL_BENCHMARK_MAX_NAME: u32 = 64;
65pub const ANVIL_BENCHMARK_MAX_LABEL: u32 = 80;
66pub const ANVIL_MAP_ID: &[u8; 10] = b"anvil-map\0";
67pub const ANVIL_MAP_MODES_SERVICE: &[u8; 16] = b"anvil-map.modes\0";
68pub const ANVIL_MAP_MODES_SERVICE_VERSION: u32 = 1;
69pub const ANVIL_MAP_EVENT_SHOWN: &[u8; 16] = b"anvil-map.shown\0";
70pub const ANVIL_MAP_EVENT_HIDDEN: &[u8; 17] = b"anvil-map.hidden\0";
71pub const ANVIL_MAP_NO_COLOR: u32 = 4278190080;
72pub type wchar_t = core::ffi::c_ushort;
73#[repr(C)]
74#[derive(Debug)]
75pub struct AnvilPlugin {
76    _unused: [u8; 0],
77}
78#[repr(C)]
79#[derive(Debug)]
80pub struct AnvilChange {
81    _unused: [u8; 0],
82}
83pub type AnvilSymbol = u32;
84pub type AnvilSetting = u32;
85pub const ANVIL_OK: AnvilResult = 0;
86pub const ANVIL_ERROR_INVALID_ARGUMENT: AnvilResult = 1;
87pub const ANVIL_ERROR_NOT_DECLARED: AnvilResult = 2;
88pub const ANVIL_ERROR_WRONG_KIND: AnvilResult = 3;
89pub const ANVIL_ERROR_CONFLICT: AnvilResult = 4;
90pub const ANVIL_ERROR_UNSAFE_SITE: AnvilResult = 5;
91pub const ANVIL_ERROR_BYTES_MISMATCH: AnvilResult = 6;
92pub const ANVIL_ERROR_OUT_OF_MEMORY: AnvilResult = 7;
93pub const ANVIL_ERROR_WRONG_PHASE: AnvilResult = 8;
94pub const ANVIL_ERROR_UNSUPPORTED: AnvilResult = 9;
95pub const ANVIL_ERROR_INTERNAL: AnvilResult = 10;
96pub const ANVIL_ERROR_NOT_FOUND: AnvilResult = 11;
97pub const ANVIL_ERROR_ALREADY_EXISTS: AnvilResult = 12;
98pub type AnvilResult = core::ffi::c_int;
99pub const ANVIL_LOG_DEBUG: AnvilLogLevel = 0;
100pub const ANVIL_LOG_INFO: AnvilLogLevel = 1;
101pub const ANVIL_LOG_WARNING: AnvilLogLevel = 2;
102pub const ANVIL_LOG_ERROR: AnvilLogLevel = 3;
103pub type AnvilLogLevel = core::ffi::c_int;
104#[repr(C)]
105#[derive(Debug, Copy, Clone)]
106pub struct AnvilGameInfo {
107    pub size: u32,
108    pub build_id: *const core::ffi::c_char,
109    pub image_base: usize,
110    pub image_size: u32,
111    pub sha256: *const core::ffi::c_char,
112}
113#[allow(clippy::unnecessary_operation, clippy::identity_op)]
114const _: () = {
115    ["Size of AnvilGameInfo"][::core::mem::size_of::<AnvilGameInfo>() - 40usize];
116    ["Alignment of AnvilGameInfo"][::core::mem::align_of::<AnvilGameInfo>() - 8usize];
117    [
118        "Offset of field: AnvilGameInfo::size",
119    ][::core::mem::offset_of!(AnvilGameInfo, size) - 0usize];
120    [
121        "Offset of field: AnvilGameInfo::build_id",
122    ][::core::mem::offset_of!(AnvilGameInfo, build_id) - 8usize];
123    [
124        "Offset of field: AnvilGameInfo::image_base",
125    ][::core::mem::offset_of!(AnvilGameInfo, image_base) - 16usize];
126    [
127        "Offset of field: AnvilGameInfo::image_size",
128    ][::core::mem::offset_of!(AnvilGameInfo, image_size) - 24usize];
129    [
130        "Offset of field: AnvilGameInfo::sha256",
131    ][::core::mem::offset_of!(AnvilGameInfo, sha256) - 32usize];
132};
133#[repr(C)]
134#[derive(Copy, Clone)]
135pub union AnvilXmm {
136    pub u8_: [u8; 16usize],
137    pub u16_: [u16; 8usize],
138    pub u32_: [u32; 4usize],
139    pub u64_: [u64; 2usize],
140    pub f32_: [f32; 4usize],
141    pub f64_: [f64; 2usize],
142}
143#[allow(clippy::unnecessary_operation, clippy::identity_op)]
144const _: () = {
145    ["Size of AnvilXmm"][::core::mem::size_of::<AnvilXmm>() - 16usize];
146    ["Alignment of AnvilXmm"][::core::mem::align_of::<AnvilXmm>() - 8usize];
147    ["Offset of field: AnvilXmm::u8_"][::core::mem::offset_of!(AnvilXmm, u8_) - 0usize];
148    [
149        "Offset of field: AnvilXmm::u16_",
150    ][::core::mem::offset_of!(AnvilXmm, u16_) - 0usize];
151    [
152        "Offset of field: AnvilXmm::u32_",
153    ][::core::mem::offset_of!(AnvilXmm, u32_) - 0usize];
154    [
155        "Offset of field: AnvilXmm::u64_",
156    ][::core::mem::offset_of!(AnvilXmm, u64_) - 0usize];
157    [
158        "Offset of field: AnvilXmm::f32_",
159    ][::core::mem::offset_of!(AnvilXmm, f32_) - 0usize];
160    [
161        "Offset of field: AnvilXmm::f64_",
162    ][::core::mem::offset_of!(AnvilXmm, f64_) - 0usize];
163};
164#[repr(C)]
165#[derive(Copy, Clone)]
166pub struct AnvilCpuContext {
167    pub xmm: [AnvilXmm; 16usize],
168    pub rflags: usize,
169    pub r15: usize,
170    pub r14: usize,
171    pub r13: usize,
172    pub r12: usize,
173    pub r11: usize,
174    pub r10: usize,
175    pub r9: usize,
176    pub r8: usize,
177    pub rdi: usize,
178    pub rsi: usize,
179    pub rdx: usize,
180    pub rcx: usize,
181    pub rbx: usize,
182    pub rax: usize,
183    pub rbp: usize,
184    pub rsp: usize,
185    pub reserved: usize,
186    pub rip: usize,
187}
188#[allow(clippy::unnecessary_operation, clippy::identity_op)]
189const _: () = {
190    ["Size of AnvilCpuContext"][::core::mem::size_of::<AnvilCpuContext>() - 408usize];
191    [
192        "Alignment of AnvilCpuContext",
193    ][::core::mem::align_of::<AnvilCpuContext>() - 8usize];
194    [
195        "Offset of field: AnvilCpuContext::xmm",
196    ][::core::mem::offset_of!(AnvilCpuContext, xmm) - 0usize];
197    [
198        "Offset of field: AnvilCpuContext::rflags",
199    ][::core::mem::offset_of!(AnvilCpuContext, rflags) - 256usize];
200    [
201        "Offset of field: AnvilCpuContext::r15",
202    ][::core::mem::offset_of!(AnvilCpuContext, r15) - 264usize];
203    [
204        "Offset of field: AnvilCpuContext::r14",
205    ][::core::mem::offset_of!(AnvilCpuContext, r14) - 272usize];
206    [
207        "Offset of field: AnvilCpuContext::r13",
208    ][::core::mem::offset_of!(AnvilCpuContext, r13) - 280usize];
209    [
210        "Offset of field: AnvilCpuContext::r12",
211    ][::core::mem::offset_of!(AnvilCpuContext, r12) - 288usize];
212    [
213        "Offset of field: AnvilCpuContext::r11",
214    ][::core::mem::offset_of!(AnvilCpuContext, r11) - 296usize];
215    [
216        "Offset of field: AnvilCpuContext::r10",
217    ][::core::mem::offset_of!(AnvilCpuContext, r10) - 304usize];
218    [
219        "Offset of field: AnvilCpuContext::r9",
220    ][::core::mem::offset_of!(AnvilCpuContext, r9) - 312usize];
221    [
222        "Offset of field: AnvilCpuContext::r8",
223    ][::core::mem::offset_of!(AnvilCpuContext, r8) - 320usize];
224    [
225        "Offset of field: AnvilCpuContext::rdi",
226    ][::core::mem::offset_of!(AnvilCpuContext, rdi) - 328usize];
227    [
228        "Offset of field: AnvilCpuContext::rsi",
229    ][::core::mem::offset_of!(AnvilCpuContext, rsi) - 336usize];
230    [
231        "Offset of field: AnvilCpuContext::rdx",
232    ][::core::mem::offset_of!(AnvilCpuContext, rdx) - 344usize];
233    [
234        "Offset of field: AnvilCpuContext::rcx",
235    ][::core::mem::offset_of!(AnvilCpuContext, rcx) - 352usize];
236    [
237        "Offset of field: AnvilCpuContext::rbx",
238    ][::core::mem::offset_of!(AnvilCpuContext, rbx) - 360usize];
239    [
240        "Offset of field: AnvilCpuContext::rax",
241    ][::core::mem::offset_of!(AnvilCpuContext, rax) - 368usize];
242    [
243        "Offset of field: AnvilCpuContext::rbp",
244    ][::core::mem::offset_of!(AnvilCpuContext, rbp) - 376usize];
245    [
246        "Offset of field: AnvilCpuContext::rsp",
247    ][::core::mem::offset_of!(AnvilCpuContext, rsp) - 384usize];
248    [
249        "Offset of field: AnvilCpuContext::reserved",
250    ][::core::mem::offset_of!(AnvilCpuContext, reserved) - 392usize];
251    [
252        "Offset of field: AnvilCpuContext::rip",
253    ][::core::mem::offset_of!(AnvilCpuContext, rip) - 400usize];
254};
255pub type AnvilCpuCallback = ::core::option::Option<
256    unsafe extern "C" fn(cpu: *mut AnvilCpuContext, user: *mut core::ffi::c_void),
257>;
258pub type AnvilEventCallback = ::core::option::Option<
259    unsafe extern "C" fn(
260        event: *const core::ffi::c_char,
261        payload: *const core::ffi::c_void,
262        context: *mut core::ffi::c_void,
263    ),
264>;
265pub type AnvilSettingCallback = ::core::option::Option<
266    unsafe extern "C" fn(setting: AnvilSetting, context: *mut core::ffi::c_void),
267>;
268#[repr(C)]
269#[derive(Debug, Copy, Clone)]
270pub struct AnvilHost {
271    pub size: u32,
272    pub api_version: u32,
273    pub anvil_version: *const core::ffi::c_char,
274    pub game: *const AnvilGameInfo,
275    pub log: ::core::option::Option<
276        unsafe extern "C" fn(
277            self_: *mut AnvilPlugin,
278            level: AnvilLogLevel,
279            message: *const core::ffi::c_char,
280        ),
281    >,
282    pub plugin_dir: ::core::option::Option<
283        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> *const wchar_t,
284    >,
285    pub data_dir: ::core::option::Option<
286        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> *const wchar_t,
287    >,
288    pub hook_function: ::core::option::Option<
289        unsafe extern "C" fn(
290            self_: *mut AnvilPlugin,
291            fn_: AnvilSymbol,
292            detour: *mut core::ffi::c_void,
293            next: *mut *mut core::ffi::c_void,
294            out: *mut *mut AnvilChange,
295        ) -> AnvilResult,
296    >,
297    pub mid_hook: ::core::option::Option<
298        unsafe extern "C" fn(
299            self_: *mut AnvilPlugin,
300            site: AnvilSymbol,
301            callback: AnvilCpuCallback,
302            user: *mut core::ffi::c_void,
303            out: *mut *mut AnvilChange,
304        ) -> AnvilResult,
305    >,
306    pub replace_block: ::core::option::Option<
307        unsafe extern "C" fn(
308            self_: *mut AnvilPlugin,
309            block: AnvilSymbol,
310            callback: AnvilCpuCallback,
311            user: *mut core::ffi::c_void,
312            out: *mut *mut AnvilChange,
313        ) -> AnvilResult,
314    >,
315    pub redirect_call: ::core::option::Option<
316        unsafe extern "C" fn(
317            self_: *mut AnvilPlugin,
318            call_site: AnvilSymbol,
319            target: *mut core::ffi::c_void,
320            next: *mut *mut core::ffi::c_void,
321            out: *mut *mut AnvilChange,
322        ) -> AnvilResult,
323    >,
324    pub patch_bytes: ::core::option::Option<
325        unsafe extern "C" fn(
326            self_: *mut AnvilPlugin,
327            site: AnvilSymbol,
328            bytes: *const core::ffi::c_void,
329            size: usize,
330            out: *mut *mut AnvilChange,
331        ) -> AnvilResult,
332    >,
333    pub swap_pointer: ::core::option::Option<
334        unsafe extern "C" fn(
335            self_: *mut AnvilPlugin,
336            slot: AnvilSymbol,
337            value: *mut core::ffi::c_void,
338            previous: *mut *mut core::ffi::c_void,
339            out: *mut *mut AnvilChange,
340        ) -> AnvilResult,
341    >,
342    pub replace_import: ::core::option::Option<
343        unsafe extern "C" fn(
344            self_: *mut AnvilPlugin,
345            module: *const core::ffi::c_char,
346            function: *const core::ffi::c_char,
347            replacement: *mut core::ffi::c_void,
348            next: *mut *mut core::ffi::c_void,
349            out: *mut *mut AnvilChange,
350        ) -> AnvilResult,
351    >,
352    pub hook_function_at: ::core::option::Option<
353        unsafe extern "C" fn(
354            self_: *mut AnvilPlugin,
355            address: *mut core::ffi::c_void,
356            expected_prologue: *const core::ffi::c_void,
357            prologue_size: usize,
358            detour: *mut core::ffi::c_void,
359            next: *mut *mut core::ffi::c_void,
360            out: *mut *mut AnvilChange,
361        ) -> AnvilResult,
362    >,
363    pub mid_hook_at: ::core::option::Option<
364        unsafe extern "C" fn(
365            self_: *mut AnvilPlugin,
366            address: *mut core::ffi::c_void,
367            expected: *const core::ffi::c_void,
368            expected_size: usize,
369            callback: AnvilCpuCallback,
370            user: *mut core::ffi::c_void,
371            out: *mut *mut AnvilChange,
372        ) -> AnvilResult,
373    >,
374    pub remove: ::core::option::Option<
375        unsafe extern "C" fn(
376            self_: *mut AnvilPlugin,
377            change: *mut AnvilChange,
378        ) -> AnvilResult,
379    >,
380    pub begin_group: ::core::option::Option<
381        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> AnvilResult,
382    >,
383    pub commit_group: ::core::option::Option<
384        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> AnvilResult,
385    >,
386    pub abort_group: ::core::option::Option<
387        unsafe extern "C" fn(self_: *mut AnvilPlugin),
388    >,
389    pub address_of: ::core::option::Option<
390        unsafe extern "C" fn(
391            self_: *mut AnvilPlugin,
392            symbol: AnvilSymbol,
393        ) -> *mut core::ffi::c_void,
394    >,
395    pub symbol_value: ::core::option::Option<
396        unsafe extern "C" fn(
397            self_: *mut AnvilPlugin,
398            symbol: AnvilSymbol,
399            name: *const core::ffi::c_char,
400            out: *mut u64,
401        ) -> AnvilResult,
402    >,
403    pub setting_bool: ::core::option::Option<
404        unsafe extern "C" fn(
405            self_: *mut AnvilPlugin,
406            setting: AnvilSetting,
407        ) -> core::ffi::c_int,
408    >,
409    pub setting_int: ::core::option::Option<
410        unsafe extern "C" fn(self_: *mut AnvilPlugin, setting: AnvilSetting) -> i64,
411    >,
412    pub setting_float: ::core::option::Option<
413        unsafe extern "C" fn(self_: *mut AnvilPlugin, setting: AnvilSetting) -> f64,
414    >,
415    pub setting_string: ::core::option::Option<
416        unsafe extern "C" fn(
417            self_: *mut AnvilPlugin,
418            setting: AnvilSetting,
419        ) -> *const core::ffi::c_char,
420    >,
421    pub subscribe_setting: ::core::option::Option<
422        unsafe extern "C" fn(
423            self_: *mut AnvilPlugin,
424            setting: AnvilSetting,
425            callback: AnvilSettingCallback,
426            context: *mut core::ffi::c_void,
427        ) -> AnvilResult,
428    >,
429    pub register_service: ::core::option::Option<
430        unsafe extern "C" fn(
431            self_: *mut AnvilPlugin,
432            name: *const core::ffi::c_char,
433            version: u32,
434            service: *const core::ffi::c_void,
435        ) -> AnvilResult,
436    >,
437    pub get_service: ::core::option::Option<
438        unsafe extern "C" fn(
439            self_: *mut AnvilPlugin,
440            name: *const core::ffi::c_char,
441            version: u32,
442        ) -> *const core::ffi::c_void,
443    >,
444    pub subscribe: ::core::option::Option<
445        unsafe extern "C" fn(
446            self_: *mut AnvilPlugin,
447            event: *const core::ffi::c_char,
448            callback: AnvilEventCallback,
449            context: *mut core::ffi::c_void,
450        ) -> AnvilResult,
451    >,
452    pub publish: ::core::option::Option<
453        unsafe extern "C" fn(
454            self_: *mut AnvilPlugin,
455            event: *const core::ffi::c_char,
456            payload: *const core::ffi::c_void,
457        ) -> AnvilResult,
458    >,
459}
460#[allow(clippy::unnecessary_operation, clippy::identity_op)]
461const _: () = {
462    ["Size of AnvilHost"][::core::mem::size_of::<AnvilHost>() - 240usize];
463    ["Alignment of AnvilHost"][::core::mem::align_of::<AnvilHost>() - 8usize];
464    [
465        "Offset of field: AnvilHost::size",
466    ][::core::mem::offset_of!(AnvilHost, size) - 0usize];
467    [
468        "Offset of field: AnvilHost::api_version",
469    ][::core::mem::offset_of!(AnvilHost, api_version) - 4usize];
470    [
471        "Offset of field: AnvilHost::anvil_version",
472    ][::core::mem::offset_of!(AnvilHost, anvil_version) - 8usize];
473    [
474        "Offset of field: AnvilHost::game",
475    ][::core::mem::offset_of!(AnvilHost, game) - 16usize];
476    [
477        "Offset of field: AnvilHost::log",
478    ][::core::mem::offset_of!(AnvilHost, log) - 24usize];
479    [
480        "Offset of field: AnvilHost::plugin_dir",
481    ][::core::mem::offset_of!(AnvilHost, plugin_dir) - 32usize];
482    [
483        "Offset of field: AnvilHost::data_dir",
484    ][::core::mem::offset_of!(AnvilHost, data_dir) - 40usize];
485    [
486        "Offset of field: AnvilHost::hook_function",
487    ][::core::mem::offset_of!(AnvilHost, hook_function) - 48usize];
488    [
489        "Offset of field: AnvilHost::mid_hook",
490    ][::core::mem::offset_of!(AnvilHost, mid_hook) - 56usize];
491    [
492        "Offset of field: AnvilHost::replace_block",
493    ][::core::mem::offset_of!(AnvilHost, replace_block) - 64usize];
494    [
495        "Offset of field: AnvilHost::redirect_call",
496    ][::core::mem::offset_of!(AnvilHost, redirect_call) - 72usize];
497    [
498        "Offset of field: AnvilHost::patch_bytes",
499    ][::core::mem::offset_of!(AnvilHost, patch_bytes) - 80usize];
500    [
501        "Offset of field: AnvilHost::swap_pointer",
502    ][::core::mem::offset_of!(AnvilHost, swap_pointer) - 88usize];
503    [
504        "Offset of field: AnvilHost::replace_import",
505    ][::core::mem::offset_of!(AnvilHost, replace_import) - 96usize];
506    [
507        "Offset of field: AnvilHost::hook_function_at",
508    ][::core::mem::offset_of!(AnvilHost, hook_function_at) - 104usize];
509    [
510        "Offset of field: AnvilHost::mid_hook_at",
511    ][::core::mem::offset_of!(AnvilHost, mid_hook_at) - 112usize];
512    [
513        "Offset of field: AnvilHost::remove",
514    ][::core::mem::offset_of!(AnvilHost, remove) - 120usize];
515    [
516        "Offset of field: AnvilHost::begin_group",
517    ][::core::mem::offset_of!(AnvilHost, begin_group) - 128usize];
518    [
519        "Offset of field: AnvilHost::commit_group",
520    ][::core::mem::offset_of!(AnvilHost, commit_group) - 136usize];
521    [
522        "Offset of field: AnvilHost::abort_group",
523    ][::core::mem::offset_of!(AnvilHost, abort_group) - 144usize];
524    [
525        "Offset of field: AnvilHost::address_of",
526    ][::core::mem::offset_of!(AnvilHost, address_of) - 152usize];
527    [
528        "Offset of field: AnvilHost::symbol_value",
529    ][::core::mem::offset_of!(AnvilHost, symbol_value) - 160usize];
530    [
531        "Offset of field: AnvilHost::setting_bool",
532    ][::core::mem::offset_of!(AnvilHost, setting_bool) - 168usize];
533    [
534        "Offset of field: AnvilHost::setting_int",
535    ][::core::mem::offset_of!(AnvilHost, setting_int) - 176usize];
536    [
537        "Offset of field: AnvilHost::setting_float",
538    ][::core::mem::offset_of!(AnvilHost, setting_float) - 184usize];
539    [
540        "Offset of field: AnvilHost::setting_string",
541    ][::core::mem::offset_of!(AnvilHost, setting_string) - 192usize];
542    [
543        "Offset of field: AnvilHost::subscribe_setting",
544    ][::core::mem::offset_of!(AnvilHost, subscribe_setting) - 200usize];
545    [
546        "Offset of field: AnvilHost::register_service",
547    ][::core::mem::offset_of!(AnvilHost, register_service) - 208usize];
548    [
549        "Offset of field: AnvilHost::get_service",
550    ][::core::mem::offset_of!(AnvilHost, get_service) - 216usize];
551    [
552        "Offset of field: AnvilHost::subscribe",
553    ][::core::mem::offset_of!(AnvilHost, subscribe) - 224usize];
554    [
555        "Offset of field: AnvilHost::publish",
556    ][::core::mem::offset_of!(AnvilHost, publish) - 232usize];
557};
558#[repr(C)]
559#[derive(Debug, Copy, Clone)]
560pub struct AnvilGameFrame {
561    pub size: u32,
562    pub reserved: u32,
563    pub number: u64,
564}
565#[allow(clippy::unnecessary_operation, clippy::identity_op)]
566const _: () = {
567    ["Size of AnvilGameFrame"][::core::mem::size_of::<AnvilGameFrame>() - 16usize];
568    ["Alignment of AnvilGameFrame"][::core::mem::align_of::<AnvilGameFrame>() - 8usize];
569    [
570        "Offset of field: AnvilGameFrame::size",
571    ][::core::mem::offset_of!(AnvilGameFrame, size) - 0usize];
572    [
573        "Offset of field: AnvilGameFrame::reserved",
574    ][::core::mem::offset_of!(AnvilGameFrame, reserved) - 4usize];
575    [
576        "Offset of field: AnvilGameFrame::number",
577    ][::core::mem::offset_of!(AnvilGameFrame, number) - 8usize];
578};
579pub const ANVIL_GAME_SESSION_STARTED: AnvilGameSessionChange = 1;
580pub const ANVIL_GAME_SESSION_ENDED: AnvilGameSessionChange = 2;
581pub type AnvilGameSessionChange = core::ffi::c_int;
582#[repr(C)]
583#[derive(Debug, Copy, Clone)]
584pub struct AnvilGameSession {
585    pub size: u32,
586    pub change: u32,
587    pub ironman: u32,
588    pub multiplayer: u32,
589    pub number: u64,
590}
591#[allow(clippy::unnecessary_operation, clippy::identity_op)]
592const _: () = {
593    ["Size of AnvilGameSession"][::core::mem::size_of::<AnvilGameSession>() - 24usize];
594    [
595        "Alignment of AnvilGameSession",
596    ][::core::mem::align_of::<AnvilGameSession>() - 8usize];
597    [
598        "Offset of field: AnvilGameSession::size",
599    ][::core::mem::offset_of!(AnvilGameSession, size) - 0usize];
600    [
601        "Offset of field: AnvilGameSession::change",
602    ][::core::mem::offset_of!(AnvilGameSession, change) - 4usize];
603    [
604        "Offset of field: AnvilGameSession::ironman",
605    ][::core::mem::offset_of!(AnvilGameSession, ironman) - 8usize];
606    [
607        "Offset of field: AnvilGameSession::multiplayer",
608    ][::core::mem::offset_of!(AnvilGameSession, multiplayer) - 12usize];
609    [
610        "Offset of field: AnvilGameSession::number",
611    ][::core::mem::offset_of!(AnvilGameSession, number) - 16usize];
612};
613#[repr(C)]
614#[derive(Debug, Copy, Clone)]
615pub struct AnvilGameDate {
616    pub size: u32,
617    pub year: i32,
618    pub month: u32,
619    pub day: u32,
620    pub session: u64,
621}
622#[allow(clippy::unnecessary_operation, clippy::identity_op)]
623const _: () = {
624    ["Size of AnvilGameDate"][::core::mem::size_of::<AnvilGameDate>() - 24usize];
625    ["Alignment of AnvilGameDate"][::core::mem::align_of::<AnvilGameDate>() - 8usize];
626    [
627        "Offset of field: AnvilGameDate::size",
628    ][::core::mem::offset_of!(AnvilGameDate, size) - 0usize];
629    [
630        "Offset of field: AnvilGameDate::year",
631    ][::core::mem::offset_of!(AnvilGameDate, year) - 4usize];
632    [
633        "Offset of field: AnvilGameDate::month",
634    ][::core::mem::offset_of!(AnvilGameDate, month) - 8usize];
635    [
636        "Offset of field: AnvilGameDate::day",
637    ][::core::mem::offset_of!(AnvilGameDate, day) - 12usize];
638    [
639        "Offset of field: AnvilGameDate::session",
640    ][::core::mem::offset_of!(AnvilGameDate, session) - 16usize];
641};
642pub type AnvilGameWork = ::core::option::Option<
643    unsafe extern "C" fn(context: *mut core::ffi::c_void),
644>;
645#[repr(C)]
646#[derive(Debug, Copy, Clone)]
647pub struct AnvilGameService {
648    pub size: u32,
649    pub ready: ::core::option::Option<unsafe extern "C" fn() -> core::ffi::c_int>,
650    pub main_thread_id: ::core::option::Option<unsafe extern "C" fn() -> u32>,
651    pub frame_number: ::core::option::Option<unsafe extern "C" fn() -> u64>,
652    pub run_on_main_thread: ::core::option::Option<
653        unsafe extern "C" fn(
654            work: AnvilGameWork,
655            context: *mut core::ffi::c_void,
656        ) -> AnvilResult,
657    >,
658    pub session: ::core::option::Option<
659        unsafe extern "C" fn(out: *mut AnvilGameSession) -> core::ffi::c_int,
660    >,
661    pub date: ::core::option::Option<
662        unsafe extern "C" fn(out: *mut AnvilGameDate) -> core::ffi::c_int,
663    >,
664    pub main_menu: ::core::option::Option<unsafe extern "C" fn() -> core::ffi::c_int>,
665    pub out_of_sync: ::core::option::Option<unsafe extern "C" fn() -> u32>,
666}
667#[allow(clippy::unnecessary_operation, clippy::identity_op)]
668const _: () = {
669    ["Size of AnvilGameService"][::core::mem::size_of::<AnvilGameService>() - 72usize];
670    [
671        "Alignment of AnvilGameService",
672    ][::core::mem::align_of::<AnvilGameService>() - 8usize];
673    [
674        "Offset of field: AnvilGameService::size",
675    ][::core::mem::offset_of!(AnvilGameService, size) - 0usize];
676    [
677        "Offset of field: AnvilGameService::ready",
678    ][::core::mem::offset_of!(AnvilGameService, ready) - 8usize];
679    [
680        "Offset of field: AnvilGameService::main_thread_id",
681    ][::core::mem::offset_of!(AnvilGameService, main_thread_id) - 16usize];
682    [
683        "Offset of field: AnvilGameService::frame_number",
684    ][::core::mem::offset_of!(AnvilGameService, frame_number) - 24usize];
685    [
686        "Offset of field: AnvilGameService::run_on_main_thread",
687    ][::core::mem::offset_of!(AnvilGameService, run_on_main_thread) - 32usize];
688    [
689        "Offset of field: AnvilGameService::session",
690    ][::core::mem::offset_of!(AnvilGameService, session) - 40usize];
691    [
692        "Offset of field: AnvilGameService::date",
693    ][::core::mem::offset_of!(AnvilGameService, date) - 48usize];
694    [
695        "Offset of field: AnvilGameService::main_menu",
696    ][::core::mem::offset_of!(AnvilGameService, main_menu) - 56usize];
697    [
698        "Offset of field: AnvilGameService::out_of_sync",
699    ][::core::mem::offset_of!(AnvilGameService, out_of_sync) - 64usize];
700};
701#[repr(C)]
702#[derive(Debug, Copy, Clone)]
703pub struct AnvilGameOosChange {
704    pub size: u32,
705    pub flags: u32,
706    pub previous: u32,
707    pub reserved: u32,
708    pub session: u64,
709}
710#[allow(clippy::unnecessary_operation, clippy::identity_op)]
711const _: () = {
712    [
713        "Size of AnvilGameOosChange",
714    ][::core::mem::size_of::<AnvilGameOosChange>() - 24usize];
715    [
716        "Alignment of AnvilGameOosChange",
717    ][::core::mem::align_of::<AnvilGameOosChange>() - 8usize];
718    [
719        "Offset of field: AnvilGameOosChange::size",
720    ][::core::mem::offset_of!(AnvilGameOosChange, size) - 0usize];
721    [
722        "Offset of field: AnvilGameOosChange::flags",
723    ][::core::mem::offset_of!(AnvilGameOosChange, flags) - 4usize];
724    [
725        "Offset of field: AnvilGameOosChange::previous",
726    ][::core::mem::offset_of!(AnvilGameOosChange, previous) - 8usize];
727    [
728        "Offset of field: AnvilGameOosChange::reserved",
729    ][::core::mem::offset_of!(AnvilGameOosChange, reserved) - 12usize];
730    [
731        "Offset of field: AnvilGameOosChange::session",
732    ][::core::mem::offset_of!(AnvilGameOosChange, session) - 16usize];
733};
734#[repr(C)]
735#[derive(Debug, Copy, Clone)]
736pub struct AnvilGameTag {
737    pub text: [core::ffi::c_char; 4usize],
738}
739#[allow(clippy::unnecessary_operation, clippy::identity_op)]
740const _: () = {
741    ["Size of AnvilGameTag"][::core::mem::size_of::<AnvilGameTag>() - 4usize];
742    ["Alignment of AnvilGameTag"][::core::mem::align_of::<AnvilGameTag>() - 1usize];
743    [
744        "Offset of field: AnvilGameTag::text",
745    ][::core::mem::offset_of!(AnvilGameTag, text) - 0usize];
746};
747#[repr(C)]
748#[derive(Debug, Copy, Clone)]
749pub struct AnvilGameDateChange {
750    pub size: u32,
751    pub days: u32,
752    pub date: AnvilGameDate,
753    pub previous: AnvilGameDate,
754}
755#[allow(clippy::unnecessary_operation, clippy::identity_op)]
756const _: () = {
757    [
758        "Size of AnvilGameDateChange",
759    ][::core::mem::size_of::<AnvilGameDateChange>() - 56usize];
760    [
761        "Alignment of AnvilGameDateChange",
762    ][::core::mem::align_of::<AnvilGameDateChange>() - 8usize];
763    [
764        "Offset of field: AnvilGameDateChange::size",
765    ][::core::mem::offset_of!(AnvilGameDateChange, size) - 0usize];
766    [
767        "Offset of field: AnvilGameDateChange::days",
768    ][::core::mem::offset_of!(AnvilGameDateChange, days) - 4usize];
769    [
770        "Offset of field: AnvilGameDateChange::date",
771    ][::core::mem::offset_of!(AnvilGameDateChange, date) - 8usize];
772    [
773        "Offset of field: AnvilGameDateChange::previous",
774    ][::core::mem::offset_of!(AnvilGameDateChange, previous) - 32usize];
775};
776#[repr(C)]
777#[derive(Debug, Copy, Clone)]
778pub struct AnvilGamePlayerChange {
779    pub size: u32,
780    pub tag: AnvilGameTag,
781    pub previous: AnvilGameTag,
782    pub session: u64,
783}
784#[allow(clippy::unnecessary_operation, clippy::identity_op)]
785const _: () = {
786    [
787        "Size of AnvilGamePlayerChange",
788    ][::core::mem::size_of::<AnvilGamePlayerChange>() - 24usize];
789    [
790        "Alignment of AnvilGamePlayerChange",
791    ][::core::mem::align_of::<AnvilGamePlayerChange>() - 8usize];
792    [
793        "Offset of field: AnvilGamePlayerChange::size",
794    ][::core::mem::offset_of!(AnvilGamePlayerChange, size) - 0usize];
795    [
796        "Offset of field: AnvilGamePlayerChange::tag",
797    ][::core::mem::offset_of!(AnvilGamePlayerChange, tag) - 4usize];
798    [
799        "Offset of field: AnvilGamePlayerChange::previous",
800    ][::core::mem::offset_of!(AnvilGamePlayerChange, previous) - 8usize];
801    [
802        "Offset of field: AnvilGamePlayerChange::session",
803    ][::core::mem::offset_of!(AnvilGamePlayerChange, session) - 16usize];
804};
805pub const ANVIL_GAME_WAR_STARTED: AnvilGameWarChangeKind = 1;
806pub const ANVIL_GAME_WAR_ENDED: AnvilGameWarChangeKind = 2;
807pub type AnvilGameWarChangeKind = core::ffi::c_int;
808#[repr(C)]
809#[derive(Debug, Copy, Clone)]
810pub struct AnvilGameWarChange {
811    pub size: u32,
812    pub change: u32,
813    pub war: u64,
814    pub attacker: AnvilGameTag,
815    pub defender: AnvilGameTag,
816    pub name: *const core::ffi::c_char,
817    pub session: u64,
818}
819#[allow(clippy::unnecessary_operation, clippy::identity_op)]
820const _: () = {
821    [
822        "Size of AnvilGameWarChange",
823    ][::core::mem::size_of::<AnvilGameWarChange>() - 40usize];
824    [
825        "Alignment of AnvilGameWarChange",
826    ][::core::mem::align_of::<AnvilGameWarChange>() - 8usize];
827    [
828        "Offset of field: AnvilGameWarChange::size",
829    ][::core::mem::offset_of!(AnvilGameWarChange, size) - 0usize];
830    [
831        "Offset of field: AnvilGameWarChange::change",
832    ][::core::mem::offset_of!(AnvilGameWarChange, change) - 4usize];
833    [
834        "Offset of field: AnvilGameWarChange::war",
835    ][::core::mem::offset_of!(AnvilGameWarChange, war) - 8usize];
836    [
837        "Offset of field: AnvilGameWarChange::attacker",
838    ][::core::mem::offset_of!(AnvilGameWarChange, attacker) - 16usize];
839    [
840        "Offset of field: AnvilGameWarChange::defender",
841    ][::core::mem::offset_of!(AnvilGameWarChange, defender) - 20usize];
842    [
843        "Offset of field: AnvilGameWarChange::name",
844    ][::core::mem::offset_of!(AnvilGameWarChange, name) - 24usize];
845    [
846        "Offset of field: AnvilGameWarChange::session",
847    ][::core::mem::offset_of!(AnvilGameWarChange, session) - 32usize];
848};
849#[repr(C)]
850#[derive(Debug, Copy, Clone)]
851pub struct AnvilGameProvince {
852    pub size: u32,
853    pub id: i32,
854    pub owner: AnvilGameTag,
855    pub controller: AnvilGameTag,
856    pub base_tax: i32,
857    pub base_production: i32,
858    pub base_manpower: i32,
859    pub flags: u32,
860}
861#[allow(clippy::unnecessary_operation, clippy::identity_op)]
862const _: () = {
863    ["Size of AnvilGameProvince"][::core::mem::size_of::<AnvilGameProvince>() - 32usize];
864    [
865        "Alignment of AnvilGameProvince",
866    ][::core::mem::align_of::<AnvilGameProvince>() - 4usize];
867    [
868        "Offset of field: AnvilGameProvince::size",
869    ][::core::mem::offset_of!(AnvilGameProvince, size) - 0usize];
870    [
871        "Offset of field: AnvilGameProvince::id",
872    ][::core::mem::offset_of!(AnvilGameProvince, id) - 4usize];
873    [
874        "Offset of field: AnvilGameProvince::owner",
875    ][::core::mem::offset_of!(AnvilGameProvince, owner) - 8usize];
876    [
877        "Offset of field: AnvilGameProvince::controller",
878    ][::core::mem::offset_of!(AnvilGameProvince, controller) - 12usize];
879    [
880        "Offset of field: AnvilGameProvince::base_tax",
881    ][::core::mem::offset_of!(AnvilGameProvince, base_tax) - 16usize];
882    [
883        "Offset of field: AnvilGameProvince::base_production",
884    ][::core::mem::offset_of!(AnvilGameProvince, base_production) - 20usize];
885    [
886        "Offset of field: AnvilGameProvince::base_manpower",
887    ][::core::mem::offset_of!(AnvilGameProvince, base_manpower) - 24usize];
888    [
889        "Offset of field: AnvilGameProvince::flags",
890    ][::core::mem::offset_of!(AnvilGameProvince, flags) - 28usize];
891};
892#[repr(C)]
893#[derive(Debug, Copy, Clone)]
894pub struct AnvilGameCountry {
895    pub size: u32,
896    pub tag: AnvilGameTag,
897    pub capital: i32,
898    pub province_count: i32,
899    pub flags: u32,
900    pub values: u32,
901    pub treasury: i32,
902    pub stability: i32,
903    pub prestige: i32,
904    pub manpower: i32,
905    pub monthly_income: i32,
906}
907#[allow(clippy::unnecessary_operation, clippy::identity_op)]
908const _: () = {
909    ["Size of AnvilGameCountry"][::core::mem::size_of::<AnvilGameCountry>() - 44usize];
910    [
911        "Alignment of AnvilGameCountry",
912    ][::core::mem::align_of::<AnvilGameCountry>() - 4usize];
913    [
914        "Offset of field: AnvilGameCountry::size",
915    ][::core::mem::offset_of!(AnvilGameCountry, size) - 0usize];
916    [
917        "Offset of field: AnvilGameCountry::tag",
918    ][::core::mem::offset_of!(AnvilGameCountry, tag) - 4usize];
919    [
920        "Offset of field: AnvilGameCountry::capital",
921    ][::core::mem::offset_of!(AnvilGameCountry, capital) - 8usize];
922    [
923        "Offset of field: AnvilGameCountry::province_count",
924    ][::core::mem::offset_of!(AnvilGameCountry, province_count) - 12usize];
925    [
926        "Offset of field: AnvilGameCountry::flags",
927    ][::core::mem::offset_of!(AnvilGameCountry, flags) - 16usize];
928    [
929        "Offset of field: AnvilGameCountry::values",
930    ][::core::mem::offset_of!(AnvilGameCountry, values) - 20usize];
931    [
932        "Offset of field: AnvilGameCountry::treasury",
933    ][::core::mem::offset_of!(AnvilGameCountry, treasury) - 24usize];
934    [
935        "Offset of field: AnvilGameCountry::stability",
936    ][::core::mem::offset_of!(AnvilGameCountry, stability) - 28usize];
937    [
938        "Offset of field: AnvilGameCountry::prestige",
939    ][::core::mem::offset_of!(AnvilGameCountry, prestige) - 32usize];
940    [
941        "Offset of field: AnvilGameCountry::manpower",
942    ][::core::mem::offset_of!(AnvilGameCountry, manpower) - 36usize];
943    [
944        "Offset of field: AnvilGameCountry::monthly_income",
945    ][::core::mem::offset_of!(AnvilGameCountry, monthly_income) - 40usize];
946};
947#[repr(C)]
948#[derive(Debug, Copy, Clone)]
949pub struct AnvilGameWar {
950    pub size: u32,
951    pub reserved: u32,
952    pub id: u64,
953    pub attacker: AnvilGameTag,
954    pub defender: AnvilGameTag,
955}
956#[allow(clippy::unnecessary_operation, clippy::identity_op)]
957const _: () = {
958    ["Size of AnvilGameWar"][::core::mem::size_of::<AnvilGameWar>() - 24usize];
959    ["Alignment of AnvilGameWar"][::core::mem::align_of::<AnvilGameWar>() - 8usize];
960    [
961        "Offset of field: AnvilGameWar::size",
962    ][::core::mem::offset_of!(AnvilGameWar, size) - 0usize];
963    [
964        "Offset of field: AnvilGameWar::reserved",
965    ][::core::mem::offset_of!(AnvilGameWar, reserved) - 4usize];
966    [
967        "Offset of field: AnvilGameWar::id",
968    ][::core::mem::offset_of!(AnvilGameWar, id) - 8usize];
969    [
970        "Offset of field: AnvilGameWar::attacker",
971    ][::core::mem::offset_of!(AnvilGameWar, attacker) - 16usize];
972    [
973        "Offset of field: AnvilGameWar::defender",
974    ][::core::mem::offset_of!(AnvilGameWar, defender) - 20usize];
975};
976#[repr(C)]
977#[derive(Debug, Copy, Clone)]
978pub struct AnvilGameUnit {
979    pub size: u32,
980    pub kind: u32,
981    pub id: u64,
982    pub country: AnvilGameTag,
983    pub location: i32,
984    pub mission: i32,
985    pub subunits: u32,
986    pub strength: i32,
987    pub reserved: u32,
988    pub leader: u64,
989}
990#[allow(clippy::unnecessary_operation, clippy::identity_op)]
991const _: () = {
992    ["Size of AnvilGameUnit"][::core::mem::size_of::<AnvilGameUnit>() - 48usize];
993    ["Alignment of AnvilGameUnit"][::core::mem::align_of::<AnvilGameUnit>() - 8usize];
994    [
995        "Offset of field: AnvilGameUnit::size",
996    ][::core::mem::offset_of!(AnvilGameUnit, size) - 0usize];
997    [
998        "Offset of field: AnvilGameUnit::kind",
999    ][::core::mem::offset_of!(AnvilGameUnit, kind) - 4usize];
1000    [
1001        "Offset of field: AnvilGameUnit::id",
1002    ][::core::mem::offset_of!(AnvilGameUnit, id) - 8usize];
1003    [
1004        "Offset of field: AnvilGameUnit::country",
1005    ][::core::mem::offset_of!(AnvilGameUnit, country) - 16usize];
1006    [
1007        "Offset of field: AnvilGameUnit::location",
1008    ][::core::mem::offset_of!(AnvilGameUnit, location) - 20usize];
1009    [
1010        "Offset of field: AnvilGameUnit::mission",
1011    ][::core::mem::offset_of!(AnvilGameUnit, mission) - 24usize];
1012    [
1013        "Offset of field: AnvilGameUnit::subunits",
1014    ][::core::mem::offset_of!(AnvilGameUnit, subunits) - 28usize];
1015    [
1016        "Offset of field: AnvilGameUnit::strength",
1017    ][::core::mem::offset_of!(AnvilGameUnit, strength) - 32usize];
1018    [
1019        "Offset of field: AnvilGameUnit::reserved",
1020    ][::core::mem::offset_of!(AnvilGameUnit, reserved) - 36usize];
1021    [
1022        "Offset of field: AnvilGameUnit::leader",
1023    ][::core::mem::offset_of!(AnvilGameUnit, leader) - 40usize];
1024};
1025#[repr(C)]
1026#[derive(Debug, Copy, Clone)]
1027pub struct AnvilGameUnitRef {
1028    pub id: u64,
1029    pub country: AnvilGameTag,
1030    pub kind: u32,
1031}
1032#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1033const _: () = {
1034    ["Size of AnvilGameUnitRef"][::core::mem::size_of::<AnvilGameUnitRef>() - 16usize];
1035    [
1036        "Alignment of AnvilGameUnitRef",
1037    ][::core::mem::align_of::<AnvilGameUnitRef>() - 8usize];
1038    [
1039        "Offset of field: AnvilGameUnitRef::id",
1040    ][::core::mem::offset_of!(AnvilGameUnitRef, id) - 0usize];
1041    [
1042        "Offset of field: AnvilGameUnitRef::country",
1043    ][::core::mem::offset_of!(AnvilGameUnitRef, country) - 8usize];
1044    [
1045        "Offset of field: AnvilGameUnitRef::kind",
1046    ][::core::mem::offset_of!(AnvilGameUnitRef, kind) - 12usize];
1047};
1048#[repr(C)]
1049#[derive(Debug, Copy, Clone)]
1050pub struct AnvilGameWorldService {
1051    pub size: u32,
1052    pub player: ::core::option::Option<
1053        unsafe extern "C" fn(out: *mut AnvilGameTag) -> AnvilResult,
1054    >,
1055    pub province_limit: ::core::option::Option<unsafe extern "C" fn() -> i32>,
1056    pub province: ::core::option::Option<
1057        unsafe extern "C" fn(id: i32, out: *mut AnvilGameProvince) -> AnvilResult,
1058    >,
1059    pub province_name: ::core::option::Option<
1060        unsafe extern "C" fn(
1061            id: i32,
1062            utf8: *mut core::ffi::c_char,
1063            capacity: u32,
1064            length: *mut u32,
1065        ) -> AnvilResult,
1066    >,
1067    pub province_cores: ::core::option::Option<
1068        unsafe extern "C" fn(
1069            id: i32,
1070            out: *mut AnvilGameTag,
1071            capacity: u32,
1072            count: *mut u32,
1073        ) -> AnvilResult,
1074    >,
1075    pub country: ::core::option::Option<
1076        unsafe extern "C" fn(
1077            tag: *const core::ffi::c_char,
1078            out: *mut AnvilGameCountry,
1079        ) -> AnvilResult,
1080    >,
1081    pub country_provinces: ::core::option::Option<
1082        unsafe extern "C" fn(
1083            tag: *const core::ffi::c_char,
1084            ids: *mut i32,
1085            capacity: u32,
1086            count: *mut u32,
1087        ) -> AnvilResult,
1088    >,
1089    pub war_ids: ::core::option::Option<
1090        unsafe extern "C" fn(
1091            ids: *mut u64,
1092            capacity: u32,
1093            count: *mut u32,
1094        ) -> AnvilResult,
1095    >,
1096    pub war: ::core::option::Option<
1097        unsafe extern "C" fn(id: u64, out: *mut AnvilGameWar) -> AnvilResult,
1098    >,
1099    pub war_name: ::core::option::Option<
1100        unsafe extern "C" fn(
1101            id: u64,
1102            utf8: *mut core::ffi::c_char,
1103            capacity: u32,
1104            length: *mut u32,
1105        ) -> AnvilResult,
1106    >,
1107    pub war_side: ::core::option::Option<
1108        unsafe extern "C" fn(
1109            id: u64,
1110            side: u32,
1111            out: *mut AnvilGameTag,
1112            capacity: u32,
1113            count: *mut u32,
1114        ) -> AnvilResult,
1115    >,
1116    pub modifier_id: ::core::option::Option<
1117        unsafe extern "C" fn(key: *const core::ffi::c_char, id: *mut i32) -> AnvilResult,
1118    >,
1119    pub country_modifier: ::core::option::Option<
1120        unsafe extern "C" fn(
1121            tag: *const core::ffi::c_char,
1122            id: i32,
1123            value: *mut i32,
1124        ) -> AnvilResult,
1125    >,
1126    pub province_modifier: ::core::option::Option<
1127        unsafe extern "C" fn(province: i32, id: i32, value: *mut i32) -> AnvilResult,
1128    >,
1129    pub country_units: ::core::option::Option<
1130        unsafe extern "C" fn(
1131            tag: *const core::ffi::c_char,
1132            ids: *mut u64,
1133            capacity: u32,
1134            count: *mut u32,
1135        ) -> AnvilResult,
1136    >,
1137    pub unit: ::core::option::Option<
1138        unsafe extern "C" fn(
1139            tag: *const core::ffi::c_char,
1140            id: u64,
1141            out: *mut AnvilGameUnit,
1142        ) -> AnvilResult,
1143    >,
1144    pub unit_name: ::core::option::Option<
1145        unsafe extern "C" fn(
1146            tag: *const core::ffi::c_char,
1147            id: u64,
1148            utf8: *mut core::ffi::c_char,
1149            capacity: u32,
1150            length: *mut u32,
1151        ) -> AnvilResult,
1152    >,
1153    pub unit_leader_name: ::core::option::Option<
1154        unsafe extern "C" fn(
1155            tag: *const core::ffi::c_char,
1156            id: u64,
1157            utf8: *mut core::ffi::c_char,
1158            capacity: u32,
1159            length: *mut u32,
1160        ) -> AnvilResult,
1161    >,
1162    pub selected_units: ::core::option::Option<
1163        unsafe extern "C" fn(
1164            out: *mut AnvilGameUnitRef,
1165            capacity: u32,
1166            count: *mut u32,
1167        ) -> AnvilResult,
1168    >,
1169}
1170#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1171const _: () = {
1172    [
1173        "Size of AnvilGameWorldService",
1174    ][::core::mem::size_of::<AnvilGameWorldService>() - 160usize];
1175    [
1176        "Alignment of AnvilGameWorldService",
1177    ][::core::mem::align_of::<AnvilGameWorldService>() - 8usize];
1178    [
1179        "Offset of field: AnvilGameWorldService::size",
1180    ][::core::mem::offset_of!(AnvilGameWorldService, size) - 0usize];
1181    [
1182        "Offset of field: AnvilGameWorldService::player",
1183    ][::core::mem::offset_of!(AnvilGameWorldService, player) - 8usize];
1184    [
1185        "Offset of field: AnvilGameWorldService::province_limit",
1186    ][::core::mem::offset_of!(AnvilGameWorldService, province_limit) - 16usize];
1187    [
1188        "Offset of field: AnvilGameWorldService::province",
1189    ][::core::mem::offset_of!(AnvilGameWorldService, province) - 24usize];
1190    [
1191        "Offset of field: AnvilGameWorldService::province_name",
1192    ][::core::mem::offset_of!(AnvilGameWorldService, province_name) - 32usize];
1193    [
1194        "Offset of field: AnvilGameWorldService::province_cores",
1195    ][::core::mem::offset_of!(AnvilGameWorldService, province_cores) - 40usize];
1196    [
1197        "Offset of field: AnvilGameWorldService::country",
1198    ][::core::mem::offset_of!(AnvilGameWorldService, country) - 48usize];
1199    [
1200        "Offset of field: AnvilGameWorldService::country_provinces",
1201    ][::core::mem::offset_of!(AnvilGameWorldService, country_provinces) - 56usize];
1202    [
1203        "Offset of field: AnvilGameWorldService::war_ids",
1204    ][::core::mem::offset_of!(AnvilGameWorldService, war_ids) - 64usize];
1205    [
1206        "Offset of field: AnvilGameWorldService::war",
1207    ][::core::mem::offset_of!(AnvilGameWorldService, war) - 72usize];
1208    [
1209        "Offset of field: AnvilGameWorldService::war_name",
1210    ][::core::mem::offset_of!(AnvilGameWorldService, war_name) - 80usize];
1211    [
1212        "Offset of field: AnvilGameWorldService::war_side",
1213    ][::core::mem::offset_of!(AnvilGameWorldService, war_side) - 88usize];
1214    [
1215        "Offset of field: AnvilGameWorldService::modifier_id",
1216    ][::core::mem::offset_of!(AnvilGameWorldService, modifier_id) - 96usize];
1217    [
1218        "Offset of field: AnvilGameWorldService::country_modifier",
1219    ][::core::mem::offset_of!(AnvilGameWorldService, country_modifier) - 104usize];
1220    [
1221        "Offset of field: AnvilGameWorldService::province_modifier",
1222    ][::core::mem::offset_of!(AnvilGameWorldService, province_modifier) - 112usize];
1223    [
1224        "Offset of field: AnvilGameWorldService::country_units",
1225    ][::core::mem::offset_of!(AnvilGameWorldService, country_units) - 120usize];
1226    [
1227        "Offset of field: AnvilGameWorldService::unit",
1228    ][::core::mem::offset_of!(AnvilGameWorldService, unit) - 128usize];
1229    [
1230        "Offset of field: AnvilGameWorldService::unit_name",
1231    ][::core::mem::offset_of!(AnvilGameWorldService, unit_name) - 136usize];
1232    [
1233        "Offset of field: AnvilGameWorldService::unit_leader_name",
1234    ][::core::mem::offset_of!(AnvilGameWorldService, unit_leader_name) - 144usize];
1235    [
1236        "Offset of field: AnvilGameWorldService::selected_units",
1237    ][::core::mem::offset_of!(AnvilGameWorldService, selected_units) - 152usize];
1238};
1239#[repr(C)]
1240#[derive(Debug)]
1241pub struct AnvilPanel {
1242    _unused: [u8; 0],
1243}
1244pub const ANVIL_PANEL_TEXT: AnvilPanelRowKind = 1;
1245pub const ANVIL_PANEL_BUTTON: AnvilPanelRowKind = 2;
1246pub const ANVIL_PANEL_SEPARATOR: AnvilPanelRowKind = 3;
1247pub type AnvilPanelRowKind = core::ffi::c_int;
1248#[repr(C)]
1249#[derive(Debug, Copy, Clone)]
1250pub struct AnvilPanelRow {
1251    pub kind: u32,
1252    pub reserved: u32,
1253    pub label: *const core::ffi::c_char,
1254    pub value: *const core::ffi::c_char,
1255    pub id: u64,
1256}
1257#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1258const _: () = {
1259    ["Size of AnvilPanelRow"][::core::mem::size_of::<AnvilPanelRow>() - 32usize];
1260    ["Alignment of AnvilPanelRow"][::core::mem::align_of::<AnvilPanelRow>() - 8usize];
1261    [
1262        "Offset of field: AnvilPanelRow::kind",
1263    ][::core::mem::offset_of!(AnvilPanelRow, kind) - 0usize];
1264    [
1265        "Offset of field: AnvilPanelRow::reserved",
1266    ][::core::mem::offset_of!(AnvilPanelRow, reserved) - 4usize];
1267    [
1268        "Offset of field: AnvilPanelRow::label",
1269    ][::core::mem::offset_of!(AnvilPanelRow, label) - 8usize];
1270    [
1271        "Offset of field: AnvilPanelRow::value",
1272    ][::core::mem::offset_of!(AnvilPanelRow, value) - 16usize];
1273    [
1274        "Offset of field: AnvilPanelRow::id",
1275    ][::core::mem::offset_of!(AnvilPanelRow, id) - 24usize];
1276};
1277pub type AnvilPanelClick = ::core::option::Option<
1278    unsafe extern "C" fn(context: *mut core::ffi::c_void, id: u64),
1279>;
1280#[repr(C)]
1281#[derive(Debug, Copy, Clone)]
1282pub struct AnvilPanelService {
1283    pub size: u32,
1284    pub create: ::core::option::Option<
1285        unsafe extern "C" fn(
1286            title: *const core::ffi::c_char,
1287            out: *mut *mut AnvilPanel,
1288        ) -> AnvilResult,
1289    >,
1290    pub set_rows: ::core::option::Option<
1291        unsafe extern "C" fn(
1292            panel: *mut AnvilPanel,
1293            rows: *const AnvilPanelRow,
1294            count: u32,
1295            row_size: u32,
1296        ) -> AnvilResult,
1297    >,
1298    pub on_click: ::core::option::Option<
1299        unsafe extern "C" fn(
1300            panel: *mut AnvilPanel,
1301            click: AnvilPanelClick,
1302            context: *mut core::ffi::c_void,
1303        ) -> AnvilResult,
1304    >,
1305    pub show: ::core::option::Option<
1306        unsafe extern "C" fn(
1307            panel: *mut AnvilPanel,
1308            shown: core::ffi::c_int,
1309        ) -> AnvilResult,
1310    >,
1311    pub shown: ::core::option::Option<
1312        unsafe extern "C" fn(panel: *const AnvilPanel) -> core::ffi::c_int,
1313    >,
1314    pub language: ::core::option::Option<
1315        unsafe extern "C" fn() -> *const core::ffi::c_char,
1316    >,
1317}
1318#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1319const _: () = {
1320    ["Size of AnvilPanelService"][::core::mem::size_of::<AnvilPanelService>() - 56usize];
1321    [
1322        "Alignment of AnvilPanelService",
1323    ][::core::mem::align_of::<AnvilPanelService>() - 8usize];
1324    [
1325        "Offset of field: AnvilPanelService::size",
1326    ][::core::mem::offset_of!(AnvilPanelService, size) - 0usize];
1327    [
1328        "Offset of field: AnvilPanelService::create",
1329    ][::core::mem::offset_of!(AnvilPanelService, create) - 8usize];
1330    [
1331        "Offset of field: AnvilPanelService::set_rows",
1332    ][::core::mem::offset_of!(AnvilPanelService, set_rows) - 16usize];
1333    [
1334        "Offset of field: AnvilPanelService::on_click",
1335    ][::core::mem::offset_of!(AnvilPanelService, on_click) - 24usize];
1336    [
1337        "Offset of field: AnvilPanelService::show",
1338    ][::core::mem::offset_of!(AnvilPanelService, show) - 32usize];
1339    [
1340        "Offset of field: AnvilPanelService::shown",
1341    ][::core::mem::offset_of!(AnvilPanelService, shown) - 40usize];
1342    [
1343        "Offset of field: AnvilPanelService::language",
1344    ][::core::mem::offset_of!(AnvilPanelService, language) - 48usize];
1345};
1346pub const ANVIL_BENCHMARK_INT: AnvilBenchmarkKind = 1;
1347pub const ANVIL_BENCHMARK_NUMBER: AnvilBenchmarkKind = 2;
1348pub const ANVIL_BENCHMARK_ENUM: AnvilBenchmarkKind = 3;
1349pub const ANVIL_BENCHMARK_FLAG: AnvilBenchmarkKind = 4;
1350pub type AnvilBenchmarkKind = core::ffi::c_int;
1351pub const ANVIL_BENCHMARK_UNIT_NONE: AnvilBenchmarkUnit = 0;
1352pub const ANVIL_BENCHMARK_UNIT_MS: AnvilBenchmarkUnit = 1;
1353pub const ANVIL_BENCHMARK_UNIT_COUNT: AnvilBenchmarkUnit = 2;
1354pub const ANVIL_BENCHMARK_UNIT_BYTES: AnvilBenchmarkUnit = 3;
1355pub const ANVIL_BENCHMARK_UNIT_MB: AnvilBenchmarkUnit = 4;
1356pub const ANVIL_BENCHMARK_UNIT_PERCENT: AnvilBenchmarkUnit = 5;
1357pub type AnvilBenchmarkUnit = core::ffi::c_int;
1358#[repr(C)]
1359#[derive(Debug, Copy, Clone)]
1360pub struct AnvilBenchmarkField {
1361    pub name: *const core::ffi::c_char,
1362    pub kind: u32,
1363    pub unit: u32,
1364    pub label: *const core::ffi::c_char,
1365    pub options: *const *const core::ffi::c_char,
1366    pub option_count: u32,
1367}
1368#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1369const _: () = {
1370    [
1371        "Size of AnvilBenchmarkField",
1372    ][::core::mem::size_of::<AnvilBenchmarkField>() - 40usize];
1373    [
1374        "Alignment of AnvilBenchmarkField",
1375    ][::core::mem::align_of::<AnvilBenchmarkField>() - 8usize];
1376    [
1377        "Offset of field: AnvilBenchmarkField::name",
1378    ][::core::mem::offset_of!(AnvilBenchmarkField, name) - 0usize];
1379    [
1380        "Offset of field: AnvilBenchmarkField::kind",
1381    ][::core::mem::offset_of!(AnvilBenchmarkField, kind) - 8usize];
1382    [
1383        "Offset of field: AnvilBenchmarkField::unit",
1384    ][::core::mem::offset_of!(AnvilBenchmarkField, unit) - 12usize];
1385    [
1386        "Offset of field: AnvilBenchmarkField::label",
1387    ][::core::mem::offset_of!(AnvilBenchmarkField, label) - 16usize];
1388    [
1389        "Offset of field: AnvilBenchmarkField::options",
1390    ][::core::mem::offset_of!(AnvilBenchmarkField, options) - 24usize];
1391    [
1392        "Offset of field: AnvilBenchmarkField::option_count",
1393    ][::core::mem::offset_of!(AnvilBenchmarkField, option_count) - 32usize];
1394};
1395#[repr(C)]
1396#[derive(Debug, Copy, Clone)]
1397pub struct AnvilBenchmarkService {
1398    pub size: u32,
1399    pub active: ::core::option::Option<unsafe extern "C" fn() -> core::ffi::c_int>,
1400    pub declare: ::core::option::Option<
1401        unsafe extern "C" fn(
1402            self_: *mut AnvilPlugin,
1403            fields: *const AnvilBenchmarkField,
1404            count: u32,
1405        ) -> AnvilResult,
1406    >,
1407    pub set_int: ::core::option::Option<
1408        unsafe extern "C" fn(
1409            self_: *mut AnvilPlugin,
1410            field: *const core::ffi::c_char,
1411            value: i64,
1412        ) -> AnvilResult,
1413    >,
1414    pub set_number: ::core::option::Option<
1415        unsafe extern "C" fn(
1416            self_: *mut AnvilPlugin,
1417            field: *const core::ffi::c_char,
1418            value: f64,
1419        ) -> AnvilResult,
1420    >,
1421    pub set_enum: ::core::option::Option<
1422        unsafe extern "C" fn(
1423            self_: *mut AnvilPlugin,
1424            field: *const core::ffi::c_char,
1425            option: *const core::ffi::c_char,
1426        ) -> AnvilResult,
1427    >,
1428    pub set_flag: ::core::option::Option<
1429        unsafe extern "C" fn(
1430            self_: *mut AnvilPlugin,
1431            field: *const core::ffi::c_char,
1432            value: core::ffi::c_int,
1433        ) -> AnvilResult,
1434    >,
1435    pub done: ::core::option::Option<
1436        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> AnvilResult,
1437    >,
1438    pub learning: ::core::option::Option<
1439        unsafe extern "C" fn(
1440            self_: *mut AnvilPlugin,
1441            reason: *const core::ffi::c_char,
1442        ) -> AnvilResult,
1443    >,
1444    pub open_cost: ::core::option::Option<
1445        unsafe extern "C" fn(self_: *mut AnvilPlugin, files: u64, ms: f64) -> AnvilResult,
1446    >,
1447}
1448#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1449const _: () = {
1450    [
1451        "Size of AnvilBenchmarkService",
1452    ][::core::mem::size_of::<AnvilBenchmarkService>() - 80usize];
1453    [
1454        "Alignment of AnvilBenchmarkService",
1455    ][::core::mem::align_of::<AnvilBenchmarkService>() - 8usize];
1456    [
1457        "Offset of field: AnvilBenchmarkService::size",
1458    ][::core::mem::offset_of!(AnvilBenchmarkService, size) - 0usize];
1459    [
1460        "Offset of field: AnvilBenchmarkService::active",
1461    ][::core::mem::offset_of!(AnvilBenchmarkService, active) - 8usize];
1462    [
1463        "Offset of field: AnvilBenchmarkService::declare",
1464    ][::core::mem::offset_of!(AnvilBenchmarkService, declare) - 16usize];
1465    [
1466        "Offset of field: AnvilBenchmarkService::set_int",
1467    ][::core::mem::offset_of!(AnvilBenchmarkService, set_int) - 24usize];
1468    [
1469        "Offset of field: AnvilBenchmarkService::set_number",
1470    ][::core::mem::offset_of!(AnvilBenchmarkService, set_number) - 32usize];
1471    [
1472        "Offset of field: AnvilBenchmarkService::set_enum",
1473    ][::core::mem::offset_of!(AnvilBenchmarkService, set_enum) - 40usize];
1474    [
1475        "Offset of field: AnvilBenchmarkService::set_flag",
1476    ][::core::mem::offset_of!(AnvilBenchmarkService, set_flag) - 48usize];
1477    [
1478        "Offset of field: AnvilBenchmarkService::done",
1479    ][::core::mem::offset_of!(AnvilBenchmarkService, done) - 56usize];
1480    [
1481        "Offset of field: AnvilBenchmarkService::learning",
1482    ][::core::mem::offset_of!(AnvilBenchmarkService, learning) - 64usize];
1483    [
1484        "Offset of field: AnvilBenchmarkService::open_cost",
1485    ][::core::mem::offset_of!(AnvilBenchmarkService, open_cost) - 72usize];
1486};
1487pub const ANVIL_MAP_TAB_DEFAULT: AnvilMapTab = 0;
1488pub const ANVIL_MAP_TAB_1: AnvilMapTab = 1;
1489pub const ANVIL_MAP_TAB_2: AnvilMapTab = 2;
1490pub const ANVIL_MAP_TAB_3: AnvilMapTab = 3;
1491pub const ANVIL_MAP_TAB_4: AnvilMapTab = 4;
1492pub type AnvilMapTab = core::ffi::c_int;
1493#[repr(C)]
1494#[derive(Debug)]
1495pub struct AnvilMapMode {
1496    _unused: [u8; 0],
1497}
1498pub type AnvilMapDescribe = ::core::option::Option<
1499    unsafe extern "C" fn(
1500        context: *mut core::ffi::c_void,
1501        mode: *const AnvilMapMode,
1502        province: i32,
1503        text: *mut core::ffi::c_char,
1504        capacity: usize,
1505    ) -> usize,
1506>;
1507#[repr(C)]
1508#[derive(Debug, Copy, Clone)]
1509pub struct AnvilMapModeInfo {
1510    pub size: u32,
1511    pub tab: u32,
1512    pub id: *const core::ffi::c_char,
1513    pub label: *const core::ffi::c_char,
1514    pub description: *const core::ffi::c_char,
1515    pub sprite: *const core::ffi::c_char,
1516    pub describe: AnvilMapDescribe,
1517    pub context: *mut core::ffi::c_void,
1518}
1519#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1520const _: () = {
1521    ["Size of AnvilMapModeInfo"][::core::mem::size_of::<AnvilMapModeInfo>() - 56usize];
1522    [
1523        "Alignment of AnvilMapModeInfo",
1524    ][::core::mem::align_of::<AnvilMapModeInfo>() - 8usize];
1525    [
1526        "Offset of field: AnvilMapModeInfo::size",
1527    ][::core::mem::offset_of!(AnvilMapModeInfo, size) - 0usize];
1528    [
1529        "Offset of field: AnvilMapModeInfo::tab",
1530    ][::core::mem::offset_of!(AnvilMapModeInfo, tab) - 4usize];
1531    [
1532        "Offset of field: AnvilMapModeInfo::id",
1533    ][::core::mem::offset_of!(AnvilMapModeInfo, id) - 8usize];
1534    [
1535        "Offset of field: AnvilMapModeInfo::label",
1536    ][::core::mem::offset_of!(AnvilMapModeInfo, label) - 16usize];
1537    [
1538        "Offset of field: AnvilMapModeInfo::description",
1539    ][::core::mem::offset_of!(AnvilMapModeInfo, description) - 24usize];
1540    [
1541        "Offset of field: AnvilMapModeInfo::sprite",
1542    ][::core::mem::offset_of!(AnvilMapModeInfo, sprite) - 32usize];
1543    [
1544        "Offset of field: AnvilMapModeInfo::describe",
1545    ][::core::mem::offset_of!(AnvilMapModeInfo, describe) - 40usize];
1546    [
1547        "Offset of field: AnvilMapModeInfo::context",
1548    ][::core::mem::offset_of!(AnvilMapModeInfo, context) - 48usize];
1549};
1550#[repr(C)]
1551#[derive(Debug, Copy, Clone)]
1552pub struct AnvilMapModeChange {
1553    pub size: u32,
1554    pub reserved: u32,
1555    pub mode: *const AnvilMapMode,
1556    pub id: *const core::ffi::c_char,
1557}
1558#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1559const _: () = {
1560    [
1561        "Size of AnvilMapModeChange",
1562    ][::core::mem::size_of::<AnvilMapModeChange>() - 24usize];
1563    [
1564        "Alignment of AnvilMapModeChange",
1565    ][::core::mem::align_of::<AnvilMapModeChange>() - 8usize];
1566    [
1567        "Offset of field: AnvilMapModeChange::size",
1568    ][::core::mem::offset_of!(AnvilMapModeChange, size) - 0usize];
1569    [
1570        "Offset of field: AnvilMapModeChange::reserved",
1571    ][::core::mem::offset_of!(AnvilMapModeChange, reserved) - 4usize];
1572    [
1573        "Offset of field: AnvilMapModeChange::mode",
1574    ][::core::mem::offset_of!(AnvilMapModeChange, mode) - 8usize];
1575    [
1576        "Offset of field: AnvilMapModeChange::id",
1577    ][::core::mem::offset_of!(AnvilMapModeChange, id) - 16usize];
1578};
1579#[repr(C)]
1580#[derive(Debug, Copy, Clone)]
1581pub struct AnvilMapModesService {
1582    pub size: u32,
1583    pub register_mode: ::core::option::Option<
1584        unsafe extern "C" fn(
1585            info: *const AnvilMapModeInfo,
1586            out: *mut *const AnvilMapMode,
1587        ) -> AnvilResult,
1588    >,
1589    pub set_colors: ::core::option::Option<
1590        unsafe extern "C" fn(
1591            mode: *const AnvilMapMode,
1592            colors: *const u32,
1593            count: u32,
1594        ) -> AnvilResult,
1595    >,
1596    pub mode_id: ::core::option::Option<
1597        unsafe extern "C" fn(number: i32) -> *const core::ffi::c_char,
1598    >,
1599    pub shown: ::core::option::Option<unsafe extern "C" fn() -> *const AnvilMapMode>,
1600    pub id: ::core::option::Option<
1601        unsafe extern "C" fn(mode: *const AnvilMapMode) -> *const core::ffi::c_char,
1602    >,
1603}
1604#[allow(clippy::unnecessary_operation, clippy::identity_op)]
1605const _: () = {
1606    [
1607        "Size of AnvilMapModesService",
1608    ][::core::mem::size_of::<AnvilMapModesService>() - 48usize];
1609    [
1610        "Alignment of AnvilMapModesService",
1611    ][::core::mem::align_of::<AnvilMapModesService>() - 8usize];
1612    [
1613        "Offset of field: AnvilMapModesService::size",
1614    ][::core::mem::offset_of!(AnvilMapModesService, size) - 0usize];
1615    [
1616        "Offset of field: AnvilMapModesService::register_mode",
1617    ][::core::mem::offset_of!(AnvilMapModesService, register_mode) - 8usize];
1618    [
1619        "Offset of field: AnvilMapModesService::set_colors",
1620    ][::core::mem::offset_of!(AnvilMapModesService, set_colors) - 16usize];
1621    [
1622        "Offset of field: AnvilMapModesService::mode_id",
1623    ][::core::mem::offset_of!(AnvilMapModesService, mode_id) - 24usize];
1624    [
1625        "Offset of field: AnvilMapModesService::shown",
1626    ][::core::mem::offset_of!(AnvilMapModesService, shown) - 32usize];
1627    [
1628        "Offset of field: AnvilMapModesService::id",
1629    ][::core::mem::offset_of!(AnvilMapModesService, id) - 40usize];
1630};