use crate::ffi_apis::common::BincodeBuffer;
use crate::ffi_apis::common::from_bincode_buffer;
use crate::ffi_apis::common::to_bincode_buffer;
use crate::symbolic::core::Expr;
use crate::symbolic::elementary;
#[unsafe(no_mangle)]
pub extern "C" fn rssn_sin_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::sin(expr))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_cos_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::cos(expr))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_tan_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::tan(expr))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_exp_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::exp(expr))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_ln_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::ln(expr))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_sqrt_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::sqrt(expr))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_pow_bincode(
base_buffer: BincodeBuffer,
exp_buffer: BincodeBuffer,
) -> BincodeBuffer {
let base: Expr = match from_bincode_buffer(&base_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
let exp: Expr = match from_bincode_buffer(&exp_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::pow(base, exp))
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_pi_bincode() -> BincodeBuffer {
to_bincode_buffer(&elementary::pi())
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_e_bincode() -> BincodeBuffer {
to_bincode_buffer(&elementary::e())
}
#[unsafe(no_mangle)]
pub extern "C" fn rssn_expand_bincode(expr_buffer: BincodeBuffer) -> BincodeBuffer {
let expr: Expr = match from_bincode_buffer(&expr_buffer) {
| Some(e) => e,
| None => return BincodeBuffer::empty(),
};
to_bincode_buffer(&elementary::expand(expr))
}