use crate::ffi;
use glib::translate::*;
glib::wrapper! {
#[doc(alias = "ArvEvaluator")]
pub struct Evaluator(Object<ffi::ArvEvaluator, ffi::ArvEvaluatorClass>);
match fn {
type_ => || ffi::arv_evaluator_get_type(),
}
}
impl Evaluator {
#[doc(alias = "arv_evaluator_new")]
pub fn new(expression: Option<&str>) -> Evaluator {
assert_initialized_main_thread!();
unsafe { from_glib_full(ffi::arv_evaluator_new(expression.to_glib_none().0)) }
}
#[doc(alias = "arv_evaluator_evaluate_as_double")]
pub fn evaluate_as_double(&self) -> Result<f64, glib::Error> {
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::arv_evaluator_evaluate_as_double(self.to_glib_none().0, &mut error);
if error.is_null() {
Ok(ret)
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "arv_evaluator_evaluate_as_int64")]
pub fn evaluate_as_int64(&self) -> Result<i64, glib::Error> {
unsafe {
let mut error = std::ptr::null_mut();
let ret = ffi::arv_evaluator_evaluate_as_int64(self.to_glib_none().0, &mut error);
if error.is_null() {
Ok(ret)
} else {
Err(from_glib_full(error))
}
}
}
#[doc(alias = "arv_evaluator_get_constant")]
#[doc(alias = "get_constant")]
pub fn constant(&self, name: &str) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::arv_evaluator_get_constant(
self.to_glib_none().0,
name.to_glib_none().0,
))
}
}
#[doc(alias = "arv_evaluator_get_expression")]
#[doc(alias = "get_expression")]
pub fn expression(&self) -> Option<glib::GString> {
unsafe { from_glib_none(ffi::arv_evaluator_get_expression(self.to_glib_none().0)) }
}
#[doc(alias = "arv_evaluator_get_sub_expression")]
#[doc(alias = "get_sub_expression")]
pub fn sub_expression(&self, name: &str) -> Option<glib::GString> {
unsafe {
from_glib_none(ffi::arv_evaluator_get_sub_expression(
self.to_glib_none().0,
name.to_glib_none().0,
))
}
}
#[doc(alias = "arv_evaluator_set_constant")]
pub fn set_constant(&self, name: &str, constant: Option<&str>) {
unsafe {
ffi::arv_evaluator_set_constant(
self.to_glib_none().0,
name.to_glib_none().0,
constant.to_glib_none().0,
);
}
}
#[doc(alias = "arv_evaluator_set_double_variable")]
pub fn set_double_variable(&self, name: &str, v_double: f64) {
unsafe {
ffi::arv_evaluator_set_double_variable(
self.to_glib_none().0,
name.to_glib_none().0,
v_double,
);
}
}
#[doc(alias = "arv_evaluator_set_expression")]
pub fn set_expression(&self, expression: &str) {
unsafe {
ffi::arv_evaluator_set_expression(self.to_glib_none().0, expression.to_glib_none().0);
}
}
#[doc(alias = "arv_evaluator_set_int64_variable")]
pub fn set_int64_variable(&self, name: &str, v_int64: i64) {
unsafe {
ffi::arv_evaluator_set_int64_variable(
self.to_glib_none().0,
name.to_glib_none().0,
v_int64,
);
}
}
#[doc(alias = "arv_evaluator_set_sub_expression")]
pub fn set_sub_expression(&self, name: &str, expression: Option<&str>) {
unsafe {
ffi::arv_evaluator_set_sub_expression(
self.to_glib_none().0,
name.to_glib_none().0,
expression.to_glib_none().0,
);
}
}
}
unsafe impl Send for Evaluator {}