#[macro_export]
macro_rules! imports {
() => {
use multiversx_sc::imports::*;
};
}
#[macro_export]
macro_rules! derive_imports {
() => {
use multiversx_sc::derive_imports::*;
};
}
#[deprecated(
since = "0.48.0",
note = "Use `sc_panic!` instead, which terminates immediately."
)]
#[macro_export]
macro_rules! sc_error {
($s:expr) => {
multiversx_sc::types::SCResult::Err(multiversx_sc::types::StaticSCError::from($s)).into()
};
}
#[deprecated(
since = "0.48.0",
note = "Use `require!` instead, which terminates immediately."
)]
#[macro_export]
macro_rules! require_old {
($expression:expr, $error_msg:expr) => {
if (!($expression)) {
return multiversx_sc::sc_error!($error_msg);
}
};
}
#[macro_export]
macro_rules! sc_panic {
($msg:tt, $($arg:expr),+ $(,)?) => {{
let mut ___buffer___ =
multiversx_sc::types::ManagedBufferBuilder::<Self::Api>::new_from_slice(&[]);
multiversx_sc::derive::format_receiver_args!(___buffer___, $msg, $($arg),+);
multiversx_sc::contract_base::ErrorHelper::<Self::Api>::signal_error_with_message(___buffer___.into_managed_buffer());
}};
($msg:expr $(,)?) => {
multiversx_sc::contract_base::ErrorHelper::<Self::Api>::signal_error_with_message($msg);
};
}
#[macro_export]
macro_rules! require {
($expression:expr, $($msg_tokens:tt),+ $(,)?) => {
if (!($expression)) {
multiversx_sc::sc_panic!($($msg_tokens),+);
}
};
}
#[macro_export]
macro_rules! sc_print {
($msg:tt, $($arg:expr),* $(,)?) => {{
let mut ___buffer___ =
<<Self::Api as multiversx_sc::api::PrintApi>::PrintApiImpl as multiversx_sc::api::PrintApiImpl>::Buffer::default();
multiversx_sc::derive::format_receiver_args!(___buffer___, $msg, $($arg),*);
<<Self::Api as multiversx_sc::api::PrintApi>::PrintApiImpl as multiversx_sc::api::PrintApiImpl>::print_buffer(
&<Self::Api as multiversx_sc::api::PrintApi>::print_api_impl(),
___buffer___,
);
}};
}
#[macro_export]
macro_rules! sc_format {
($msg:tt, $($arg:expr),+ $(,)?) => {{
let mut ___buffer___ =
multiversx_sc::types::ManagedBufferBuilder::<Self::Api>::new_from_slice(&[]);
multiversx_sc::derive::format_receiver_args!(___buffer___, $msg, $($arg),+);
___buffer___.into_managed_buffer()
}};
($msg:expr $(,)?) => {{
multiversx_sc::types::ManagedBuffer::new_from_bytes($msg.as_bytes())
}};
}
#[deprecated(
since = "0.16.0",
note = "The `?` operator can now be used on `SCResult`, please use it instead."
)]
#[macro_export]
macro_rules! sc_try {
($s:expr) => {
match $s {
multiversx_sc::types::SCResult::Ok(t) => t,
multiversx_sc::types::SCResult::Err(e) => {
return multiversx_sc::types::SCResult::Err(e);
},
}
};
}
#[deprecated(
since = "0.26.0",
note = "Replace with the `#[only_owner]` attribute that can be placed on an endpoint. That one is more compact and shows up in the ABI."
)]
#[macro_export]
macro_rules! only_owner {
($trait_self: expr, $error_msg:expr) => {
if ($trait_self.blockchain().get_caller() != $trait_self.blockchain().get_owner_address()) {
return multiversx_sc::sc_error!($error_msg);
}
};
}
#[macro_export]
macro_rules! non_zero_usize {
($input: expr, $error_msg:expr) => {
NonZeroUsize::new($input).unwrap_or_else(|| sc_panic!($error_msg))
};
}