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