MCPcopy Create free account
hub / github.com/DeusData/codebase-memory-mcp / c_process_namespace

Function c_process_namespace

internal/cbm/lsp/c_lsp.c:5100–5131  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5098}
5099
5100static void c_process_namespace(CLSPContext *ctx, TSNode ns_node) {
5101 const char *saved_ns = ctx->current_namespace;
5102
5103 TSNode name_node = ts_node_child_by_field_name(ns_node, "name", 4);
5104 if (!ts_node_is_null(name_node)) {
5105 char *ns_name = c_node_text(ctx, name_node);
5106 if (ns_name) {
5107 if (saved_ns) {
5108 ctx->current_namespace = cbm_arena_sprintf(ctx->arena, "%s.%s", saved_ns, ns_name);
5109 } else if (ctx->module_qn) {
5110 ctx->current_namespace =
5111 cbm_arena_sprintf(ctx->arena, "%s.%s", ctx->module_qn, ns_name);
5112 } else {
5113 ctx->current_namespace = ns_name;
5114 }
5115 }
5116 }
5117
5118 TSNode body = ts_node_child_by_field_name(ns_node, "body", 4);
5119 if (!ts_node_is_null(body)) {
5120 // Cursor walk (O(n)); namespace bodies can be very wide.
5121 TSTreeCursor cursor = ts_tree_cursor_new(body);
5122 if (ts_tree_cursor_goto_first_child(&cursor)) {
5123 do {
5124 c_process_body_child(ctx, ts_tree_cursor_current_node(&cursor));
5125 } while (ts_tree_cursor_goto_next_sibling(&cursor));
5126 }
5127 ts_tree_cursor_delete(&cursor);
5128 }
5129
5130 ctx->current_namespace = saved_ns;
5131}
5132
5133// ============================================================================
5134// Process class/struct: process method bodies

Callers 1

c_process_body_childFunction · 0.85

Calls 3

c_node_textFunction · 0.85
c_process_body_childFunction · 0.85
cbm_arena_sprintfFunction · 0.50

Tested by

no test coverage detected