#[macro_export]
macro_rules! create_entry_points {
(@migration; $contract:ident, true) => {
#[no_mangle]
extern "C" fn migrate(env_ptr: u32, msg_ptr: u32) -> u32 {
do_migrate(&$contract::migrate, env_ptr, msg_ptr)
}
};
(@migration; $contract:ident, false) => {};
(@inner; $contract:ident, migration = $migration:tt) => {
mod wasm {
use super::$contract;
use cosmwasm_std::{do_execute, do_instantiate, do_migrate, do_query};
#[no_mangle]
extern "C" fn instantiate(env_ptr: u32, info_ptr: u32, msg_ptr: u32) -> u32 {
do_instantiate(&$contract::instantiate, env_ptr, info_ptr, msg_ptr)
}
#[no_mangle]
extern "C" fn execute(env_ptr: u32, info_ptr: u32, msg_ptr: u32) -> u32 {
do_execute(&$contract::execute, env_ptr, info_ptr, msg_ptr)
}
#[no_mangle]
extern "C" fn query(env_ptr: u32, msg_ptr: u32) -> u32 {
do_query(&$contract::query, env_ptr, msg_ptr)
}
$crate::create_entry_points!(@migration; $contract, $migration);
}
};
($contract:ident) => {
$crate::create_entry_points!(@inner; $contract, migration = false);
};
}
#[macro_export]
macro_rules! create_entry_points_with_migration {
($contract:ident) => {
$crate::create_entry_points!(@inner; $contract, migration = true);
};
}