Files
fn_registry/.claude/rules/uses_functions.md
T
egutierrez bf94893032 feat(cpp/viz): split orphan TUs as separate fn entries (ADR 0003)
Cuando una funcion del registry parte su .cpp en varios TUs por testabilidad
o separacion ImGui-vs-puro, cada TU adicional se registra como entrada propia
con su .md en lugar de extender file_path para listar varios archivos.

Aplicado a:
- graph_labels_select_cpp_viz: helpers puros (compute_degrees + labels_select).
- graph_viewport_selection_cpp_viz: clear/add/toggle/is_selected puros.
- graph_types_cpp_viz: TU de update_bounds + find_node_by_user_data.

graph_labels y graph_viewport actualizados para declarar las nuevas entradas
en uses_functions. Razon detallada en docs/adr/0003 + regla actualizada en
.claude/rules/uses_functions.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:51:10 +02:00

2.0 KiB

uses_functions

Cuando un .cpp llama a otra funcion del registry, el .md del CONSUMIDOR debe anadir la dependencia a uses_functions. El indexer NO lo deduce automaticamente para C++ (parser no trivial).

Como auditar (funciones huerfanas): sqlite3 registry.db "SELECT id FROM functions WHERE lang='cpp' AND uses_functions='[]';"

Como auditar (drift entre CMakeLists.txt y app.md):

  • Cruzar los ${CMAKE_SOURCE_DIR}/functions/<dom>/<name>.cpp listados en el CMakeLists.txt con el uses_functions del app.md. Cada .cpp linkado debe aparecer como <name>_cpp_<dom> en el .md. Excepciones: ver mas abajo.

Convencion:

  • Framework code (cpp/framework/app_base.cpp) — no esta indexado.
  • Funciones bundled en fn_framework — son funciones del registry cuyo .cpp se compila dentro del static lib fn_framework (lista en cpp/CMakeLists.txt, target add_library(fn_framework STATIC ...)): tokens, icon_font, app_settings, app_about, fps_overlay, panel_menu, app_menubar, layouts_menu, logger, log_window, gl_loader, layout_storage, selectable_text. Las apps las usan transitivamente (incluyen core/logger.h, llaman fn_log::log_info), pero NO listan estos .cpp en su CMakeLists.txt (multiple-definition) ni los declaran en uses_functions del app.md. Excepcion: si una app toca una API que no este en fn_framework (raro), declara la dep.
  • TU adicional de un parent function (ej. graph_labels_select.cpp que va con graph_labels.cpp) — desde 2026-05-04 se registra como entrada propia con su .md (ver ADR 0003). El parent declara la nueva entrada en su uses_functions. Las apps que enlazan ambos .cpp listan ambas IDs en uses_functions del app.md.
  • Apps (apps/, cpp/apps/, projects/*/apps/) son leaves del grafo: declaran uses_functions en app.md pero ninguna funcion del registry las cita.
  • DEMO_ONLY en primitives_gallery se etiqueta notes: scaffolding/demo.