casper_contract_sdk_sys/
for_each_host_function.rs

1#[macro_export]
2macro_rules! for_each_host_function {
3    ($mac:ident) => {
4        $mac! {
5            #[doc = "Read value from a storage available for caller's entity address."]
6            pub fn casper_read(
7                key_space: u64,
8                key_ptr: *const u8,
9                key_size: usize,
10                info: *mut $crate::ReadInfo,
11                alloc: extern "C" fn(usize, *mut core::ffi::c_void) -> *mut u8,
12                alloc_ctx: *const core::ffi::c_void,
13            ) -> u32;
14            pub fn casper_write(
15                key_space: u64,
16                key_ptr: *const u8,
17                key_size: usize,
18                value_ptr: *const u8,
19                value_size: usize,
20            ) -> u32;
21            pub fn casper_remove(
22                key_space: u64,
23                key_ptr: *const u8,
24                key_size: usize,
25            ) -> u32;
26            pub fn casper_print(msg_ptr: *const u8, msg_size: usize,);
27            pub fn casper_return(flags: u32, data_ptr: *const u8, data_len: usize,);
28            pub fn casper_copy_input(
29                alloc: extern "C" fn(usize, *mut core::ffi::c_void) -> *mut u8,
30                alloc_ctx: *const core::ffi::c_void,
31            ) -> *mut u8;
32            pub fn casper_create(
33                code_ptr: *const u8,
34                code_size: usize,
35                transferred_value: u64,
36                constructor_ptr: *const u8,
37                constructor_size: usize,
38                input_ptr: *const u8,
39                input_size: usize,
40                seed_ptr: *const u8,
41                seed_size: usize,
42                result_ptr: *mut $crate::CreateResult,
43            ) -> u32;
44
45            // We don't offer any special protection against smart contracts on the host side
46            pub fn casper_call(
47                address_ptr: *const u8,
48                address_size: usize,
49                transferred_amount: u64,
50                entry_point_ptr: *const u8,
51                entry_point_size: usize,
52                input_ptr: *const u8,
53                input_size: usize,
54                alloc: extern "C" fn(usize, *mut core::ffi::c_void) -> *mut u8, // For capturing output data
55                alloc_ctx: *const core::ffi::c_void,
56            ) -> u32;
57            pub fn casper_upgrade(
58                code_ptr: *const u8,
59                code_size: usize,
60                entry_point_ptr: *const u8,
61                entry_point_size: usize,
62                input_ptr: *const u8,
63                input_size: usize,
64            ) -> u32;
65            #[doc = r"Get balance of an entity by its address."]
66            pub fn casper_env_balance(entity_kind: u32, entity_addr_ptr: *const u8, entity_addr_len: usize, output_ptr: *mut core::ffi::c_void,) -> u32;
67            pub fn casper_env_info(info_ptr: *const u8, info_size: u32,) -> u32;
68            pub fn casper_transfer(entity_addr_ptr: *const u8, entity_addr_len: usize, amount: *const core::ffi::c_void,) -> u32;
69            pub fn casper_emit(topic_ptr: *const u8, topic_size: usize, payload_ptr: *const u8, payload_size: usize,) -> u32;
70        }
71    };
72}