simien_ops 0.1.1

Proc macros for writing simien_core ops. Forked from Deno's deno_ops 0.288.0.
Documentation
#[allow(non_camel_case_types)]
const fn op_v8_string() -> ::simien_core::_ops::OpDecl {
    #[allow(non_camel_case_types)]
    struct op_v8_string {
        _unconstructable: ::std::marker::PhantomData<()>,
    }
    impl ::simien_core::_ops::Op for op_v8_string {
        const NAME: &'static str = stringify!(op_v8_string);
        const DECL: ::simien_core::_ops::OpDecl = ::simien_core::_ops::OpDecl::new_internal_op2(
            ::simien_core::__op_name_fast!(op_v8_string),
            false,
            false,
            false,
            2usize as u8,
            false,
            false,
            Self::v8_fn_ptr as _,
            Self::slow_function_impl,
            ::simien_core::AccessorType::None,
            None,
            None,
            ::simien_core::OpMetadata {
                ..::simien_core::OpMetadata::default()
            },
        );
    }
    impl op_v8_string {
        pub const fn name() -> &'static str {
            <Self as simien_core::_ops::Op>::NAME
        }
        fn slow_function_impl<'s>(
            info: *const simien_core::v8::FunctionCallbackInfo,
        ) -> usize {
            let info: &'s _ = unsafe { &*info };
            #[cfg(debug_assertions)]
            let _reentrancy_check_guard = simien_core::_ops::reentrancy_check(
                &<Self as simien_core::_ops::Op>::DECL,
            );
            let parts: simien_core::v8::FunctionCallbackInfoParts<'s> = info.get_parts();
            let mut rv = parts.return_value;
            let args = simien_core::v8::FunctionCallbackArguments::from_function_callback_info_parts(
                info,
                &parts,
            );
            let result = {
                let arg0 = args.get(0usize as i32);
                let Ok(mut arg0) = simien_core::_ops::v8_try_convert::<
                    simien_core::v8::String,
                >(arg0) else {
                    simien_core::_ops::throw_error_one_byte_info(
                        &info,
                        "expected String",
                    );
                    return 1;
                };
                let arg0 = &arg0;
                let arg1 = args.get(1usize as i32);
                let Ok(mut arg1) = simien_core::_ops::v8_try_convert::<
                    simien_core::v8::String,
                >(arg1) else {
                    simien_core::_ops::throw_error_one_byte_info(
                        &info,
                        "expected String",
                    );
                    return 1;
                };
                let arg1 = arg1;
                Self::call(arg0, arg1)
            };
            rv.set(simien_core::_ops::RustToV8NoScope::to_v8(result));
            return 0;
        }
        extern "C" fn v8_fn_ptr(info: *const simien_core::v8::FunctionCallbackInfo) {
            Self::slow_function_impl(info);
        }
    }
    impl op_v8_string {
        #[allow(clippy::too_many_arguments)]
        fn call<'a>(
            _str1: &v8::String,
            _str2: v8::Local<v8::String>,
        ) -> v8::Local<'a, v8::String> {
            unimplemented!()
        }
    }
    <op_v8_string as ::simien_core::_ops::Op>::DECL
}