Skip to main content

travsr_plugin_protocol/
ffi_marker.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct FfiMarker {
5    pub source_node_id: u64,
6    pub kind: FfiMarkerKind,
7    pub local_name: String,
8    pub bound_name: Option<String>,
9    pub arity: Option<u8>,
10    pub module: Option<String>,
11    pub corpus: String,
12}
13
14impl FfiMarker {
15    pub fn effective_name(&self) -> &str {
16        self.bound_name.as_deref().unwrap_or(&self.local_name)
17    }
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]
21pub enum FfiMarkerKind {
22    #[default]
23    NapiExport,
24    NapiCall,
25    PyO3Export,
26    PyO3Call,
27    CgoExport,
28    GoCallC,
29    JniExport,
30    JniCall,
31}