1use std::{ffi::CString, os::raw::c_char};
3
4use ergo_lib_c_core::{
5 context_extension::ContextExtensionPtr, ergo_box::BoxIdPtr, input::*, Error,
6};
7
8use crate::{delete_ptr, ErrorPtr};
9use paste::paste;
10
11#[no_mangle]
15pub unsafe extern "C" fn ergo_lib_unsigned_input_box_id(
16 unsigned_input_ptr: ConstUnsignedInputPtr,
17 box_id_out: *mut BoxIdPtr,
18) {
19 #[allow(clippy::unwrap_used)]
20 unsigned_input_box_id(unsigned_input_ptr, box_id_out).unwrap();
21}
22
23#[no_mangle]
25pub unsafe extern "C" fn ergo_lib_unsigned_input_context_extension(
26 unsigned_input_ptr: ConstUnsignedInputPtr,
27 context_extension_out: *mut ContextExtensionPtr,
28) {
29 #[allow(clippy::unwrap_used)]
30 unsigned_input_context_extension(unsigned_input_ptr, context_extension_out).unwrap();
31}
32
33#[no_mangle]
35pub unsafe extern "C" fn ergo_lib_unsigned_input_delete(ptr: UnsignedInputPtr) {
36 delete_ptr(ptr)
37}
38
39make_collection!(UnsignedInputs, UnsignedInput);
40
41#[no_mangle]
45pub unsafe extern "C" fn ergo_lib_input_box_id(
46 input_ptr: ConstInputPtr,
47 box_id_out: *mut BoxIdPtr,
48) {
49 #[allow(clippy::unwrap_used)]
50 input_box_id(input_ptr, box_id_out).unwrap();
51}
52
53#[no_mangle]
55pub unsafe extern "C" fn ergo_lib_input_spending_proof(
56 input_ptr: ConstInputPtr,
57 prover_result_out: *mut ProverResultPtr,
58) {
59 #[allow(clippy::unwrap_used)]
60 input_spending_proof(input_ptr, prover_result_out).unwrap();
61}
62
63#[no_mangle]
65pub unsafe extern "C" fn ergo_lib_input_delete(ptr: InputPtr) {
66 delete_ptr(ptr)
67}
68
69make_collection!(Inputs, Input);
70
71#[no_mangle]
75pub unsafe extern "C" fn ergo_lib_prover_result_proof_len(
76 prover_result_ptr: ConstProverResultPtr,
77) -> usize {
78 #[allow(clippy::unwrap_used)]
79 prover_result_proof_len(prover_result_ptr).unwrap()
80}
81
82#[no_mangle]
86pub unsafe extern "C" fn ergo_lib_prover_result_proof(
87 prover_result_ptr: ConstProverResultPtr,
88 output: *mut u8,
89) {
90 #[allow(clippy::unwrap_used)]
91 prover_result_proof(prover_result_ptr, output).unwrap();
92}
93
94#[no_mangle]
96pub unsafe extern "C" fn ergo_lib_prover_result_context_extension(
97 prover_result_ptr: ConstProverResultPtr,
98 context_extension_out: *mut ContextExtensionPtr,
99) {
100 #[allow(clippy::unwrap_used)]
101 prover_result_context_extension(prover_result_ptr, context_extension_out).unwrap();
102}
103
104#[no_mangle]
106pub unsafe extern "C" fn ergo_lib_prover_result_to_json(
107 prover_result_ptr: ConstProverResultPtr,
108 _json_str: *mut *const c_char,
109) -> ErrorPtr {
110 #[allow(clippy::unwrap_used)]
111 let res = match prover_result_to_json(prover_result_ptr) {
112 Ok(s) => {
113 *_json_str = CString::new(s).unwrap().into_raw();
114 Ok(())
115 }
116 Err(e) => Err(e),
117 };
118 Error::c_api_from(res)
119}
120
121#[no_mangle]
123pub unsafe extern "C" fn ergo_lib_prover_result_delete(ptr: ProverResultPtr) {
124 delete_ptr(ptr)
125}