#[macro_export]
macro_rules! contains_key {
($key:expr) => {{
let this = internal_data!(this);
let (error, result) =
wevm::v0::bindings::contains_key(this.0, this.1, $key.as_ptr(), $key.len());
error!(error);
result
}};
($address:expr => $key:expr) => {{
let (error, result) = wevm::v0::bindings::contains_key(
$address.as_ptr(),
$address.len(),
$key.as_ptr(),
$key.len(),
);
error!(error);
result
}};
}
#[macro_export]
macro_rules! get_storage {
(integer :: $key:expr) => {{
let this = internal_data!(this);
let (error, value) =
wevm::v0::bindings::get_storage_int(this.0, this.1, $key.as_ptr(), $key.len());
error!(error);
value
}};
(integer :: $address:expr => $key:expr) => {{
let (error, value) = wevm::v0::bindings::get_storage_int(
$address.as_ptr(),
$address.len(),
$key.as_ptr(),
$key.len(),
);
error!(error);
value
}};
(boolean :: $key:expr) => {{
let this = internal_data!(this);
let (error, value) =
wevm::v0::bindings::get_storage_bool(this.0, this.1, $key.as_ptr(), $key.len());
error!(error);
value
}};
(boolean :: $address:expr => $key:expr) => {{
let (error, value) = wevm::v0::bindings::get_storage_bool(
$address.as_ptr(),
$address.len(),
$key.as_ptr(),
$key.len(),
);
error!(error);
value
}};
(binary :: $key:expr) => {{
let this = internal_data!(this);
let (error, ptr, len) =
wevm::v0::bindings::get_storage_binary(this.0, this.1, $key.as_ptr(), $key.len());
error!(error);
core::slice::from_raw_parts(ptr, len)
}};
(binary :: $address:expr => $key:expr) => {{
let (error, ptr, len) = wevm::v0::bindings::get_storage_binary(
$address.as_ptr(),
$address.len(),
$key.as_ptr(),
$key.len(),
);
error!(error);
core::slice::from_raw_parts(ptr, len)
}};
(string :: $key:expr) => {{
let this = internal_data!(this);
let (error, ptr, len) =
wevm::v0::bindings::get_storage_string(this.0, this.1, $key.as_ptr(), $key.len());
error!(error);
let bytes = core::slice::from_raw_parts(ptr, len);
core::str::from_utf8_unchecked(bytes)
}};
(string :: $address:expr => $key:expr) => {{
let (error, ptr, len) = wevm::v0::bindings::get_storage_string(
$address.as_ptr(),
$address.len(),
$key.as_ptr(),
$key.len(),
);
error!(error);
let bytes = core::slice::from_raw_parts(ptr, len);
core::str::from_utf8_unchecked(bytes)
}};
}
#[macro_export]
macro_rules! set_storage {
(integer :: $key:expr => $value:expr) => {{
let error = wevm::v0::bindings::set_storage_int($key.as_ptr(), $key.len(), $value);
error!(error);
}};
(boolean :: $key:expr => $value:expr) => {
let error = wevm::v0::bindings::set_storage_bool($key.as_ptr(), $key.len(), $value);
error!(error);
};
(binary :: $key:expr => $value:expr) => {
let error = wevm::v0::bindings::set_storage_binary(
$key.as_ptr(),
$key.len(),
$value.as_ptr(),
$value.len(),
);
error!(error);
};
(string :: $key:expr => $value:expr) => {
let error = wevm::v0::bindings::set_storage_string(
$key.as_ptr(),
$key.len(),
$value.as_ptr(),
$value.len(),
);
error!(error);
};
}