firedbg_protocol/
breakpoint.rs1use crate::source::LineColumn;
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
6pub struct Breakpoint {
8    pub id: u32,
9    pub file_id: u32,
10    pub loc: LineColumn,
11    pub loc_end: Option<LineColumn>,
12    pub breakpoint_type: BreakpointType,
13    pub capture: VariableCapture,
14}
15
16#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
17pub enum BreakpointType {
19    #[default]
20    Breakpoint,
21    FunctionCall {
22        fn_name: String,
25    },
26    FunctionReturn,
27}
28
29#[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize)]
30pub enum VariableCapture {
32    Arguments,
34    Locals,
36    Only(Vec<String>),
38    #[default]
39    None,
41}
42
43impl BreakpointType {
44    pub fn as_str(&self) -> &'static str {
45        match self {
46            Self::Breakpoint => "Breakpoint",
47            Self::FunctionCall { .. } => "FunctionCall",
48            Self::FunctionReturn => "FunctionReturn",
49        }
50    }
51}