---
id: "0042"
title: "C++ layout_storage: extraer y publicar como API reutilizable"
status: completado
type: feature
domain:
  - cpp-stack
scope: multi-app
priority: media
depends: []
blocks: []
related: []
created: 2026-05-17
updated: 2026-05-17
tags:
  - cpp
  - ui
  - refactor
  - layouts
  - sqlite
---

# 0042 — C++ layout_storage: extraer y publicar como API reutilizable

## Objetivo

Extraer la persistencia de layouts ImGui (privada en `shaders_lab/main.cpp`)
a una funcion publica del registry: `layout_storage_cpp_core`. Cualquier app
puede pasarla a `app_menubar` via `LayoutCallbacks` con un solo setup.

## Resultado

- Nueva funcion publica `cpp/functions/core/layout_storage.{h,cpp,md}` con
  handle opaco `LayoutStorage*` y helper `layout_storage_make_callbacks` que
  rellena un `LayoutCallbacks` listo para `app_menubar`.
- Tabla SQLite `imgui_layouts(name, ini, updated_at)` creada con
  `CREATE TABLE IF NOT EXISTS` para no chocar con tablas pre-existentes.
- `shaders_lab` migrado a la nueva API. La capa low-level
  `layout_storage_sqlite` se deja intacta para casos que comparten conexion.
- `fn_framework` ahora enlaza `SQLite::SQLite3` para que cualquier app que
  use el framework tenga acceso a `layout_storage` sin trabajo extra.
