/* Template loader — JSON → vector (Phase 11b). * * Schema см. docker/templates.json. При неудаче возвращает empty vector * (caller использует built-in fallback). */ #ifndef CUFRAMES_COMPOSER_CPP_TEMPLATE_LOADER_HPP #define CUFRAMES_COMPOSER_CPP_TEMPLATE_LOADER_HPP #include "template.hpp" #include #include namespace cfc { /* Загрузить из файла. Возвращает количество загруженных templates, либо * отрицательное число при ошибке (-1=parse, -2=schema, -3=open). */ int load_templates_from_file(const std::string& path, std::vector& out); /* Встроенный набор fallback templates (Phase 11b base — single, quad). */ std::vector builtin_templates(); /* Global template registry — единый источник для Composer и cfc_layout_* * ABI shim. Заполняется builtin'ами по умолчанию; перезаписывается при * load_templates_from_file (если был успех). Thread-safe — composer и * control-thread читают, hot-reload пишет под lock. */ const std::vector& current_templates(); void set_current_templates(std::vector new_templates); int load_into_current(const std::string& path); } // namespace cfc #endif /* CUFRAMES_COMPOSER_CPP_TEMPLATE_LOADER_HPP */