1use std::ffi::c_char;
2
3use pkgcraft::dep::parse;
4
5use crate::macros::*;
6use crate::panic::ffi_catch_panic;
7
8#[no_mangle]
15pub unsafe extern "C" fn pkgcraft_parse_category(s: *const c_char) -> *const c_char {
16 ffi_catch_panic! {
17 let val = try_str_from_ptr!(s);
18 unwrap_or_panic!(parse::category(val));
19 s
20 }
21}
22
23#[no_mangle]
30pub unsafe extern "C" fn pkgcraft_parse_package(s: *const c_char) -> *const c_char {
31 ffi_catch_panic! {
32 let val = try_str_from_ptr!(s);
33 unwrap_or_panic!(parse::package(val));
34 s
35 }
36}
37
38#[no_mangle]
45pub unsafe extern "C" fn pkgcraft_parse_repo(s: *const c_char) -> *const c_char {
46 ffi_catch_panic! {
47 let val = try_str_from_ptr!(s);
48 unwrap_or_panic!(parse::repo(val));
49 s
50 }
51}
52
53#[no_mangle]
60pub unsafe extern "C" fn pkgcraft_parse_use_flag(s: *const c_char) -> *const c_char {
61 ffi_catch_panic! {
62 let val = try_str_from_ptr!(s);
63 unwrap_or_panic!(parse::use_flag(val));
64 s
65 }
66}