133d722a9Sopenharmony_ci#[cfg(feature = "alloc")]
233d722a9Sopenharmony_ciuse alloc::string::String;
333d722a9Sopenharmony_ciuse core::mem::MaybeUninit;
433d722a9Sopenharmony_ciuse core::ptr;
533d722a9Sopenharmony_ciuse core::slice;
633d722a9Sopenharmony_ciuse core::str;
733d722a9Sopenharmony_ci
833d722a9Sopenharmony_ci#[export_name = "cxxbridge1$str$new"]
933d722a9Sopenharmony_ciunsafe extern "C" fn str_new(this: &mut MaybeUninit<&str>) {
1033d722a9Sopenharmony_ci    let this = this.as_mut_ptr();
1133d722a9Sopenharmony_ci    unsafe { ptr::write(this, "") }
1233d722a9Sopenharmony_ci}
1333d722a9Sopenharmony_ci
1433d722a9Sopenharmony_ci#[cfg(feature = "alloc")]
1533d722a9Sopenharmony_ci#[export_name = "cxxbridge1$str$ref"]
1633d722a9Sopenharmony_ciunsafe extern "C" fn str_ref<'a>(this: &mut MaybeUninit<&'a str>, string: &'a String) {
1733d722a9Sopenharmony_ci    let this = this.as_mut_ptr();
1833d722a9Sopenharmony_ci    let s = string.as_str();
1933d722a9Sopenharmony_ci    unsafe { ptr::write(this, s) }
2033d722a9Sopenharmony_ci}
2133d722a9Sopenharmony_ci
2233d722a9Sopenharmony_ci#[export_name = "cxxbridge1$str$from"]
2333d722a9Sopenharmony_ciunsafe extern "C" fn str_from(this: &mut MaybeUninit<&str>, ptr: *const u8, len: usize) -> bool {
2433d722a9Sopenharmony_ci    let slice = unsafe { slice::from_raw_parts(ptr, len) };
2533d722a9Sopenharmony_ci    match str::from_utf8(slice) {
2633d722a9Sopenharmony_ci        Ok(s) => {
2733d722a9Sopenharmony_ci            let this = this.as_mut_ptr();
2833d722a9Sopenharmony_ci            unsafe { ptr::write(this, s) }
2933d722a9Sopenharmony_ci            true
3033d722a9Sopenharmony_ci        }
3133d722a9Sopenharmony_ci        Err(_) => false,
3233d722a9Sopenharmony_ci    }
3333d722a9Sopenharmony_ci}
3433d722a9Sopenharmony_ci
3533d722a9Sopenharmony_ci#[export_name = "cxxbridge1$str$ptr"]
3633d722a9Sopenharmony_ciunsafe extern "C" fn str_ptr(this: &&str) -> *const u8 {
3733d722a9Sopenharmony_ci    this.as_ptr()
3833d722a9Sopenharmony_ci}
3933d722a9Sopenharmony_ci
4033d722a9Sopenharmony_ci#[export_name = "cxxbridge1$str$len"]
4133d722a9Sopenharmony_ciunsafe extern "C" fn str_len(this: &&str) -> usize {
4233d722a9Sopenharmony_ci    this.len()
4333d722a9Sopenharmony_ci}
44