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_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};