Skip to main content

anvil_sys/
bindings.rs

1/* automatically generated by rust-bindgen 0.73.2 */
2
3// @generated by sdk/rust/regen-bindings.ps1 from include/anvil/anvil_plugin.h. Do not edit.
4
5pub const ANVIL_API_VERSION: u32 = 2;
6pub const ANVIL_EVENT_PLUGINS_LOADED: &[u8; 21] = b"anvil.plugins_loaded\0";
7pub const ANVIL_EVENT_SUSPENDED: &[u8; 16] = b"anvil.suspended\0";
8pub const ANVIL_EVENT_RESUMED: &[u8; 14] = b"anvil.resumed\0";
9pub type wchar_t = core::ffi::c_ushort;
10#[repr(C)]
11#[derive(Debug)]
12pub struct AnvilPlugin {
13    _unused: [u8; 0],
14}
15#[repr(C)]
16#[derive(Debug)]
17pub struct AnvilChange {
18    _unused: [u8; 0],
19}
20pub type AnvilSymbol = u32;
21pub type AnvilSetting = u32;
22pub const ANVIL_OK: AnvilResult = 0;
23pub const ANVIL_ERROR_INVALID_ARGUMENT: AnvilResult = 1;
24pub const ANVIL_ERROR_NOT_DECLARED: AnvilResult = 2;
25pub const ANVIL_ERROR_WRONG_KIND: AnvilResult = 3;
26pub const ANVIL_ERROR_CONFLICT: AnvilResult = 4;
27pub const ANVIL_ERROR_UNSAFE_SITE: AnvilResult = 5;
28pub const ANVIL_ERROR_BYTES_MISMATCH: AnvilResult = 6;
29pub const ANVIL_ERROR_OUT_OF_MEMORY: AnvilResult = 7;
30pub const ANVIL_ERROR_WRONG_PHASE: AnvilResult = 8;
31pub const ANVIL_ERROR_UNSUPPORTED: AnvilResult = 9;
32pub const ANVIL_ERROR_INTERNAL: AnvilResult = 10;
33pub const ANVIL_ERROR_NOT_FOUND: AnvilResult = 11;
34pub const ANVIL_ERROR_ALREADY_EXISTS: AnvilResult = 12;
35pub type AnvilResult = core::ffi::c_int;
36pub const ANVIL_LOG_DEBUG: AnvilLogLevel = 0;
37pub const ANVIL_LOG_INFO: AnvilLogLevel = 1;
38pub const ANVIL_LOG_WARNING: AnvilLogLevel = 2;
39pub const ANVIL_LOG_ERROR: AnvilLogLevel = 3;
40pub type AnvilLogLevel = core::ffi::c_int;
41#[repr(C)]
42#[derive(Debug, Copy, Clone)]
43pub struct AnvilGameInfo {
44    pub size: u32,
45    pub build_id: *const core::ffi::c_char,
46    pub image_base: usize,
47    pub image_size: u32,
48    pub sha256: *const core::ffi::c_char,
49}
50#[allow(clippy::unnecessary_operation, clippy::identity_op)]
51const _: () = {
52    ["Size of AnvilGameInfo"][::core::mem::size_of::<AnvilGameInfo>() - 40usize];
53    ["Alignment of AnvilGameInfo"][::core::mem::align_of::<AnvilGameInfo>() - 8usize];
54    [
55        "Offset of field: AnvilGameInfo::size",
56    ][::core::mem::offset_of!(AnvilGameInfo, size) - 0usize];
57    [
58        "Offset of field: AnvilGameInfo::build_id",
59    ][::core::mem::offset_of!(AnvilGameInfo, build_id) - 8usize];
60    [
61        "Offset of field: AnvilGameInfo::image_base",
62    ][::core::mem::offset_of!(AnvilGameInfo, image_base) - 16usize];
63    [
64        "Offset of field: AnvilGameInfo::image_size",
65    ][::core::mem::offset_of!(AnvilGameInfo, image_size) - 24usize];
66    [
67        "Offset of field: AnvilGameInfo::sha256",
68    ][::core::mem::offset_of!(AnvilGameInfo, sha256) - 32usize];
69};
70#[repr(C)]
71#[derive(Copy, Clone)]
72pub union AnvilXmm {
73    pub u8_: [u8; 16usize],
74    pub u16_: [u16; 8usize],
75    pub u32_: [u32; 4usize],
76    pub u64_: [u64; 2usize],
77    pub f32_: [f32; 4usize],
78    pub f64_: [f64; 2usize],
79}
80#[allow(clippy::unnecessary_operation, clippy::identity_op)]
81const _: () = {
82    ["Size of AnvilXmm"][::core::mem::size_of::<AnvilXmm>() - 16usize];
83    ["Alignment of AnvilXmm"][::core::mem::align_of::<AnvilXmm>() - 8usize];
84    ["Offset of field: AnvilXmm::u8_"][::core::mem::offset_of!(AnvilXmm, u8_) - 0usize];
85    [
86        "Offset of field: AnvilXmm::u16_",
87    ][::core::mem::offset_of!(AnvilXmm, u16_) - 0usize];
88    [
89        "Offset of field: AnvilXmm::u32_",
90    ][::core::mem::offset_of!(AnvilXmm, u32_) - 0usize];
91    [
92        "Offset of field: AnvilXmm::u64_",
93    ][::core::mem::offset_of!(AnvilXmm, u64_) - 0usize];
94    [
95        "Offset of field: AnvilXmm::f32_",
96    ][::core::mem::offset_of!(AnvilXmm, f32_) - 0usize];
97    [
98        "Offset of field: AnvilXmm::f64_",
99    ][::core::mem::offset_of!(AnvilXmm, f64_) - 0usize];
100};
101#[repr(C)]
102#[derive(Copy, Clone)]
103pub struct AnvilCpuContext {
104    pub xmm: [AnvilXmm; 16usize],
105    pub rflags: usize,
106    pub r15: usize,
107    pub r14: usize,
108    pub r13: usize,
109    pub r12: usize,
110    pub r11: usize,
111    pub r10: usize,
112    pub r9: usize,
113    pub r8: usize,
114    pub rdi: usize,
115    pub rsi: usize,
116    pub rdx: usize,
117    pub rcx: usize,
118    pub rbx: usize,
119    pub rax: usize,
120    pub rbp: usize,
121    pub rsp: usize,
122    pub reserved: usize,
123    pub rip: usize,
124}
125#[allow(clippy::unnecessary_operation, clippy::identity_op)]
126const _: () = {
127    ["Size of AnvilCpuContext"][::core::mem::size_of::<AnvilCpuContext>() - 408usize];
128    [
129        "Alignment of AnvilCpuContext",
130    ][::core::mem::align_of::<AnvilCpuContext>() - 8usize];
131    [
132        "Offset of field: AnvilCpuContext::xmm",
133    ][::core::mem::offset_of!(AnvilCpuContext, xmm) - 0usize];
134    [
135        "Offset of field: AnvilCpuContext::rflags",
136    ][::core::mem::offset_of!(AnvilCpuContext, rflags) - 256usize];
137    [
138        "Offset of field: AnvilCpuContext::r15",
139    ][::core::mem::offset_of!(AnvilCpuContext, r15) - 264usize];
140    [
141        "Offset of field: AnvilCpuContext::r14",
142    ][::core::mem::offset_of!(AnvilCpuContext, r14) - 272usize];
143    [
144        "Offset of field: AnvilCpuContext::r13",
145    ][::core::mem::offset_of!(AnvilCpuContext, r13) - 280usize];
146    [
147        "Offset of field: AnvilCpuContext::r12",
148    ][::core::mem::offset_of!(AnvilCpuContext, r12) - 288usize];
149    [
150        "Offset of field: AnvilCpuContext::r11",
151    ][::core::mem::offset_of!(AnvilCpuContext, r11) - 296usize];
152    [
153        "Offset of field: AnvilCpuContext::r10",
154    ][::core::mem::offset_of!(AnvilCpuContext, r10) - 304usize];
155    [
156        "Offset of field: AnvilCpuContext::r9",
157    ][::core::mem::offset_of!(AnvilCpuContext, r9) - 312usize];
158    [
159        "Offset of field: AnvilCpuContext::r8",
160    ][::core::mem::offset_of!(AnvilCpuContext, r8) - 320usize];
161    [
162        "Offset of field: AnvilCpuContext::rdi",
163    ][::core::mem::offset_of!(AnvilCpuContext, rdi) - 328usize];
164    [
165        "Offset of field: AnvilCpuContext::rsi",
166    ][::core::mem::offset_of!(AnvilCpuContext, rsi) - 336usize];
167    [
168        "Offset of field: AnvilCpuContext::rdx",
169    ][::core::mem::offset_of!(AnvilCpuContext, rdx) - 344usize];
170    [
171        "Offset of field: AnvilCpuContext::rcx",
172    ][::core::mem::offset_of!(AnvilCpuContext, rcx) - 352usize];
173    [
174        "Offset of field: AnvilCpuContext::rbx",
175    ][::core::mem::offset_of!(AnvilCpuContext, rbx) - 360usize];
176    [
177        "Offset of field: AnvilCpuContext::rax",
178    ][::core::mem::offset_of!(AnvilCpuContext, rax) - 368usize];
179    [
180        "Offset of field: AnvilCpuContext::rbp",
181    ][::core::mem::offset_of!(AnvilCpuContext, rbp) - 376usize];
182    [
183        "Offset of field: AnvilCpuContext::rsp",
184    ][::core::mem::offset_of!(AnvilCpuContext, rsp) - 384usize];
185    [
186        "Offset of field: AnvilCpuContext::reserved",
187    ][::core::mem::offset_of!(AnvilCpuContext, reserved) - 392usize];
188    [
189        "Offset of field: AnvilCpuContext::rip",
190    ][::core::mem::offset_of!(AnvilCpuContext, rip) - 400usize];
191};
192pub type AnvilCpuCallback = ::core::option::Option<
193    unsafe extern "C" fn(cpu: *mut AnvilCpuContext, user: *mut core::ffi::c_void),
194>;
195pub type AnvilEventCallback = ::core::option::Option<
196    unsafe extern "C" fn(
197        event: *const core::ffi::c_char,
198        payload: *const core::ffi::c_void,
199        context: *mut core::ffi::c_void,
200    ),
201>;
202pub type AnvilSettingCallback = ::core::option::Option<
203    unsafe extern "C" fn(setting: AnvilSetting, context: *mut core::ffi::c_void),
204>;
205#[repr(C)]
206#[derive(Debug, Copy, Clone)]
207pub struct AnvilHost {
208    pub size: u32,
209    pub api_version: u32,
210    pub anvil_version: *const core::ffi::c_char,
211    pub game: *const AnvilGameInfo,
212    pub log: ::core::option::Option<
213        unsafe extern "C" fn(
214            self_: *mut AnvilPlugin,
215            level: AnvilLogLevel,
216            message: *const core::ffi::c_char,
217        ),
218    >,
219    pub plugin_dir: ::core::option::Option<
220        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> *const wchar_t,
221    >,
222    pub data_dir: ::core::option::Option<
223        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> *const wchar_t,
224    >,
225    pub hook_function: ::core::option::Option<
226        unsafe extern "C" fn(
227            self_: *mut AnvilPlugin,
228            fn_: AnvilSymbol,
229            detour: *mut core::ffi::c_void,
230            next: *mut *mut core::ffi::c_void,
231            out: *mut *mut AnvilChange,
232        ) -> AnvilResult,
233    >,
234    pub mid_hook: ::core::option::Option<
235        unsafe extern "C" fn(
236            self_: *mut AnvilPlugin,
237            site: AnvilSymbol,
238            callback: AnvilCpuCallback,
239            user: *mut core::ffi::c_void,
240            out: *mut *mut AnvilChange,
241        ) -> AnvilResult,
242    >,
243    pub replace_block: ::core::option::Option<
244        unsafe extern "C" fn(
245            self_: *mut AnvilPlugin,
246            block: AnvilSymbol,
247            callback: AnvilCpuCallback,
248            user: *mut core::ffi::c_void,
249            out: *mut *mut AnvilChange,
250        ) -> AnvilResult,
251    >,
252    pub redirect_call: ::core::option::Option<
253        unsafe extern "C" fn(
254            self_: *mut AnvilPlugin,
255            call_site: AnvilSymbol,
256            target: *mut core::ffi::c_void,
257            next: *mut *mut core::ffi::c_void,
258            out: *mut *mut AnvilChange,
259        ) -> AnvilResult,
260    >,
261    pub patch_bytes: ::core::option::Option<
262        unsafe extern "C" fn(
263            self_: *mut AnvilPlugin,
264            site: AnvilSymbol,
265            bytes: *const core::ffi::c_void,
266            size: usize,
267            out: *mut *mut AnvilChange,
268        ) -> AnvilResult,
269    >,
270    pub swap_pointer: ::core::option::Option<
271        unsafe extern "C" fn(
272            self_: *mut AnvilPlugin,
273            slot: AnvilSymbol,
274            value: *mut core::ffi::c_void,
275            previous: *mut *mut core::ffi::c_void,
276            out: *mut *mut AnvilChange,
277        ) -> AnvilResult,
278    >,
279    pub replace_import: ::core::option::Option<
280        unsafe extern "C" fn(
281            self_: *mut AnvilPlugin,
282            module: *const core::ffi::c_char,
283            function: *const core::ffi::c_char,
284            replacement: *mut core::ffi::c_void,
285            next: *mut *mut core::ffi::c_void,
286            out: *mut *mut AnvilChange,
287        ) -> AnvilResult,
288    >,
289    pub hook_function_at: ::core::option::Option<
290        unsafe extern "C" fn(
291            self_: *mut AnvilPlugin,
292            address: *mut core::ffi::c_void,
293            expected_prologue: *const core::ffi::c_void,
294            prologue_size: usize,
295            detour: *mut core::ffi::c_void,
296            next: *mut *mut core::ffi::c_void,
297            out: *mut *mut AnvilChange,
298        ) -> AnvilResult,
299    >,
300    pub mid_hook_at: ::core::option::Option<
301        unsafe extern "C" fn(
302            self_: *mut AnvilPlugin,
303            address: *mut core::ffi::c_void,
304            expected: *const core::ffi::c_void,
305            expected_size: usize,
306            callback: AnvilCpuCallback,
307            user: *mut core::ffi::c_void,
308            out: *mut *mut AnvilChange,
309        ) -> AnvilResult,
310    >,
311    pub remove: ::core::option::Option<
312        unsafe extern "C" fn(
313            self_: *mut AnvilPlugin,
314            change: *mut AnvilChange,
315        ) -> AnvilResult,
316    >,
317    pub begin_group: ::core::option::Option<
318        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> AnvilResult,
319    >,
320    pub commit_group: ::core::option::Option<
321        unsafe extern "C" fn(self_: *mut AnvilPlugin) -> AnvilResult,
322    >,
323    pub abort_group: ::core::option::Option<
324        unsafe extern "C" fn(self_: *mut AnvilPlugin),
325    >,
326    pub address_of: ::core::option::Option<
327        unsafe extern "C" fn(
328            self_: *mut AnvilPlugin,
329            symbol: AnvilSymbol,
330        ) -> *mut core::ffi::c_void,
331    >,
332    pub symbol_value: ::core::option::Option<
333        unsafe extern "C" fn(
334            self_: *mut AnvilPlugin,
335            symbol: AnvilSymbol,
336            name: *const core::ffi::c_char,
337            out: *mut u64,
338        ) -> AnvilResult,
339    >,
340    pub setting_bool: ::core::option::Option<
341        unsafe extern "C" fn(
342            self_: *mut AnvilPlugin,
343            setting: AnvilSetting,
344        ) -> core::ffi::c_int,
345    >,
346    pub setting_int: ::core::option::Option<
347        unsafe extern "C" fn(self_: *mut AnvilPlugin, setting: AnvilSetting) -> i64,
348    >,
349    pub setting_float: ::core::option::Option<
350        unsafe extern "C" fn(self_: *mut AnvilPlugin, setting: AnvilSetting) -> f64,
351    >,
352    pub setting_string: ::core::option::Option<
353        unsafe extern "C" fn(
354            self_: *mut AnvilPlugin,
355            setting: AnvilSetting,
356        ) -> *const core::ffi::c_char,
357    >,
358    pub subscribe_setting: ::core::option::Option<
359        unsafe extern "C" fn(
360            self_: *mut AnvilPlugin,
361            setting: AnvilSetting,
362            callback: AnvilSettingCallback,
363            context: *mut core::ffi::c_void,
364        ) -> AnvilResult,
365    >,
366    pub register_service: ::core::option::Option<
367        unsafe extern "C" fn(
368            self_: *mut AnvilPlugin,
369            name: *const core::ffi::c_char,
370            version: u32,
371            service: *const core::ffi::c_void,
372        ) -> AnvilResult,
373    >,
374    pub get_service: ::core::option::Option<
375        unsafe extern "C" fn(
376            self_: *mut AnvilPlugin,
377            name: *const core::ffi::c_char,
378            version: u32,
379        ) -> *const core::ffi::c_void,
380    >,
381    pub subscribe: ::core::option::Option<
382        unsafe extern "C" fn(
383            self_: *mut AnvilPlugin,
384            event: *const core::ffi::c_char,
385            callback: AnvilEventCallback,
386            context: *mut core::ffi::c_void,
387        ) -> AnvilResult,
388    >,
389    pub publish: ::core::option::Option<
390        unsafe extern "C" fn(
391            self_: *mut AnvilPlugin,
392            event: *const core::ffi::c_char,
393            payload: *const core::ffi::c_void,
394        ) -> AnvilResult,
395    >,
396}
397#[allow(clippy::unnecessary_operation, clippy::identity_op)]
398const _: () = {
399    ["Size of AnvilHost"][::core::mem::size_of::<AnvilHost>() - 240usize];
400    ["Alignment of AnvilHost"][::core::mem::align_of::<AnvilHost>() - 8usize];
401    [
402        "Offset of field: AnvilHost::size",
403    ][::core::mem::offset_of!(AnvilHost, size) - 0usize];
404    [
405        "Offset of field: AnvilHost::api_version",
406    ][::core::mem::offset_of!(AnvilHost, api_version) - 4usize];
407    [
408        "Offset of field: AnvilHost::anvil_version",
409    ][::core::mem::offset_of!(AnvilHost, anvil_version) - 8usize];
410    [
411        "Offset of field: AnvilHost::game",
412    ][::core::mem::offset_of!(AnvilHost, game) - 16usize];
413    [
414        "Offset of field: AnvilHost::log",
415    ][::core::mem::offset_of!(AnvilHost, log) - 24usize];
416    [
417        "Offset of field: AnvilHost::plugin_dir",
418    ][::core::mem::offset_of!(AnvilHost, plugin_dir) - 32usize];
419    [
420        "Offset of field: AnvilHost::data_dir",
421    ][::core::mem::offset_of!(AnvilHost, data_dir) - 40usize];
422    [
423        "Offset of field: AnvilHost::hook_function",
424    ][::core::mem::offset_of!(AnvilHost, hook_function) - 48usize];
425    [
426        "Offset of field: AnvilHost::mid_hook",
427    ][::core::mem::offset_of!(AnvilHost, mid_hook) - 56usize];
428    [
429        "Offset of field: AnvilHost::replace_block",
430    ][::core::mem::offset_of!(AnvilHost, replace_block) - 64usize];
431    [
432        "Offset of field: AnvilHost::redirect_call",
433    ][::core::mem::offset_of!(AnvilHost, redirect_call) - 72usize];
434    [
435        "Offset of field: AnvilHost::patch_bytes",
436    ][::core::mem::offset_of!(AnvilHost, patch_bytes) - 80usize];
437    [
438        "Offset of field: AnvilHost::swap_pointer",
439    ][::core::mem::offset_of!(AnvilHost, swap_pointer) - 88usize];
440    [
441        "Offset of field: AnvilHost::replace_import",
442    ][::core::mem::offset_of!(AnvilHost, replace_import) - 96usize];
443    [
444        "Offset of field: AnvilHost::hook_function_at",
445    ][::core::mem::offset_of!(AnvilHost, hook_function_at) - 104usize];
446    [
447        "Offset of field: AnvilHost::mid_hook_at",
448    ][::core::mem::offset_of!(AnvilHost, mid_hook_at) - 112usize];
449    [
450        "Offset of field: AnvilHost::remove",
451    ][::core::mem::offset_of!(AnvilHost, remove) - 120usize];
452    [
453        "Offset of field: AnvilHost::begin_group",
454    ][::core::mem::offset_of!(AnvilHost, begin_group) - 128usize];
455    [
456        "Offset of field: AnvilHost::commit_group",
457    ][::core::mem::offset_of!(AnvilHost, commit_group) - 136usize];
458    [
459        "Offset of field: AnvilHost::abort_group",
460    ][::core::mem::offset_of!(AnvilHost, abort_group) - 144usize];
461    [
462        "Offset of field: AnvilHost::address_of",
463    ][::core::mem::offset_of!(AnvilHost, address_of) - 152usize];
464    [
465        "Offset of field: AnvilHost::symbol_value",
466    ][::core::mem::offset_of!(AnvilHost, symbol_value) - 160usize];
467    [
468        "Offset of field: AnvilHost::setting_bool",
469    ][::core::mem::offset_of!(AnvilHost, setting_bool) - 168usize];
470    [
471        "Offset of field: AnvilHost::setting_int",
472    ][::core::mem::offset_of!(AnvilHost, setting_int) - 176usize];
473    [
474        "Offset of field: AnvilHost::setting_float",
475    ][::core::mem::offset_of!(AnvilHost, setting_float) - 184usize];
476    [
477        "Offset of field: AnvilHost::setting_string",
478    ][::core::mem::offset_of!(AnvilHost, setting_string) - 192usize];
479    [
480        "Offset of field: AnvilHost::subscribe_setting",
481    ][::core::mem::offset_of!(AnvilHost, subscribe_setting) - 200usize];
482    [
483        "Offset of field: AnvilHost::register_service",
484    ][::core::mem::offset_of!(AnvilHost, register_service) - 208usize];
485    [
486        "Offset of field: AnvilHost::get_service",
487    ][::core::mem::offset_of!(AnvilHost, get_service) - 216usize];
488    [
489        "Offset of field: AnvilHost::subscribe",
490    ][::core::mem::offset_of!(AnvilHost, subscribe) - 224usize];
491    [
492        "Offset of field: AnvilHost::publish",
493    ][::core::mem::offset_of!(AnvilHost, publish) - 232usize];
494};