MCPcopy Create free account
hub / github.com/atomicdotdev/atomic / extract_enum

Method extract_enum

atomic-semantic/src/parsers/cpp.rs:448–477  ·  view source on GitHub ↗

Extract an enum specifier.

(
        &self,
        node: &Node,
        source: &str,
        file_path: &str,
        scope: Option<&str>,
    )

Source from the content-addressed store, hash-verified

446
447 /// Extract an enum specifier.
448 fn extract_enum(
449 &self,
450 node: &Node,
451 source: &str,
452 file_path: &str,
453 scope: Option<&str>,
454 ) -> Option<Entity> {
455 let name_node = node.child_by_field_name("name")?;
456 let name = self.node_text(&name_node, source);
457
458 if name.is_empty() {
459 return None;
460 }
461
462 let line = node.start_position().row as u32 + 1;
463 let end_line = node.end_position().row as u32 + 1;
464
465 let full_name = match scope {
466 Some(s) => format!("{}::{}", s, name),
467 None => name.clone(),
468 };
469
470 let signature = format!("enum {}", name);
471
472 let mut entity = Entity::new(full_name, EntityKind::Enum, file_path, line, end_line);
473 entity = entity.with_signature(signature);
474 entity.exported = true;
475
476 Some(entity)
477 }
478
479 /// Extract a C++ type alias (`using X = Y;`).
480 fn extract_type_alias(

Callers 1

walk_treeMethod · 0.45

Calls 4

with_signatureMethod · 0.80
node_textMethod · 0.45
is_emptyMethod · 0.45
cloneMethod · 0.45

Tested by

no test coverage detected