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