ergo_lib_c_core/
data_input.rs1use ergo_lib::chain;
4
5use crate::{
6 ergo_box::{BoxId, BoxIdPtr, ConstBoxIdPtr},
7 util::{const_ptr_as_ref, mut_ptr_as_mut},
8 Error,
9};
10
11#[derive(PartialEq, Eq, Debug, Clone)]
13pub struct DataInput(pub chain::transaction::DataInput);
14pub type DataInputPtr = *mut DataInput;
15pub type ConstDataInputPtr = *const DataInput;
16
17pub unsafe fn data_input_new(
19 box_id_ptr: ConstBoxIdPtr,
20 data_input_out: *mut DataInputPtr,
21) -> Result<(), Error> {
22 let box_id = const_ptr_as_ref(box_id_ptr, "box_id_ptr")?;
23 let data_input_out = mut_ptr_as_mut(data_input_out, "data_input_out")?;
24 *data_input_out = Box::into_raw(Box::new(DataInput(chain::transaction::DataInput {
25 box_id: box_id.0,
26 })));
27 Ok(())
28}
29
30pub unsafe fn data_input_box_id(
32 data_input_ptr: ConstDataInputPtr,
33 box_id_out: *mut BoxIdPtr,
34) -> Result<(), Error> {
35 let box_id_out = mut_ptr_as_mut(box_id_out, "box_id_out")?;
36 let data_input = const_ptr_as_ref(data_input_ptr, "data_input_ptr")?;
37 let box_id = BoxId(data_input.0.box_id);
38 *box_id_out = Box::into_raw(Box::new(box_id));
39 Ok(())
40}