ergo_lib_c_core/
parameters.rs1use crate::util::mut_ptr_as_mut;
4use crate::Error;
5use ergo_lib::chain;
6
7#[derive(PartialEq, Eq, Debug, Clone)]
9pub struct Parameters(pub(crate) chain::parameters::Parameters);
10pub type ParametersPtr = *mut Parameters;
11pub type ConstParametersPtr = *const Parameters;
12
13pub unsafe fn parameters_default(parameters_out: *mut ParametersPtr) {
15 *parameters_out = Box::into_raw(Box::new(Parameters(
16 chain::parameters::Parameters::default(),
17 )));
18}
19
20#[allow(clippy::too_many_arguments)]
22pub unsafe fn parameters_new(
23 block_version: i32,
24 storage_fee_factor: i32,
25 min_value_per_byte: i32,
26 max_block_size: i32,
27 max_block_cost: i32,
28 token_access_cost: i32,
29 input_cost: i32,
30 data_input_cost: i32,
31 output_cost: i32,
32 parameters_out: *mut ParametersPtr,
33) -> Result<(), Error> {
34 let parameters_out = mut_ptr_as_mut(parameters_out, "parameters_out")?;
35 let parameters = chain::parameters::Parameters::new(
36 block_version,
37 storage_fee_factor,
38 min_value_per_byte,
39 max_block_size,
40 max_block_cost,
41 token_access_cost,
42 input_cost,
43 data_input_cost,
44 output_cost,
45 );
46 *parameters_out = Box::into_raw(Box::new(Parameters(parameters)));
47 Ok(())
48}
49
50pub unsafe fn parameters_from_json(
52 json: &str,
53 parameters_out: *mut ParametersPtr,
54) -> Result<(), Error> {
55 let parameters_out = mut_ptr_as_mut(parameters_out, "parameters_out")?;
56 let parameters = serde_json::from_str(json).map(Parameters)?;
57 *parameters_out = Box::into_raw(Box::new(parameters));
58 Ok(())
59}
60
61pub unsafe fn parameters_delete(parameters: ParametersPtr) {
62 if !parameters.is_null() {
63 let boxed = Box::from_raw(parameters);
64 std::mem::drop(boxed);
65 }
66}