Skip to main content

diffsol_c/
initial_condition_options_c.rs

1use crate::initial_condition_options::InitialConditionSolverOptions;
2use crate::{c_getter_simple, c_invalid_arg, c_setter_simple};
3
4/// Free an initial-condition 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_ic_options_free(options: *mut InitialConditionSolverOptions) {
11    if options.is_null() {
12        c_invalid_arg!("ic options is null");
13        return;
14    }
15    unsafe {
16        drop(Box::from_raw(options));
17    }
18}
19
20c_getter_simple!(
21    diffsol_ic_options,
22    InitialConditionSolverOptions,
23    i32,
24    use_linesearch
25);
26
27c_setter_simple!(
28    diffsol_ic_options,
29    InitialConditionSolverOptions,
30    i32,
31    use_linesearch
32);
33
34c_getter_simple!(
35    diffsol_ic_options,
36    InitialConditionSolverOptions,
37    usize,
38    max_linesearch_iterations
39);
40
41c_setter_simple!(
42    diffsol_ic_options,
43    InitialConditionSolverOptions,
44    usize,
45    max_linesearch_iterations
46);
47
48c_getter_simple!(
49    diffsol_ic_options,
50    InitialConditionSolverOptions,
51    usize,
52    max_newton_iterations
53);
54
55c_setter_simple!(
56    diffsol_ic_options,
57    InitialConditionSolverOptions,
58    usize,
59    max_newton_iterations
60);
61
62c_getter_simple!(
63    diffsol_ic_options,
64    InitialConditionSolverOptions,
65    usize,
66    max_linear_solver_setups
67);
68
69c_setter_simple!(
70    diffsol_ic_options,
71    InitialConditionSolverOptions,
72    usize,
73    max_linear_solver_setups
74);
75
76c_getter_simple!(
77    diffsol_ic_options,
78    InitialConditionSolverOptions,
79    f64,
80    step_reduction_factor
81);
82
83c_setter_simple!(
84    diffsol_ic_options,
85    InitialConditionSolverOptions,
86    f64,
87    step_reduction_factor
88);
89
90c_getter_simple!(
91    diffsol_ic_options,
92    InitialConditionSolverOptions,
93    f64,
94    armijo_constant
95);
96
97c_setter_simple!(
98    diffsol_ic_options,
99    InitialConditionSolverOptions,
100    f64,
101    armijo_constant
102);