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

Function extract_ts_bases

internal/cbm/extract_defs.c:2142–2172  ·  view source on GitHub ↗

TypeScript: walk the class_heritage container (which holds extends_clause + * implements_clause), or handle a bare interface extends_type_clause. */

Source from the content-addressed store, hash-verified

2140/* TypeScript: walk the class_heritage container (which holds extends_clause +
2141 * implements_clause), or handle a bare interface extends_type_clause. */
2142static const char **extract_ts_bases(CBMArena *a, TSNode node, const char *source) {
2143 const char *bases[MAX_BASES];
2144 int count = 0;
2145 uint32_t nc = ts_node_child_count(node);
2146 for (uint32_t i = 0; i < nc; i++) {
2147 TSNode child = ts_node_child(node, i);
2148 const char *ck = ts_node_type(child);
2149 if (strcmp(ck, "class_heritage") == 0) {
2150 uint32_t hc = ts_node_child_count(child);
2151 for (uint32_t j = 0; j < hc; j++) {
2152 collect_ts_bases(a, ts_node_child(child, j), source, bases, MAX_BASES_MINUS_1,
2153 &count);
2154 }
2155 } else if (strcmp(ck, "extends_type_clause") == 0) {
2156 collect_ts_bases(a, child, source, bases, MAX_BASES_MINUS_1, &count);
2157 }
2158 }
2159 if (count == 0) {
2160 return NULL;
2161 }
2162 const char **result =
2163 (const char **)cbm_arena_alloc(a, (size_t)(count + NULL_TERM) * sizeof(const char *));
2164 if (!result) {
2165 return NULL;
2166 }
2167 for (int i = 0; i < count; i++) {
2168 result[i] = bases[i];
2169 }
2170 result[count] = NULL;
2171 return result;
2172}
2173
2174/* PHP: bases live in `base_clause` (extends) and `class_interface_clause`
2175 * (implements) child nodes; named children are `name`/`qualified_name`. */

Callers 1

extract_base_classesFunction · 0.85

Calls 2

collect_ts_basesFunction · 0.85
cbm_arena_allocFunction · 0.70

Tested by

no test coverage detected