multiversx_sc_scenario/api/local_api_vh/
static_var_api_vh.rs1use crate::api::{VMHooksApi, VMHooksApiBackend};
2use multiversx_sc::{
3 api::{RawHandle, StaticVarApi, StaticVarApiFlags, StaticVarApiImpl},
4 types::LockableStaticBuffer,
5};
6
7impl<VHB: VMHooksApiBackend> StaticVarApi for VMHooksApi<VHB> {
8 type StaticVarApiImpl = Self;
9
10 fn static_var_api_impl() -> Self::StaticVarApiImpl {
11 Self::api_impl()
12 }
13}
14
15impl<VHB: VMHooksApiBackend> StaticVarApiImpl for VMHooksApi<VHB> {
16 fn with_lockable_static_buffer<R, F: FnOnce(&mut LockableStaticBuffer) -> R>(&self, f: F) -> R {
17 self.with_static_data(|data| {
18 let mut lockable_static_buffer = data.lockable_static_buffer_cell.borrow_mut();
19 f(&mut lockable_static_buffer)
20 })
21 }
22
23 fn set_external_view_target_address_handle(&self, handle: RawHandle) {
24 self.with_static_data(|data| {
25 data.static_vars_cell
26 .borrow_mut()
27 .external_view_target_address_handle = handle;
28 });
29 }
30
31 fn get_external_view_target_address_handle(&self) -> RawHandle {
32 self.with_static_data(|data| {
33 data.static_vars_cell
34 .borrow()
35 .external_view_target_address_handle
36 })
37 }
38
39 fn next_handle(&self) -> RawHandle {
40 self.with_static_data(|data| {
41 let mut ref_tx_static_vars = data.static_vars_cell.borrow_mut();
42 let new_handle = ref_tx_static_vars.next_handle;
43 ref_tx_static_vars.next_handle -= 1;
44 new_handle
45 })
46 }
47
48 fn set_num_arguments(&self, num_arguments: i32) {
49 self.with_static_data(|data| {
50 data.static_vars_cell.borrow_mut().num_arguments = num_arguments;
51 })
52 }
53
54 fn get_num_arguments(&self) -> i32 {
55 self.with_static_data(|data| data.static_vars_cell.borrow().num_arguments)
56 }
57
58 fn set_flags(&self, flags: StaticVarApiFlags) {
59 self.with_static_data(|data| {
60 data.static_vars_cell.borrow_mut().flags = flags;
61 })
62 }
63
64 fn get_flags(&self) -> StaticVarApiFlags {
65 self.with_static_data(|data| data.static_vars_cell.borrow().flags)
66 }
67
68 fn is_scaling_factor_cached(&self, decimals: usize) -> bool {
69 self.with_static_data(|data| data.static_vars_cell.borrow().scaling_factor_init[decimals])
70 }
71
72 fn set_scaling_factor_cached(&self, decimals: usize) {
73 self.with_static_data(|data| {
74 data.static_vars_cell.borrow_mut().scaling_factor_init[decimals] = true
75 })
76 }
77}