devx1/
lib.rs

1pub mod contract;
2pub mod msg;
3pub mod state;
4
5/** Below we expose wasm exports * **/
6#[cfg(target_arch = "wasm32")]
7pub use cosmwasm::exports::{allocate, deallocate};
8
9#[cfg(target_arch = "wasm32")]
10pub use wasm::{handle, init};
11
12#[cfg(target_arch = "wasm32")]
13mod wasm {
14    use super::contract;
15    use cosmwasm::{exports, imports};
16    use std::ffi::c_void;
17
18    #[no_mangle]
19    pub extern "C" fn init(params_ptr: *mut c_void, msg_ptr: *mut c_void) -> *mut c_void {
20        exports::do_init(
21            &contract::init::<imports::ExternalStorage, imports::ExternalApi>,
22            params_ptr,
23            msg_ptr,
24        )
25    }
26
27    #[no_mangle]
28    pub extern "C" fn handle(params_ptr: *mut c_void, msg_ptr: *mut c_void) -> *mut c_void {
29        exports::do_handle(
30            &contract::handle::<imports::ExternalStorage, imports::ExternalApi>,
31            params_ptr,
32            msg_ptr,
33        )
34    }
35
36    #[no_mangle]
37    pub extern "C" fn query(msg_ptr: *mut c_void) -> *mut c_void {
38        exports::do_query(
39            &contract::query::<imports::ExternalStorage, imports::ExternalApi>,
40            msg_ptr,
41        )
42    }
43}