MCPcopy Create free account
hub / github.com/bnjbvr/trinity / _export_on_msg_cabi

Function _export_on_msg_cabi

modules/libcommand/src/trinity_module.rs:335–446  ·  view source on GitHub ↗
(
                    arg0: *mut u8,
                    arg1: usize,
                    arg2: *mut u8,
                    arg3: usize,
                    arg4: *mut u8,
                    arg5: u

Source from the content-addressed store, hash-verified

333 #[doc(hidden)]
334 #[allow(non_snake_case)]
335 pub unsafe fn _export_on_msg_cabi<T: Guest>(
336 arg0: *mut u8,
337 arg1: usize,
338 arg2: *mut u8,
339 arg3: usize,
340 arg4: *mut u8,
341 arg5: usize,
342 arg6: *mut u8,
343 arg7: usize,
344 ) -> *mut u8 {
345 #[cfg(target_arch = "wasm32")] _rt::run_ctors_once();
346 let len0 = arg1;
347 let bytes0 = _rt::Vec::from_raw_parts(arg0.cast(), len0, len0);
348 let len1 = arg3;
349 let bytes1 = _rt::Vec::from_raw_parts(arg2.cast(), len1, len1);
350 let len2 = arg5;
351 let bytes2 = _rt::Vec::from_raw_parts(arg4.cast(), len2, len2);
352 let len3 = arg7;
353 let bytes3 = _rt::Vec::from_raw_parts(arg6.cast(), len3, len3);
354 let result4 = T::on_msg(
355 _rt::string_lift(bytes0),
356 _rt::string_lift(bytes1),
357 _rt::string_lift(bytes2),
358 _rt::string_lift(bytes3),
359 );
360 let ptr5 = (&raw mut _RET_AREA.0).cast::<u8>();
361 let vec11 = result4;
362 let len11 = vec11.len();
363 let layout11 = _rt::alloc::Layout::from_size_align_unchecked(
364 vec11.len() * (8 * ::core::mem::size_of::<*const u8>()),
365 ::core::mem::size_of::<*const u8>(),
366 );
367 let result11 = if layout11.size() != 0 {
368 let ptr = _rt::alloc::alloc(layout11).cast::<u8>();
369 if ptr.is_null() {
370 _rt::alloc::handle_alloc_error(layout11);
371 }
372 ptr
373 } else {
374 ::core::ptr::null_mut()
375 };
376 for (i, e) in vec11.into_iter().enumerate() {
377 let base = result11
378 .add(i * (8 * ::core::mem::size_of::<*const u8>()));
379 {
380 match e {
381 Action::Respond(e) => {
382 *base.add(0).cast::<u8>() = (0i32) as u8;
383 let Message { text: text6, html: html6, to: to6 } = e;
384 let vec7 = (text6.into_bytes()).into_boxed_slice();
385 let ptr7 = vec7.as_ptr().cast::<u8>();
386 let len7 = vec7.len();
387 ::core::mem::forget(vec7);
388 *base
389 .add(2 * ::core::mem::size_of::<*const u8>())
390 .cast::<usize>() = len7;
391 *base
392 .add(::core::mem::size_of::<*const u8>())

Callers

nothing calls this directly

Calls 2

run_ctors_onceFunction · 0.85
string_liftFunction · 0.70

Tested by

no test coverage detected