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

Function extract_php_bases

internal/cbm/extract_defs.c:2176–2205  ·  view source on GitHub ↗

PHP: bases live in `base_clause` (extends) and `class_interface_clause` * (implements) child nodes; named children are `name`/`qualified_name`. */

Source from the content-addressed store, hash-verified

2174/* PHP: bases live in `base_clause` (extends) and `class_interface_clause`
2175 * (implements) child nodes; named children are `name`/`qualified_name`. */
2176static const char **extract_php_bases(CBMArena *a, TSNode node, const char *source) {
2177 const char *bases[MAX_BASES];
2178 int count = 0;
2179 uint32_t nc = ts_node_child_count(node);
2180 for (uint32_t i = 0; i < nc; i++) {
2181 TSNode child = ts_node_child(node, i);
2182 const char *ck = ts_node_type(child);
2183 if (strcmp(ck, "base_clause") != 0 && strcmp(ck, "class_interface_clause") != 0) {
2184 continue;
2185 }
2186 uint32_t cc = ts_node_named_child_count(child);
2187 for (uint32_t j = 0; j < cc && count < MAX_BASES_MINUS_1; j++) {
2188 push_base_text(a, ts_node_named_child(child, j), source, bases, MAX_BASES_MINUS_1,
2189 &count);
2190 }
2191 }
2192 if (count == 0) {
2193 return NULL;
2194 }
2195 const char **result =
2196 (const char **)cbm_arena_alloc(a, (size_t)(count + NULL_TERM) * sizeof(const char *));
2197 if (!result) {
2198 return NULL;
2199 }
2200 for (int i = 0; i < count; i++) {
2201 result[i] = bases[i];
2202 }
2203 result[count] = NULL;
2204 return result;
2205}
2206
2207/* Kotlin: supertypes live in `delegation_specifier` children. Each holds
2208 * either a bare `user_type` (interface) or a `constructor_invocation` whose

Callers 1

extract_base_classesFunction · 0.85

Calls 2

push_base_textFunction · 0.85
cbm_arena_allocFunction · 0.70

Tested by

no test coverage detected