1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
use super::functions::{AmxCallback, AmxDebug, AmxNative};
use std::os::raw::{c_char, c_int, c_long, c_uchar, c_void};

#[repr(C, packed)]
pub struct AMX {
    pub base: *mut c_uchar,
    pub data: *mut c_uchar,
    pub callback: AmxCallback,
    pub debug: AmxDebug,
    pub cip: i32,
    pub frm: i32,
    pub hea: i32,
    pub hlw: i32,
    pub stk: i32,
    pub stp: i32,
    pub flags: c_int,
    pub usertags: [c_long; 4usize],
    pub userdata: [*mut c_void; 4usize],
    pub error: c_int,
    pub paramcount: c_int,
    pub pri: i32,
    pub alt: i32,
    pub reset_stk: i32,
    pub reset_hea: i32,
    pub sysreq_d: i32,
}

#[repr(C, packed)]
pub struct AMX_NATIVE_INFO {
    pub name: *const c_char,
    pub func: AmxNative,
}

#[repr(C, packed)]
pub struct AMX_FUNCSTUB {
    pub address: u32,
    pub name: [c_char; 20usize],
}

#[repr(C, packed)]
pub struct ANX_FUNCSTUBNT {
    pub address: u32,
    pub nameofs: u32,
}

#[repr(C, packed)]
pub struct AMX_HEADER {
    pub size: i32,
    pub magic: u16,
    pub file_version: c_char,
    pub amx_version: c_char,
    pub flags: i16,
    pub defsize: i16,
    pub cod: i32,
    pub dat: i32,
    pub hea: i32,
    pub stp: i32,
    pub cip: i32,
    pub publics: i32,
    pub natives: i32,
    pub libraries: i32,
    pub pubvars: i32,
    pub tags: i32,
    pub nametable: i32,
}