Inspect Dispatcher¶
tc_inspect — dispatcher, который маршрутизирует вызовы рефлексии через language vtable.
Вызывающий код работает с единым C API, а конкретная реализация (C++, Python) подключается как backend.
Базовые операции¶
Проверка типа¶
bool exists = tc_inspect_has_type("Player");
Чтение поля¶
tc_value* val = tc_inspect_get(obj, "Player", "hp");
Запись поля¶
tc_inspect_set(obj, "Player", "hp", new_value, context);
Сериализация / десериализация¶
tc_value* data = tc_inspect_serialize(obj, "Player");
tc_inspect_deserialize(obj, "Player", data, context);
Поля и метаданные¶
Информация о полях доступна без доступа к самому объекту:
int count = tc_inspect_field_count("Player");
tc_inspect_field_info info;
tc_inspect_get_field_info("Player", 0, &info); // по индексу
tc_inspect_find_field_info("Player", "hp", &info); // по path
tc_inspect_field_info содержит: name, display_name, kind, path и метаданные (range, choices и др.).
Поведение на ошибках¶
Модель fail-soft:
- Невалидный
type_nameилиpath— возвращаетnil/false, выполняет no-op. - Ошибки логируются через
tc_log(уровень WARN/ERROR). - Dispatcher не бросает исключений и не аварийно завершается.