Skip to main content

scope_engine/language/
c.rs

1use super::{LanguageAdapter, LanguageQueries};
2use tree_sitter::Language;
3
4pub struct CAdapter;
5
6impl CAdapter {
7    #[must_use]
8    pub const fn new() -> Self {
9        Self
10    }
11}
12
13impl Default for CAdapter {
14    fn default() -> Self {
15        Self::new()
16    }
17}
18
19impl LanguageAdapter for CAdapter {
20    fn language_name(&self) -> &'static str {
21        "c"
22    }
23    fn extensions(&self) -> &[&'static str] {
24        &["c", "h"]
25    }
26    fn language(&self) -> Language {
27        tree_sitter_c::LANGUAGE.into()
28    }
29    fn queries(&self) -> LanguageQueries {
30        LanguageQueries {
31            definitions: r"
32                (function_definition declarator: (function_declarator declarator: (identifier) @name)) @def
33                (declaration declarator: (init_declarator declarator: (identifier) @name)) @def
34            ",
35            references: r"
36                (call_expression function: (identifier) @ref) @call
37                (identifier) @ref
38            ",
39        }
40    }
41}