travsr_plugin_protocol/
ffi_marker.rs1use 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}