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