1pub 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};