Skip to main content

diffsol_c/
ode_options_c.rs

1use crate::ode_options::OdeSolverOptions;
2use crate::{c_getter_simple, c_invalid_arg, c_setter_simple};
3
4/// Free an ODE options object previously returned by this library.
5///
6/// # Safety
7/// `options` must be either null or a pointer returned by this library that has
8/// not already been freed.
9#[unsafe(no_mangle)]
10pub unsafe extern "C" fn diffsol_ode_options_free(options: *mut OdeSolverOptions) {
11    if options.is_null() {
12        c_invalid_arg!("ode options is null");
13        return;
14    }
15    unsafe {
16        drop(Box::from_raw(options));
17    }
18}
19
20c_getter_simple!(
21    diffsol_ode_options,
22    OdeSolverOptions,
23    usize,
24    max_nonlinear_solver_iterations
25);
26
27c_setter_simple!(
28    diffsol_ode_options,
29    OdeSolverOptions,
30    usize,
31    max_nonlinear_solver_iterations
32);
33
34c_getter_simple!(
35    diffsol_ode_options,
36    OdeSolverOptions,
37    usize,
38    max_error_test_failures
39);
40
41c_setter_simple!(
42    diffsol_ode_options,
43    OdeSolverOptions,
44    usize,
45    max_error_test_failures
46);
47
48c_getter_simple!(
49    diffsol_ode_options,
50    OdeSolverOptions,
51    usize,
52    update_jacobian_after_steps
53);
54
55c_setter_simple!(
56    diffsol_ode_options,
57    OdeSolverOptions,
58    usize,
59    update_jacobian_after_steps
60);
61
62c_getter_simple!(
63    diffsol_ode_options,
64    OdeSolverOptions,
65    usize,
66    update_rhs_jacobian_after_steps
67);
68
69c_setter_simple!(
70    diffsol_ode_options,
71    OdeSolverOptions,
72    usize,
73    update_rhs_jacobian_after_steps
74);
75
76c_getter_simple!(
77    diffsol_ode_options,
78    OdeSolverOptions,
79    f64,
80    threshold_to_update_jacobian
81);
82
83c_setter_simple!(
84    diffsol_ode_options,
85    OdeSolverOptions,
86    f64,
87    threshold_to_update_jacobian
88);
89
90c_getter_simple!(
91    diffsol_ode_options,
92    OdeSolverOptions,
93    f64,
94    threshold_to_update_rhs_jacobian
95);
96
97c_setter_simple!(
98    diffsol_ode_options,
99    OdeSolverOptions,
100    f64,
101    threshold_to_update_rhs_jacobian
102);
103
104c_getter_simple!(diffsol_ode_options, OdeSolverOptions, f64, min_timestep);
105
106c_setter_simple!(diffsol_ode_options, OdeSolverOptions, f64, min_timestep);