1use core::ffi::c_char;
2use core::ptr;
3
4use crate::error::VisionKitError;
5use crate::ffi;
6use crate::private::{error_from_status, parse_area_support_info_ptr};
7use crate::support::AreaSupportInfo;
8
9pub struct Barcode;
10
11impl Barcode {
12 pub fn support_info() -> Result<AreaSupportInfo, VisionKitError> {
13 let mut support_json: *mut c_char = ptr::null_mut();
14 let mut err_msg: *mut c_char = ptr::null_mut();
15 let status =
16 unsafe { ffi::barcode::vk_barcode_support_json(&mut support_json, &mut err_msg) };
17 if status == ffi::status::OK {
18 unsafe { parse_area_support_info_ptr(support_json, "Barcode support info") }
19 } else {
20 Err(unsafe { error_from_status(status, err_msg) })
21 }
22 }
23
24 pub fn is_available_on_current_platform() -> Result<bool, VisionKitError> {
25 Ok(Self::support_info()?.available_on_current_platform)
26 }
27}