diffsol_c/
ode_options_c.rs1use crate::ode_options::OdeSolverOptions;
2use crate::{c_getter_simple, c_invalid_arg, c_setter_simple};
3
4#[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);