#[macro_export]
macro_rules! equals {
(binary :: $left:expr, $right:expr) => {{
let (error, result) = wevm::v0::bindings::binary_equals(
$left.as_ptr(),
$left.len(),
$right.as_ptr(),
$right.len(),
);
error!(error);
result
}};
(string :: $left:expr, $right:expr) => {{
let (error, result) = wevm::v0::bindings::string_equals(
$left.as_ptr(),
$left.len(),
$right.as_ptr(),
$right.len(),
);
error!(error);
result
}};
}
#[macro_export]
macro_rules! join {
(@inner, $temp:expr, $value:expr) => {
let (error, ptr, len) = wevm::v0::bindings::join(
$temp.as_ptr(),
$temp.len(),
$value.as_ptr(),
$value.len()
);
error!(error);
$temp = core::slice::from_raw_parts(ptr, len);
};
(binary :: $( $value:expr ),+ ) => {{
let mut temp: &[u8] = &[0u8; 0];
$( join!(@inner, temp, $value); )+
temp
}};
(string :: $( $value:expr ),+ ) => {{
let mut temp: &[u8] = &[0u8; 0];
$( join!(@inner, temp, $value); )+
core::str::from_utf8_unchecked(temp)
}};
}
#[macro_export]
macro_rules! contains {
($bytes:expr, $subbytes:expr) => {{
let (error, result) = wevm::v0::bindings::contains(
$bytes.as_ptr(),
$bytes.len(),
$subbytes.as_ptr(),
$subbytes.len(),
);
error!(error);
result
}};
}
#[macro_export]
macro_rules! drop {
($bytes:expr, $n:expr) => {{
let (error, ptr, len) = wevm::v0::bindings::drop($bytes.as_ptr(), $bytes.len(), $n);
error!(error);
core::slice::from_raw_parts(ptr, len)
}};
}
#[macro_export]
macro_rules! drop_right {
($bytes:expr, $n:expr) => {{
let (error, ptr, len) = wevm::v0::bindings::drop_right($bytes.as_ptr(), $bytes.len(), $n);
error!(error);
core::slice::from_raw_parts(ptr, len)
}};
}
#[macro_export]
macro_rules! index_of {
($string:expr, $substring:expr) => {{
let (error, result) = wevm::v0::bindings::index_of(
$string.as_ptr(),
$string.len(),
$substring.as_ptr(),
$substring.len(),
);
error!(error);
result
}};
}
#[macro_export]
macro_rules! last_index_of {
($string:expr, $substring:expr) => {{
let (error, result) = wevm::v0::bindings::last_index_of(
$string.as_ptr(),
$string.len(),
$substring.as_ptr(),
$substring.len(),
);
error!(error);
result
}};
}
#[macro_export]
macro_rules! take {
($bytes:expr, $n:expr) => {{
let (error, ptr, len) = wevm::v0::bindings::take($bytes.as_ptr(), $bytes.len(), $n);
error!(error);
core::slice::from_raw_parts(ptr, len)
}};
}
#[macro_export]
macro_rules! take_right {
($bytes:expr, $n:expr) => {{
let (error, ptr, len) = wevm::v0::bindings::take_right($bytes.as_ptr(), $bytes.len(), $n);
error!(error);
core::slice::from_raw_parts(ptr, len)
}};
}