llmcc_python/descriptor/
call.rs

1#[derive(Debug, Clone)]
2pub struct CallDescriptor {
3    pub target: CallTarget,
4    pub arguments: Vec<CallArgument>,
5}
6
7#[derive(Debug, Clone)]
8pub enum CallTarget {
9    Function(String),
10    Method(String, String), // object, method
11    Constructor(String),    // class name
12}
13
14#[derive(Debug, Clone)]
15pub struct CallArgument {
16    pub name: Option<String>,
17    pub value: String,
18}
19
20impl CallDescriptor {
21    pub fn new(target: CallTarget) -> Self {
22        Self {
23            target,
24            arguments: Vec::new(),
25        }
26    }
27
28    pub fn add_argument(&mut self, arg: CallArgument) {
29        self.arguments.push(arg);
30    }
31}
32
33impl CallArgument {
34    pub fn new(value: String) -> Self {
35        Self { name: None, value }
36    }
37
38    pub fn with_name(mut self, name: String) -> Self {
39        self.name = Some(name);
40        self
41    }
42}