# C++ sa Maguyva: mga class at call graph para sa malalaking codebase

Canonical source: https://maguyva.ai/fil/languages/cpp

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

Sinusuportahan ng Maguyva ang C++ gamit ang AST, mga symbol at graph, para ma-trace ng mga AI agent ang mga class, namespace, virtual override at tumatawag sa malalaking C++ codebase.

## Snapshot ng support

- Antas: Support para sa AST at mga simbolo
- Programming
- Mga extension: .c, .c++, .cc, .cpp, .cxx, .h, +4 pa
- Tunay na AST parsing para sa syntax-aware search at structural context.
- Pinapagana ng mga named symbol ang semantic lookup at cross-reference. Available ang graph navigation kapag naka-enable ang pagkuha ng mga ugnayan.
- Nag-aambag ang wikang ito ng mga simbolo at ugnayan sa graph-aware search; nag-iiba ang mga sinusuportahang uri ng edge ayon sa mga native construct nito.
- Available ang AST parsing at symbol extraction.

## Pinakabagay

- Mga game engine, trading system, browser at iba pang malalaking C++ codebase, kung saan ang pagbabago sa isang header ay nagre-rebuild ng kalahati ng tree.
- Mga class hierarchy na may virtual method, kung saan ang method na tumatakbo ay naka-define sa ibang lugar kaysa kung saan ito tinatawag.
- Agent-assisted na refactoring na kailangang malaman ang mga tumatawag at override bago magbago ang signature.

## Mga workflow ng agent

- Hanapin ang bawat override ng isang virtual method bago magbago ang base class.
- Ilista ang mga tumatawag sa isang namespaced na function o class method, tulad ng `net::Socket::send`, sa buong codebase.
- I-trace kung saan ginagawa ang isang class gamit ang `new` at kung aling mga member ang hinahawakan nito pagkatapos.

## Bakit kailangan ng C++ ng structure, hindi text search

Sa C++, hindi natatangi ang mga pangalan. Puwedeng free function ang `send`, member ng tatlong class at override sa ikaapat. Hinahati ng mga namespace, template at out-of-class definition, tulad ng `Socket::send` sa isang `.cpp` file, ang isang type sa maraming file. Ibinabalik ng text search ang bawat match, pero hindi nito sinasabi sa agent kung alin ang naaabot ng isang call.

Ini-index ng Maguyva ang mga class, member at call kasama ang mga may-ari nila, para sundan ng agent ang totoong structure bago mag-edit.

## Ano ang kinukuha ng Maguyva mula sa C++

Sakop ng Maguyva ang mga karaniwang C++ source at header extension, kasama ang `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hh` at `.hxx`. Kinukuha ang mga class, struct at function, at ina-attribute sa owning class at namespace nito ang isang out-of-class definition tulad ng `void Socket::send()`. Itinatala ang mga virtual member, at bahagi ng mga signature ang mga template parameter.

Sinusundan ng receiver typing ang mga parameter, local declaration, field, range-based `for` loop at `auto`, at sumisilip ito sa loob ng `unique_ptr`, `shared_ptr` at `optional`, kaya nare-resolve sa tamang class ang call tulad ng `conn->send()`. Pinapakain ng mga base-class clause ang inheritance, at itinuturing na instantiation ang mga `new` expression.

Ganoon din ang export at annotation macro masking na gaya ng sa C. Mga 273 standard-library name (`std::cout`, `std::endl`, `printf` at mga katulad nito) ang nifi-filter mula sa mga relationship. Itinatala ng graph ang mga call, include, inheritance, override, instantiation, type reference, read at write, at mga `throw` edge.

## Mga halimbawang agent prompt

- "Aling mga class ang nag-o-override ng `Renderer::draw`, at sino ang tumatawag dito?" (`dependency_search`)
- "Ipakita sa akin ang `OrderBook::match` at ang bawat tumatawag dito." (`find_symbol`)
- "Ipaliwanag kung paano umaabot ang isang market-data message sa strategy engine." (`get_task_context`)

## Mga kilalang limitasyon

- Lumalabas ang `.h` sa mga extension list ng C, C++ at Objective-C, kaya sa mga tree na pinaghalong C at C++, hinahati sa mga profile na ito ang mga header.
- Hindi pina-parse ang body ng mga object-like macro, at hindi graph edge ang mga call sa mga na-filter na standard-library name. Gamitin ang `text_pattern_search` para sa mga macro at paggamit ng `std::`.

## Mga susunod na hakbang

Mag-connect ng repository gamit ang [quickstart](/fil/docs/quickstart), tapos tingnan ang support matrix sa [compatibility page](/fil/docs/compatibility). Kung purong C ang bahagi ng tree, basahin din ang [gabay sa C](/fil/languages/c).

## Mga detalye ng engine

- Ina-attribute sa owning class at namespace ang mga out-of-class definition tulad ng `void Socket::send()`, at itinatala ang mga virtual member.
- Sinusundan ng receiver typing ang mga parameter, local, field, range-based `for` at `auto`, at sumisilip ito sa loob ng `unique_ptr`, `shared_ptr` at `optional`.
- Pinapakain ng mga base-class clause ang inheritance, itinuturing na instantiation ang mga `new` expression, at mga 273 standard-library name ang nifi-filter mula sa mga relationship.

## Mga kapaki-pakinabang na MCP entry point

- `find_symbol`: Gamitin kasama ang fully qualified na pangalan tulad ng `OrderBook::match` kapag kailangan mo ang definition at mga tumatawag.
- `dependency_search`: Bago magbago ang signature, gamitin sa isang base class o virtual method para mahanap ang mga override at tumatawag.
- `get_task_context`: Gamitin para sa mga prompt tulad ng “ipaliwanag kung paano umaabot ang isang market-data message sa strategy engine”.
