facet_core/types/def/
function.rs1use crate::Shape;
2
3#[derive(Clone, Copy, Debug)]
5#[repr(C)]
6pub struct FunctionPointerDef {
7 pub abi: FunctionAbi,
9
10 pub parameters: &'static [&'static Shape],
12
13 pub return_type: &'static Shape,
15}
16
17#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug, Default)]
19#[repr(C)]
20pub enum FunctionAbi {
21 C,
23
24 #[default]
26 Rust,
27
28 Unknown,
30}
31impl FunctionAbi {
32 pub fn as_abi_str(&self) -> Option<&str> {
34 match self {
35 FunctionAbi::C => Some("C"),
36 FunctionAbi::Rust => Some("Rust"),
37 FunctionAbi::Unknown => None,
38 }
39 }
40}
41
42impl FunctionPointerDef {
43 pub const fn new(
45 abi: FunctionAbi,
46 parameters: &'static [&'static Shape],
47 return_type: &'static Shape,
48 ) -> Self {
49 Self {
50 abi,
51 parameters,
52 return_type,
53 }
54 }
55}