use crate::ffi::value_ffi::*;
#[inline(always)]
pub fn call_result_method(receiver_bits: u64, method_name: &str, args: &[u64]) -> u64 {
match method_name {
"is_ok" => {
if is_ok_tag(receiver_bits) {
TAG_BOOL_TRUE
} else {
TAG_BOOL_FALSE
}
}
"is_err" => {
if is_err_tag(receiver_bits) {
TAG_BOOL_TRUE
} else {
TAG_BOOL_FALSE
}
}
"unwrap" => {
if is_ok_tag(receiver_bits) {
unsafe { unbox_result_inner(receiver_bits) }
} else {
TAG_NULL
}
}
"unwrap_err" => {
if is_err_tag(receiver_bits) {
unsafe { unbox_result_inner(receiver_bits) }
} else {
TAG_NULL
}
}
"unwrap_or" => {
if is_ok_tag(receiver_bits) {
unsafe { unbox_result_inner(receiver_bits) }
} else if !args.is_empty() {
args[0] } else {
TAG_NULL
}
}
"unwrap_or_else" => {
if is_ok_tag(receiver_bits) {
unsafe { unbox_result_inner(receiver_bits) }
} else if !args.is_empty() {
args[0]
} else {
TAG_NULL
}
}
"ok" => {
if is_ok_tag(receiver_bits) {
unsafe { unbox_result_inner(receiver_bits) }
} else {
TAG_NULL
}
}
"err" => {
if is_err_tag(receiver_bits) {
unsafe { unbox_result_inner(receiver_bits) }
} else {
TAG_NULL
}
}
_ => TAG_NULL,
}
}