Skip to main content

leta_types/
location.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct LocationInfo {
5    pub path: String,
6    pub line: u32,
7    #[serde(default)]
8    pub column: u32,
9    #[serde(skip_serializing_if = "Option::is_none")]
10    pub context_lines: Option<Vec<String>>,
11    #[serde(skip_serializing_if = "Option::is_none")]
12    pub context_start: Option<u32>,
13    #[serde(skip_serializing_if = "Option::is_none")]
14    pub name: Option<String>,
15    #[serde(skip_serializing_if = "Option::is_none")]
16    pub kind: Option<String>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub detail: Option<String>,
19}
20
21impl LocationInfo {
22    pub fn new(path: String, line: u32) -> Self {
23        Self {
24            path,
25            line,
26            column: 0,
27            context_lines: None,
28            context_start: None,
29            name: None,
30            kind: None,
31            detail: None,
32        }
33    }
34}
35
36#[derive(Debug, Clone, Serialize, Deserialize)]
37pub struct FileInfo {
38    pub path: String,
39    pub lines: u32,
40    pub bytes: u64,
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct CacheInfo {
45    pub current_bytes: u64,
46    pub max_bytes: u64,
47    pub entries: u64,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct WorkspaceInfo {
52    pub root: String,
53    pub language: String,
54    #[serde(skip_serializing_if = "Option::is_none")]
55    pub server_pid: Option<u32>,
56    pub open_documents: Vec<String>,
57}
58
59#[derive(Debug, Clone, Serialize, Deserialize)]
60pub struct CallNode {
61    pub name: String,
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub kind: Option<String>,
64    #[serde(skip_serializing_if = "Option::is_none")]
65    pub detail: Option<String>,
66    #[serde(skip_serializing_if = "Option::is_none")]
67    pub path: Option<String>,
68    #[serde(skip_serializing_if = "Option::is_none")]
69    pub line: Option<u32>,
70    #[serde(skip_serializing_if = "Option::is_none")]
71    pub column: Option<u32>,
72    #[serde(skip_serializing_if = "Option::is_none")]
73    pub calls: Option<Vec<CallNode>>,
74    #[serde(skip_serializing_if = "Option::is_none")]
75    pub called_by: Option<Vec<CallNode>>,
76}
77
78impl CallNode {
79    pub fn new(name: String) -> Self {
80        Self {
81            name,
82            kind: None,
83            detail: None,
84            path: None,
85            line: None,
86            column: None,
87            calls: None,
88            called_by: None,
89        }
90    }
91}