Быстрый старт¶
Зависимости¶
Перед сборкой установите termin-base:
cd ../termin-base
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/opt/termin
cmake --build build --parallel
cmake --install build
Сборка¶
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DTI_BUILD_TESTS=ON \
-DTERMIN_BUILD_PYTHON=ON \
-DCMAKE_PREFIX_PATH=/opt/termin
cmake --build build --parallel
ctest --test-dir build --output-on-failure
Без Python bridge:
cmake -S . -B build \
-DCMAKE_BUILD_TYPE=Release \
-DTI_BUILD_TESTS=ON \
-DTERMIN_BUILD_PYTHON=OFF \
-DCMAKE_PREFIX_PATH=/opt/termin
Опции CMake¶
| Опция | По умолчанию | Описание |
|---|---|---|
DTI_BUILD_TESTS |
OFF |
Собирать тесты |
TERMIN_BUILD_PYTHON |
OFF |
Собирать Python bridge (требует nanobind) |
Что проверяют тесты¶
- C dispatcher — базовые контракты: регистрация типов, dispatch, fail-soft поведение.
- C++ InspectRegistry — add/get/set полей, наследование через
set_type_parent. - Python integration — регистрация Python-классов, serialize/deserialize с наследованием.
Минимальный пример (C++)¶
#include <tc_inspect_cpp.hpp>
struct Player {
int hp = 100;
std::string name = "hero";
};
// Регистрация полей
auto& reg = tc::InspectRegistry::instance();
reg.add<Player, int>("Player", &Player::hp, "hp", "HP", "int");
reg.add<Player, std::string>("Player", &Player::name, "name", "Name", "string");
// Использование
Player p;
tc_value* val = reg.get(&p, "Player", "hp"); // -> 100
reg.set(&p, "Player", "name", str_value, ctx); // p.name = "hero" -> новое значение
Что дальше¶
- Архитектура — как устроены слои dispatch.
- C++ API — полный API InspectRegistry и макросы регистрации.